doc • release • 3.10.0

Gambas 3.10.0

What's new?

This new version has 150 new features, and 225 bug fixes.

The main important features of this new version are the following:

  • The support of web forms in the IDE has been enhanced.

  • The library packaging has been fixed.

  • CStr and CDate are now mutually coherent, by internally converting to UTC dates only. Beware, this bug fix is not backward-compatible!

  • The interpreter now uses a monotonic clock if possible.

  • The new instruction MOVE ... DOWNTO ... renames a file, erasing the destination atomically.

  • The MediaPlayer control can chain media files now.

  • The FtpClient now supports the ftps protocol.

  • gb.term is a new component to manage terminals, with an API very close to the one provided by the operating system.

  • gb.web.feed is a new component to manage RSS feeds.

  • Ton of fixes in the gb.web.form component.

Changelog

CONFIGURATION

  • Update copyright year in all source files.

  • Remove all depcomp files. Apparently they are not used anymore by autoconf.

  • Correctly detect update of svn database for generating trunk version file.

  • Compile components written in Gambas with the translation flag enabled.

  • Add a autoconf check for monotonic clock.

DEVELOPMENT ENVIRONMENT

Database editor

  • The database description is now the tooltip of the database configuration button.

  • The "SQL request" button is now an entry in the table list.

Debugger

  • Initial state of stop and pause buttons should be correct now.

  • Use the gb.signal component to send signals to debugged processes.

  • Correctly pause projects using an external terminal.

Form editor

  • Use sub-menus to display similar fonts in the font popup menu.

  • The form editor contextual menu is now also opened when clicking in the form hierarchy tree.

  • Support for WebFont properties.

  • New toolbar buttons for changing the font family.

  • Handle inverted arrangements correctly.

  • Fix management of Ignore property.

  • CoordBox control now raises its Change event when it is cleared.

Option dialog

  • Move the Configure shortcuts button to the Interface tab.

  • Add an option line to activate the new editor side bar. Disabled by default.

Output terminal

  • Reset the output terminal when the debugged project ends.

  • Explicitly close the console form so that it can save its settings before its parent is destroyed.

Packager

  • When creating the package, display the messages in a box below the output log. Do not use message boxes anymore.

  • Update debian & ubuntu package section lists.

  • The package name of the library is now always prefixed with the vendor name or prefix, so that this name is predictable.

  • Consequently, making a package of a project using another library does not crash anymore if that library was never packaged.

  • The description text box now expands vertically.

  • Debian package description is now correctly generated in all cases.

  • Creation of debian/ubuntu packages of projects having no icon does not crash anymore.

  • Add rust and javascript package groups for Debian and Ubuntu.

Project property dialog

  • The defaut font of the help browser of the component chooser control is smaller now.

  • The component list is sorted so that checked components come first. Consequently, The checkbox that shows the selected components only has been removed.

  • Make the Reset button common to all tabs. It is visible only if the current tab can be reset.

  • Library dialog: Do not crash if a global library and a local library have the same vendor.

  • Allow to enter void arguments in project arguments list.

Software farm

  • When uninstalling a software installed from the farm, automatically remove the vendor directory if it is void.

  • When uninstalling a library, automatically remove the vendor directory if it is void.

  • Published software screenshots are now stretched to 640 pixels instead of 320 pixels.

  • Support for library publishing and library installation.

  • Some look changes.

  • Fix tag editor.

  • Fix software shortcuts removing.

Source code editor

  • Remove the pretty code indentation on function Begin/End. I need to find a way to close indentations on functions without ending.

  • Optimize the automatic completion of identifiers.

  • Optimize the automatic completion of event handlers.

  • Fix crash when deleting code (bug #1019).

  • Fix event automatic completion on controls having an underscore in their name.

  • Workaround an interpreter crash when analyzing an expression including the LAST keyword.

  • Javascript compression now try to detect regular expressions so that they are never split if there is a space inside.

  • Fix error messages including HTML.

  • Don't use side preview in editors where this is not useful.

  • Code formatter: The new line after local variable declarations takes multi-line declarations into account.

  • Code formatter: Multi-line declarations are correctly indented now.

  • Fix and enhance "find definition" algorithm (F2 key).

  • Better detection of regular expressions when compressing a javascript file.

Translation dialog

  • Locations of translated strings should be more readable now.

Translations

  • Update the Brazilian Portuguese translations.

  • Update the Gambas fonts.

  • Update french translation.

  • Simplified chinese translation updated by Yizou He.

Webform support

  • WebFont chooser dialog box.

  • Support for format toolbar buttons.

Welcome dialog

  • Software can be uninstalled by clicking on the little icon on the top right of the software box.

  • Software button is disabled if no software is installed.

  • Software and example lists are automatically refreshed after the farm software client has been used.

Miscellaneous

  • Update support file.

  • Support for the new gb.term component.

  • Support for the new editor property name.

  • Optionally load the gb.inotify component.

  • Initial support for IDE extensions.

  • Fix duplicated shortcuts in "fake" mode (i.e. when using the IDE to edit an external file).

  • Fix a typo mistake in french tips.

  • Display the GUI chooser button when the gb.gui.qt is checked.

  • Display an error message instead of crashing if no terminal is found.

  • Correctly refresh the GUI chooser button when the project environment changes.

  • Better command-line help text.

  • Allow files located in a linked directory to be modified only if they are opened in fake mode, i.e. alone.

  • Add two new backgrounds, make the cross background bigger, and define the gambas background as default.

  • Add gb.term.form to the list of components.

WIKI CGI SCRIPT

  • Add border shadow around screenshots links.

INTERPRETER

  • Use a monotonic clock (if possible) to implement the WAIT instruction.

  • Timer delay is now stored in 31 bits, and so can now be up to 2^31 - 1 milliseconds, i.e. about 24 days, 20 hours and 31 seconds.

  • The translation file of the project is now always correctly loaded. That was a very old bug.

  • The signal handler now loops until the signal pipe is void.

  • The GB.SystemHasForked() API now resets the pseudo-random number generator, and the signal handler management pipe.

  • Tasks do not inherit signal handler pipe anymore, they recreate it instead. Otherwise you have interferences with the parent process of the task, and some signals are lost.

  • Stream.Watch() is a new method that allows to watch/unwatch a stream for reading and/or writing after it has been opened.

  • Standard streams now set the internal stream flag "available_now" if they are not connected to a terminal. Which may not be necessarily accurate, so it is a temporary change.

  • New instruction MOVE ... DOWNTO ... that renames a file and erase the destination atomically.

  • Make CStr() and CDate() mutually coherent, by internally converting to UTC dates only.

  • Include <cmath> instead of <math.h> for components written in C++, so that they compile with gcc 6.

  • Forbid continuing and stay in debugger when an unhandled error is raised. This prevent crashes when an error occurs during variable initialization.

  • Fix some gcc 6 warnings.

  • Fix detection of errors occuring inside interpreter API.

  • Fix a possible bad serialization of arrays.

  • Exec with a null program name does not crash anymore.

  • Don't raise events just after a process has been started and has just been terminated. Postpone them.

  • Don't crash during the unserialisation of an array whose datatype has been incorrectly serialized. Raise an error instead.

  • Do not crash anymore when converting a pointer to an anonymous object. Raise an error instead.

  • Detection of svn commit version now works with older version of subversion.

  • Define "__STDC_FORMAT_MACROS" macro in gb_common.h, so that C++ source files using compile even with old gcc versions.

  • Debugger does not crash anymore when displaying a static collection-like object.

  • Correctly call static event handlers when an event is raised.

  • Close watched process input & outputs as soon as it is killed. Otherwise, running two processes using virtual terminals successively may fail.

  • Check if linking with librt is needed to get monotonic clock.

  • Buffered streams now take the internal stream flag "available_now" into account. No idea why that was disabled.

  • Automatically restart mkfifo() and open() system calls when executing the PIPE instruction.

  • Add an API that returns the file descriptor associated with a specific stream.

COMPILER

  • New instruction MOVE ... DOWNTO ... that renames a file and erase the destination atomically.

  • Fix internal datatype analyze. The compiler should not crash anymore on ARM.

FARM SERVER

  • Download count now takes all versions into account.

GB.ARGS

  • Take UTF-8 into account when formatting help text.

  • Fix help text for options having no short name.

GB.DB

  • Connection.ApplyTemplate() now correctly handles a collation whose name is "default" in the template file.

GB.DB.MYSQL

  • Use MEDIUMTEXT instead of TEXT for unlimited text fields, so that the maximum length is 16MB and not 64K.

  • Deleting an index does not crash anymore.

GB.DB.ODBC

  • Fix a 32-bits sprintf format bug.

GB.DB.SQLITE2

  • SQL strings including backslash characters are now correctly quoted.

  • Make component compile with gcc 6.

  • Fix an incorrect implicit cast for gcc 7.

GB.DB.SQLITE3

  • SQL strings including backslash characters are now correctly quoted.

GB.DBUS

  • Instrospection now correctly declares properties or methods that return a class inheriting DBusVariant.

  • Fix string leak in signature marshalling routine.

  • Don't insert process id into object interface names.

  • DBusObject.Raise() now uses the default object interface if no interface is specified in the event name.

  • DBus structures are now unmarshalled to accurate Gambas arrays.

  • Calling a method or a property that returns a string does not corrupt memory anymore.

  • Add debugging message to the GetAll() DBus method implementation.

GB.DBUS.TRAYICON

  • Apparently LXDE has support for indicators, whereas KDE system tray protocol is not supported.

GB.DEBUG

  • Fix some gcc 6 warnings.

GB.DESKTOP

  • Use KDE5 wallet when the desktop is KDE5. Use a possible old KDE4 wallet only if no password is found in the KDE5 wallet.

  • Support for cygwin desktops.

  • Setting Desktop.Passwords[] now works correctly if secret-tool is used.

  • Escape commented lines in .desktop files.

  • Don't use gb.desktop.gnome anymore, as libgnome-keyring is deprecated. Use the secret-tool program only.

  • DesktopWindow: Shaded is a new property that tells if a window is shaded (i.e. only its titlebar is visible).

  • Desktop.RunAsRoot() should work correctly on SuSE now. It uses kdsu if kdsudo is not found.

  • Desktop.RunAsRoot() now uses gksu if gksudo is not found.

  • A void atom name is now associated with the atom 0 (None).

GB.DESKTOP.GNOME

  • This component is now deprecated.

GB.EVAL.HIGHLIGHT

  • Fix javascript regular expressions highlighting.

  • Fix SQL highlighting of strings that span multiple lines.

  • Add some missing CSS properties and values.

  • Add some CSS properties and symbols.

GB.FORM

  • URLLabel: Add Alignment and Border properties.

  • TabPanel: Tab buttons now eat the wheel events, so that they do not propagate.

  • MessageView: Add a Border property.

  • MenuButton: Never popup the menu when the button is disabled.

  • MenuButton: Automatic menu popup routine should not crash anymore.

  • ImageView: The Border property returns the accurate value now.

  • DocumentView: WorkAround to lock scrolling on mouseWheel

  • DirView: File watch events does not disturb renaming anymore.

  • DirChooser,FileChooser: Add a "delete directory" menu that can delete void directories only.

  • DateChooser: Use light colors when disabled.

  • ColorPalette: Don't react to mouse events if disabled.

  • ColorChooser: Don't react to mouse events if disabled.

  • Add the stock icon for scanner device

  • Add a plugin stock icon.

GB.FORM.EDITOR

  • TextEditor: Fix the Highlight property when set to "None".

  • TextEditor: Fix the Highlight property declaration.

  • TextEditor: Faster layout and scroll, especially when there are a lot of lines and wrapping mode is enabled.

  • TextEditor: ShowPreview is a new property that replaces the vertical scrollbar by a clickable side preview having a magnifier.

  • TextEditor: Editor works correctly again when a procedure is collapsed.

GB.FORM.STOCK

  • Update icons.

  • Put the good icon for lock in size 22.

  • Add plugin stock icon.

GB.FORM.TERMINAL

  • TerminalView: Vertical and horizontal bar graphical characters now has a minimum size of 1 pixel, otherwise the thinner ones may not be visible.

  • TerminalView: Raise a Resize event with the new terminal dimensions when the terminal is resized.

  • TerminalView: Ignore [1034h and [1034l sequences instead of displaying a warning message.

  • TerminalView: Reset() is a new method that resets the terminal state without clearing it.

  • TerminalView: Correctly draw blinking text.

  • TerminalView: ConnectTo() is a new method which allows to connect the terminal input/output to any stream.

GB.GTK

  • Workaround to prevent system tooltip colors to be unreadable.

  • Window: Show() works again on hidden windows.

  • Window: Menus[] accessor does not crash anymore.

  • Window: Hide and Show events are now correctly raised when the window is minimized or restored.

  • TextBox: Make SetFocus() not select the text.

  • TextArea: It should not crash anymore in some cases when destroyed.

  • Search for popup menu defined by the PopupMenu property recursively.

  • Raise a "GUI is not initialized" error when trying to create a window too early, as QT components do.

  • Make r7877 compile on older versions of GTK+2.

  • Make component compile with gcc 6.

  • Font.Styles now returns a pre-defined array and does not crash anymore.

  • Fix some gcc 6 warnings.

  • Fix a ; mistake in a focus management test.

  • Don't try to set the background and foreground colors of pop-up menus. It does not work in all cases.

  • Disabled controls do not raise mouse events anymore, unless in design mode.

  • Window: Calling ShowModal() or ShowPopup() on an already opened window now raises an error.

GB.GTK3

  • Workaround to prevent system tooltip colors to be unreadable.

  • Window: Show() works again on hidden windows.

  • Window: Menus[] accessor does not crash anymore.

  • Window: Hide and Show events are now correctly raised when the window is minimized or restored.

  • TextBox: Make SetFocus() not select the text.

  • Search for popup menu defined by the PopupMenu property recursively.

  • Raise a "GUI is not initialized" error when trying to create a window too early, as QT components do.

  • Make component compile with gcc 6.

  • Font.Styles now returns a pre-defined array and does not crash anymore.

  • Fix some gcc 6 warnings.

  • Fix a ; mistake in a focus management test.

  • Don't try to set the background and foreground colors of pop-up menus. It does not work in all cases.

  • Disabled controls do not raise mouse events anymore, unless in design mode.

  • Window: Calling ShowModal() or ShowPopup() on an already opened window now raises an error.

GB.GUI.BASE

  • IconView: Correctly refresh layout when icon pictures are made smaller.

  • IconView: Display the selection in gray when it does not have the focus.

  • GridView: Stop the scrolling timer when focus is lost, as if you open a modal dialog during a MouseDown event, you don't get the MouseUp event! Maybe I should systematically raise a fake MouseUp event when focus is lost, and QT didn't send it.

  • GridView: AddColumn() is a new method to add a column.

  • GridView and its children classes now display their selection in gray when they do not have the focus.

  • ColumnView: AddColumn() is a new method to add a column.

GB.IMAGE

  • Fix some gcc 6 warnings.

GB.IMAGE.IO

  • Really fix warning on 32 bits systems.

  • Fix a 32-bits sprintf format bug.

GB.INOTIFY

  • Don't assume inotify_add_watch() succeeds in all cases. The watched path may have been deleted after the watch has been created.

  • Creating a watch with a null path now raises an error instead of crashing.

GB.JIT

  • Allow to explicitly define the libraries that must be used to link the component.

  • Fix to locate JIT.H and resolve issue where multiple versions of llvm present. JIT.H is only available prior to llvm 5.6 and GB.JIT can only be compiled with those versions.

GB.MAP

  • Zoom down does not change the center of the map anymore.

  • The _ShapeItem class has a new LineWidth property that allows to change the width of the drawing element.

  • Polyline now works properly.

  • PolyLine shape now don't close the polygon by default. You must add an end point to the same position than the first one to achieve that.

GB.MARKDOWN

  • Markdown.Verbatim is a new integer property that allows to enter or leave "verbatim" mode. It's a mode where markdown syntax is not interpreted anymore.

GB.MEDIA

  • MediaPlayer: The AboutToFinish event is now raised by MediaPipeline. This is not the GStreamer about-to-finish signal anymore.

  • MediaPlayer: Setting the URL property now automatically stops the player.

  • MediaPlayer: NextURL is a new property that you must set to define the next stream that will be played without gap.

  • MediaPipeline: The Position and Duration properties are now computed during the message callback routine.

  • MediaPipeline: Raise the Start event when a new stream is started.

  • MediaPipeline: Raise the AboutToFinish event two seconds before the stream end.

  • MediaPipeline: Prevent message callback routine possible recursion.

  • Link explicitly with the thread library.

GB.MEDIA.FORM

  • MediaView: Expose the inner MediaPlayer NextURL property.

  • MediaView: Expose the inner MediaPlayer AboutToFinish event.

GB.NET.CURL

  • HttpClient: Remove the initial space of the reason string.

  • HttpClient: Headers are now correctly parsed when the content length is zero.

  • HttpClient: BufferSize is a new property that allows to define the receive buffer size.

  • FtpClient: BufferSize is a new property that allows to define the receive buffer size.

  • FtpClient: Allow ftps protocol.

GB.NET.POP3

  • Pop3Client.Refresh() has been implemented. This method was needed to refresh the internal message cache, so that you don't have to open a new connection each time you need to read the message box.

GB.NET.SMTP

  • Print openssl error output if the Debug property is set.

  • Format mime parts Content-Type correctly in all cases.

  • Assume that TLS session is connected after running for one second.

  • Always check for multi-line answers.

GB.OPENSSL

  • Enable gb.openssl for OpenSSL < 1.0.0 if EVP_MD_do_all() is present.

  • Try to support OpenSSL 0.9.8 together with 1.1.0 (bug #984).

  • Require OpenSSL >= 1.0.0 because we need EVP_MD_do_all().

  • Digest: Try again to support OpenSSL 0.9.8o.

GB.PCRE

  • RegExp.Greedy is a new constant that allows to remove the ungreedy default option of RegExp.Replace().

GB.QT4

  • Workaround to prevent system tooltip colors to be unreadable.

  • Window: Show() works again on hidden windows.

  • Search for popup menu defined by the PopupMenu property recursively.

  • Make component compile with gcc 6.

  • Don't compile the QT5 menu fix.

  • Disabled controls do not raise mouse events anymore, unless in design mode.

  • Window: Calling ShowModal() or ShowPopup() on an already opened window now raises an error.

GB.QT5

  • Workaround to prevent system tooltip colors to be unreadable.

  • Window: Show() works again on hidden windows.

  • The component now should compile correctly with C++11.

  • SpinBox: MouseWheel events are correctly stopped now.

  • Search for popup menu defined by the PopupMenu property recursively.

  • Make component compile with gcc 6.

  • Disabled controls do not raise mouse events anymore, unless in design mode.

  • Window: Calling ShowModal() or ShowPopup() on an already opened window now raises an error.

GB.QT5.EXT

  • The component now should compile correctly with C++11.

GB.QT5.OPENGL

  • The component now should compile correctly with C++11.

GB.QT5.WEBKIT

  • The component now should compile correctly with C++11.

GB.REPORT2

  • Remember the Duplex mode when changing the printer device in the preview window.

GB.SDL

  • Cygwin needs the shared library x11 - as per Bastian Germann

GB.SDL2

  • Window.Grabbed is a new property that return or set if the mouse is confined to the window.

  • Image.Load() automatically converts loaded image to the default SDL image format.

GB.SDL2.AUDIO

  • Remove unneeded references to Channel objects, which lead to memory leak.

GB.SETTINGS

  • Settings: Correctly write small float values.

  • Settings: Saving the settings of a window now takes the window desktop into account only for toplevel windows.

  • Settings: Don't crash if the window screen number is incorrect.

  • Settings: Always mark a settings object as modified when putting an array or a collection in any key.

GB.SIGNAL

  • Signal.Send() is a new method to send signals to processes. It is just a direct interface to the kill() system call.

GB.SPELL

  • First release. Begin to put the structure in place.

GB.TERM

  • New component for terminal management with an API very close to the one provided by the operating system.

  • Fix local and control flags of terminal settings.

GB.TERM.FORM

  • New component for making the GUI of terminal applications.

GB.UTIL

  • Date.ToRFC822() is a new method that converts a date value to RFC822 date string.

  • Date.FromRFC822() is a new method that converts a RFC822 date string to a date value.

  • Compute Date.ToUnixTime() with System.TimeZone.

GB.UTIL.WEB

  • JSON.Encode() now correctly handles JSON.Null values.

GB.WEB

  • Using Response.SendFile() correctly sets the Done property.

  • Session.Unique works again.

  • Session.Unique now correctly clear sessions when using SQLite.

  • Response.Cancel() is a new method that allows to cancel a response, provided that nothing has been sent to the client yet. It requires at least that the response is buffered.

  • Request.TempDir is a new property that allows to define where the uploaded files are stored.

  • Request.MaxFileSize is a new property that allows to define the maximum size of uploaded files. By default it is 128 MB.

  • Mime types for json, kml & kmz files. Used by the Response.SendFile() method.

  • If Http-Accept-Language header is void, Request.Language returns the current system language instead of "C".

  • Don't modify DB.Current when sessions are managed with sqlite databases.

GB.WEB.FEED

  • New component to generate and parse RSS documents

GB.WEB.FORM

  • WebUploader is a control that aims at managing the file upload process entirely. It is a combination of a WebUploadArea, a cancel button, and a progress bar.

  • WebUploadArea: Take the new Request.TempDir property into account.

  • WebUploadArea: It should behave correctly in all cases now.

  • WebUploadArea: Clear() is a new method that clears the possible uploaded file.

  • WebTextBox: The default event is "Change" now.

  • WebTextBox: ShowClear is a new property that allows to enable a "clear" button inside the textbox.

  • WebTextBox: Password is a new boolean property that puts the text box in password mode.

  • WebTextBox: Fix the raise of Activate event.

  • WebTextBox: Fix autocompletion support.

  • WebTextBox: Clear is a new event that is raised when the clear button is clicked. If that event is handled, then the control is not automatically cleared when clicking on the button.

  • WebTableView: SortOrder is a new property that returns the sort order (gb.Ascent or gb.Descent) or the currently sorted column.

  • WebTableView: SortColumns is a new property that returns the index of the currently sorted columns, or -1 if no column is sorted.

  • WebTableView: Sortable is a new property that indicates that the table can be sorted.

  • WebTableView: Sort is a new event that is raised each time the sort state of the table has changed, meaning that the table view contents must be refreshed with the newly sorted data.

  • WebTableView: Selected rows are now highlighted correctly even with cell having explicit background and foreground color.

  • WebTableView: Columns[].Sortable is a new property that tells if a specific is sortable or not. By default, all columns are sortable.

  • WebTableView: Clicking on a row, when the table is in multiple selection mode, selects the clicked row and unselect the other ones.

  • WebTable: The first row in correctly unselected again in single selection mode.

  • WebTable: SHIFT + Click allows to select or unselect a range of rows at once.

  • WebTable: Selection works correctly again with Firefox.

  • WebTable: Selection is now correctly maintained between requests.

  • WebTable: Lines are now highlighted on mouse over, and separated by thin lines.

  • WebTable: EnsureVisible() is a new method ensuring that a specific row is visible to the screen.

  • WebTable: clicking on the checkboxes of a WebTable in multiple selection mode works correctly again.

  • WebTable: Clicking inside a row in multiple selection row now just toggle that row. It does not unselect all the other rows anymore.

  • WebTable: AddColumn() is a new method to add a column and defining its properties in one line of code.

  • WebTable: Add an Hidden property to the column object.

  • WebScrollView: EnsureVisible() is new method that ensures a specific ScrollView child is visible to the screen.

  • WebMenuBar is a new control that acts as a container of WebMenu controls. It was made as a workaround of the badly designed CSS specifications of the overflow property. It may be removed if I find a way to use the WebHBox instead.

  • WebForm: Top level form titlebar is now correctly highlighted again.

  • WebForm: They can be resized horizontally again.

  • WebForm: The Hide() method works as expected now.

  • WebForm: The AddJavascriptFile() method now support extern javaascript files.

  • WebForm: Startup is a new property that allows to redefine the name of the startup form.

  • WebForm: Prevent non resizable dialog window from expanding to fit its contents.

  • WebForm: Persistent is a new property that tells a form must be hidden instead of being deleted when clicking on the close button or calling the Close() method.

  • WebForm: Exec() is a new method to run some custom javascript in the browser.

  • WebForm: Don't raise the Open event twice anymore when showing a modal form.

  • WebForm: Correctly restore automatic instances between request.

  • WebForm.Download() is a new static method that triggers a file download on the client side.

  • WebExpander: Arrows are correctly displayed now.

  • WebDateBox: Settings the Value (or Date) property raise the Change event.

  • WebDataBox: DateTime is a new property that allows the control to accept a time part.

  • WebControl: WebControl.Style.Exist() is a new property to know if a specific CSS property is explicitly defined.

  • WebControl: SetFocus() method now should work correctly in all cases.

  • WebControl: Modifying the Style property now correctly refreshes the control.

  • WebControl: Font is a new property that allows to define some of the font CSS properties.

  • WebControl.Name is now writable, so that the Group virtual property can be used in the IDE.

  • WebContainer: Force a full refresh when the Visible property changes.

  • WebComboBox: Setting the Text property now correctly refreshes the control.

  • WebComboBox: Activate waiting animation when selecting an item.

  • WebButton: Fix incorrect generated HTML when a button has both text and image.

  • WebButton: Click() is a new method that triggers a button click.

  • Waiting animation now uses a darker shadow.

  • This component now claims event loop implementation, so that you cannot check gb.web.form with any other GUI component.

  • The static public method HandleRequest is now correctly called in your startup form.

  • The activate event of TextBox and ComboBox now display the waiting animation.

  • Remove support for multiple main forms.

  • Prevent timers from being called recursively.

  • Prevent gw.table.onscroll() from failing if the target element does not exist anymore.

  • Message boxes icons are now pre-loaded.

  • Fix management of events that do not use waiting animation.

  • Exclude GUI components explicitely, instead of claiming implementing the event loop. Otherwise the IDE allows you to create GUI forms.

  • Display an animation when waiting for the answer of an event more than 500 ms.

  • Better error handling. Now unexpected errors should be displayed in the browser through an alert box in almost all cases.

  • Another fix for unique sessions using SQLite.

  • Always refresh the parent when the visibility of a control changes.

  • Allows quotes in automatic completion items.

  • Add /~logout URL to clear the session.

GB.XML

  • XmlWriter: The Element() shortcut method now correctly escapes text content.

  • XmlReader: Reading empty attributes should not crash anymore.

  • XmlReader: Fix recognition of CDATA elements when their contents look like XML

  • XmlReader: Don't eat "]" or "-" characters in CDATA or comment sections when they don't terminate the section

  • XmlReader: Correctly detect ending sequence of CDATA and comment sections (reset the recognition state when the sequence is interrupted)

  • XmlNode: Don't crash when _get()ing an empty attribute value

  • XmlNode.Attributes now works correctly when getting empty attributes.

  • XmlElement.GetAttribute() now works correctly with empty attributes.

  • XML parser does not crash anymore when the final > of a closing tag is missing.

  • Fix the previous fix in r7894.

  • Fix finding the parent document of an element.

  • Fix a 32-bits sprintf format bug.

  • Cygwin changes - as per Bastian Germann

  • .XmlReader.Node.Attributes: Raise an error instead of segfault when an attribute does not exist

  • .XmlReader.Node.Attributes.Exist() is a new method to check if an attribute is present

GB.XML.HTML

  • Fix the serialization of HTML/XHTML documents.

WEBSITE MAKER

  • Update to Gambas 3.9.2.

WIKI

  • The [...](...) syntax can be used for images links to display a thumbnail images opening a link in a new page (usually the image in full size).

Compilation and installation

Read the instructions there.

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

Enjoy it !

See also