[GB.WEB.GUI]
* NEW: Store the error log in '/tmp/gambas.XXX/gb.web.gui' directory now.
* BUG: Fix how mandatory fields are highlighted by the SetFocus(True) method.
[GB.GUI.BASE]
* NEW: TreeView: Use radio buttons when ShowCheck property is set with single selection mode.
* NEW: TreeView: Clicking anywhere in the row from the check now toggles it when ShowCheck property is set.
[GB.FORM]
* NEW: ListEditor: Unique is a new property that ensures that all ListEditor elements are unique.
* NEW: ListEditor: Activate event is now emitted if the user clicks twice on the list.
[GB.FORM]
* NEW: ColorChooser: Use icons instead of labels for color components.
* NEW: SliderBox: Add a Picture property.
* NEW: SliderBox: The default value is now applied when double-clicking on the spinbox, not the slider.
* NEW: Add new stock icons.
[GB.UTIL.WEB]
* BUG: Fix query encoding & decoding in URLQuery class.
* NEW: URL.UnQuote() takes a new optional argument that prevent unquoting "+" into space.
* NEW: URL.Quote() now quotes spaces as "%20" and not "+" anymore.
[GB.GUI.BASE]
* BUG: TreeView: Take padding into account when interpreting mouse events.
* BUG: TreeView: Fix right-to-left layout management.
* NEW: TreeView: ShowCheck is a new property that uses checkboxes to handle selection mode.
* NEW: Paint.Check() is a new method that draws a check mark.
[GB.TEST]
* NEW: TestRunner.List returns all tests as TestCommand[]
* NEW: Test.Main can be triggered to report all tests as string
* NEW: TestCommand FromString and ToString to convert TestCopmmands into objects and vice versa
[GB.TEST]
* OPT: Hide more classes and symbols.
TapPrinter, TapParser and TapContext are not exported anymore. The Tap
constants are moved into other classes. Some public methods/properties
that expose printer, parser or context are hidden.
Returns exit code.
Doesn't print a summary any more as this is provided by gb.test.
Doesn't print blank line at the beginning any more. Plan has to be in
the first line.
Works fine with tappy (python TAP consumer)
Kills temporary startup file
[GB.TEST]
* BUG: Do not trim whitespace from diagnostic lines.
* NEW: Show TODOs (failed and bonus) and SKIPs in summary.
Previously, TapPrinter.Diagnostic would Trim$ its argument before
splitting it by line. This would remove any indentation that may
be useful for formatted diagnostics output, so it has to go.
Additionally I special-case Null and gb.Lf to print exactly "#\n",
which is a common use case as a visual separator.
This is a big refactor of the TapPrinter and Assert interaction with
the goal of enabling gb.test to print a self-summary after a TAP session
(without storing the TAP we printed and parsing it afterwards). The main
feature addition is a new class representing an assertion (together with
its subtests). Objects of this type are now produced by TapPrinter when
it prints an assertion and by TapParser alike when it parses TAP.
This allows more uniform and more detailed reporting of failures, too.
For organizational reasons, subtest support was moved into the printer.
[GB.TEST]
* NEW: Expose the TapContext class which holds the current TAP session's state.
* NEW: Represent assertions (and entire subtests) by TestAssertion objects in both TapPrinter and TapParser.
* NEW: Coalesce the four TapParser events for assertions into one.
* OPT: Move subtest support into TapPrinter, removing the need to create multiple TapPrinter objects.
* OPT: Remove the need for buffering the TAP to print a self-summary.
* BUG: Fix the buffering issue that would lose TAP when the process crashes.
[GB.FORM.EDITOR]
* NEW: TextEditor: Do not use Application.Busy in Load() and Save() methods.
* BUG: TextEditor: TextEditor[].Purge() works as expected now.
Without "Debug oTest.Name" in TestSuite.class:39 it would silently crash anywhere
after TestNoMessage is done without printing any single character. Reason is
"Assert.BailOut" in TestSuite:51 which miraculously does nothing.
If the testsystem itself crashes, ist must print "BailOut ..."
But here also can be seen, why the system has to print every assertion immediately.
Any bufferíng is bad because if the testsystem crashes the buffered results are gone.
So we must get rid of the buffered stream thing and go back to Print scattered all over ;-)
[GB.TEST]
* BUG: Forward Description in Assert.ErrorCode.
* BUG: Fix spelling of TearDown -> Teardown special test method.
* OPT: Use Assert.Note() instead of Print in tests.
[GB.MARKDOWN]
* BUG: Take anchors into account correctly when generating links.
* BUG: Lines beginning with '#' without a space after do not make the parser crash anymore.
[INTERPRETER]
* NEW: Support for JIT '&=' optimization.
* BUG: Fix '&=' optimization on argument variables.
* OPT: Strings greater than 4096 bytes are allocated by 4096 bytes steps.
[GB.JIT]
* NEW: JIT optimization of '&=' has been implemented.
[GB.WEB.GUI]
* NEW: This is the new name of 'gb.web.form2'.
* NEW: Support for popup menus.
* NEW: Support for stock icons.
[GB.WEB.FORM2]
* NEW: Rename the component as 'gb.web.gui'.
[GB.UTIL]
* NEW: 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.
[GB.WEB.FORM2]
* BUG: Use SIGUSR2 for synchronizing session process with CGI process, as SIGUSR1 is used by the debugger.
* NEW: Support for debugger.
* NEW: THe HTML body now uses sans-serif font by default.
[GB.WEB.FORM2]
* NEW: WebForm: Current is a new static property that return or set the main form.
* NEW: WebForm: Goto() is a new static method that switch the Current property.
* NEW: WebForm: Reload() is a new method that reload the form if it is the main one. Otherwise it calls Refresh().
[GB.WEB.FORM2]
* NEW: Session: Fix compatibility with replaced Session class, with support for array accessor, Exist method and Prefix property.
* NEW: Session: Remove Dir property. Session.Path was done for that.
* BUG: Calling Session.Abandon now quits the session process immediately.
* BUG: WebTimer: The Refresh() method now does nothing.
[GB.WEB.FORM2]
* NEW: DateBox: Open calendar popup on mouse down.
* NEW: Override the Session class, so that its methods that do not have any sense with 'gb.web.form2' do nothing anymore.
* NEW: WebForm.Current is a new property that allows to define the main form of the application that fills its HTML page.
* NEW: Session.Dir is a new property that returns the session directory. It is now '/tmp/gambas.<userid>/session/gb.web.form2'.
* NEW: Session.Timeout is taken into account by session processes.
* BUG: Window titles do not wrap anymore.
[GB.FORM.TERMINAL]
* BUG: TerminalView: Terminal output processing is now delayed until the control is visible and has been arranged, so that the terminal width is accurate.
* BUG: Move XTerm files to the hidden project directory.
* NEW: TerminalView: Automatic scrolling is disabled when the last terminal line is hidden.
* OPT: TerminalView: Automatic scrolling is not smooth anymore.
[GB.FORM.TERMINAL]
* NEW: TerminalView: Add a new popup menu entry to select all the text.
* NEW: TerminalView: Add a 2 pixels margin around the terminal contents.
* NEW: TerminalView: ReadOnly is a new property that makes the TerminalView ignore keyboard input.
[GB.UTIL]
* NEW: String.PadLeft() is a new method that pad a string to the left up to a specified length using a string pattern.
* NEW: String.PadRight() is a new method that pad a string to the right up to a specified length using a string pattern.
[GB.TEST]
* NEW: Flowchart made by libre office draw and exported as svg
This is a first try to show the interplay between gbt3, gb.test and
gb.test.tap.
[GB.FORM]
* NEW: FileProperties: Add() now returns the index of the added tab.
* NEW: FileProperties: Index is a new property that returns or sets the current tab index.
* NEW: FileProperties: Click is a new event that is raised when a tab is selected.
[GB.TEST.TAP]
* NEW: Assert.SubtestLevel is a new property that returns the number of nested subtests.
* NEW: Assert.BailOut always unwinds the subtest stack and bails out of the entire TAP session.
* BUG: Tests can bail out even if Finished was called.
[GB.TEST]
* NEW: Bail out again if errors from test methods are caught.
* BUG: Don't call Finish on a subtest when it was already finished.
After the Bail out message, we Quit with non-zero exit status to signal
an abnormal termination to the harness.
[GB.TEST]
* NEW: Use gb.test.
This removes the Assert and Track classes and uses gb.test.tap instead.
Test methods are now executed inside subtests, plan lines are auto-
matically emitted by the harness.
Differences between gb.tests's and gb.test.tap's Assert module:
- Instead of Assert.True and Assert.False, use Assert.Ok.
- Instead of Assert.Equals* for every type, there is a generic
Assert.Equals for Variants and a specific Assert.StringEquals
for strings which prints diagnostics when the test fails.
- Assert.BailOut does not terminate the entire program, just
the TAP stream.
- Assert.ErrorWithCode is called Assert.ErrorCode.
All TAP printing is done through Assert now. Errors happening in the
test code are not caught and spoofed in the TAP stream anymore, they
cause a test failure. The system would be more robust if the testee
would be in a different process from the tester.
[GB.TEST.TAP]
* NEW: Add Reset() method to Assert. Useful if you use the same (automatic) instance for multiple TAP streams.
* BUG: Fix state handling in TapPrinter.Finished.
[GB.TEST.TAP]
* NEW: Turn TestStats into a class.
* NEW: Store TestStats.Failures as an Integer[].
* BUG: Do NOT intercept test's stderr and convert it to diagnostics.
[GB.FORM.EDITOR]
* BUG: TextEditor: Correctly handle the drawing of the difference before the first line.
* BUG: TextEditor: Correctly relayout differences when the Wrap property changes.
[GB.UTIL]
* NEW: CsvFile: Open() is a new method for opening a CSV file for reading.
* NEW: CsvFile: Create() is a new method for opening a CSV file for writing.
[GB.UTIL]
* NEW: The Terminal class has been removed, and replace by an extension of the Process class. In other word the Expect() method is now directly a method of the Process class.
[GB.UTIL]
* NEW: Terminal: A new class that allows to answer the prompts of interactive commands running in a virtual terminal easily (think about ssh, scp...).
[GB.WEB.FORM2]
* BUG: Fix component metadata.
* BUG: Don't make test forms exported. They can conflict with other forms with the same name.
* NEW: The Window Close event can be cancelled.
[GB.FORM.MDI]
* NEW: Toolbar: Settings is a new property that allows to return or set the toolbar layout as a string.
* NEW: Toolbar: GetLayout() is a new static method that returns the saved layout of a toolbar from its key.
* NEW: Toolbar: SetLayout() is a new static method that defines the saved layout of a toolbar from its key.
[GB.GTK]
* BUG: Fix Drag() that was returning the drag frame instead of the target control.
[GB.GTK3]
* BUG: Fix Drag() that was returning the drag frame instead of the target control.
[GB.GUI.BASE]
* BUG: Fix Drag() that was returning the drag frame instead of the target control.
[GB.QT4]
* BUG: Fix Drag() that was returning the drag frame instead of the target control.
[GB.QT5]
* BUG: Fix Drag() that was returning the drag frame instead of the target control.
[DEVELOPMENT ENVIRONMENT]
* NEW: The IDE Italian translations are now complete.
[GB.WEB.FORM2]
* NEW: The Italian translation.
[AUTHORS]
* NEW: Added a new italian translator
[GB.FORM]
* NEW: TabPanel: TabBarSize is a new property that returns the height of the tab bar.
* NEW: TabPanel: The "close all" button is now drawn after the right padding.
* NEW: ButtonBox: Custom buttons added with _AddButton() are now always between the clear button, and the standard button.
[GB.FORM.MDI]
* NEW: 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.
[GB.FORM]
* NEW: 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.
* BUG: 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.
[GB.WEB.FORM2]
* BUG: Fix refresh of WebForm and WebTimer.
* BUG: Restart timeout timer correctly when a request has been processed.
* NEW: Add WebProgressBar control.
* NEW: If unity is not specified in WebForm.Move() coordinates, use 'px'.
[GB.WEB.FORM2]
* NEW: Add WebDateBox and WebDateChooser controls.
* NEW: Using embedded HTTP server is possible now.
* NEW: Add WebComboBox control.
* NEW: WebControl objects become invalid if they are deleted.
* NEW: WebForm.ShowModal() and WebForm.ShowPopup() work, and they are really modal.
* NEW: Modal forms can be persistent.
* NEW: Add WebForm Width and Height properties.
* NEW: Add WebScrollView control.
* NEW: Add WebSeparator control.
* NEW: Add WebSpinBox control.
* NEW: Add WebTextArea control.
[GB.WEB]
* NEW: CGI.Reset() is a new method that resets CGI variables to their initial values.
* NEW: Request.Reset() is a new method that reads the request contents again.
* BUG: Use System.Language if the 'Accept-Language' HTTP header is void.
* NEW: Response.Begin() now takes the content-type as optional argument.
* NEW: Response.Reset() allows to send the response again.
* NEW: Compress text responses if its size is greater than 512 bytes, not 128.
[GB.TEST]
* NEW: Assert some reworking, skip, todo and body removed
* NEW: in a testcontainer in _new the count of tests can be defined by Me.Plan and differences between assertions counted and planned lead to No success
* NEW: Unittest.Bailout
[CONFIGURATION]
* NEW: 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.
[GB.SCANNER]
* NEW: Support for multiple scan from the feeder.
* NEW: PageBegin and PageFinished event to manage actions between each page.
* NEW: Better error management with an Error event
* NEW: An example in the source that use the gb.scanner abilities.
[GAMBAS-WIKI]
* NEW: The Italian translations are now complete.
[DEVELOPMENT ENVIRONMENT]
* NEW: The IDE Italian translations are now complete.
[GB.WIKI]
* NEW: The complete Italian translations.
[GB.TEST]
* NEW: The Italian translation.
[GB.NET.SMTP]
* BUG: Fix quoted-printable encoding of headers containing e-mail addresses.
* BUG: Add '_=' sequence in mime part boundaries, as this sequence should not be present in encoded data.
[GB.GUI.BASE]
* NEW: 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.
[DEVELOPMENT ENVIRONMENT]
* NEW: Draw the frame of control dropped from the toolbox bigger.
* BUG: The frame of control dropped from the toolbox should correctly disappear in all cases.
[GB.GUI.BASE]
* BUG: The DragLeave event is now emitted reliably when the mouse leaves the drag and drop frame.
[GB.FORM.PRINT]
* BUG: The paper size is correctly refreshed when the orientation is changed.
* BUG: You can continue to freely zoom with the mouse wheel when current zoom is at 100%.
[GB.FORM]
* NEW: Bookmarks is a new static class that allows to define global bookmarks for all FileChooser and DirChooser controls.
* NEW: Add separators between the different kind of bookmarks in the bookmark menu.
[GB.WEB.FORM]
* BUG: WebForm: Forms embedded into other forms work correctly now.
* BUG: WebForm: An error is raised now when trying to show an embedded form.
* BUG: WebForm: Fix message box icons pre-loading.
[GB.WEB]
* NEW: Request.ContentType is a new property that returns the Content-Type HTTP header.
* NEW: Request.ContentLength is a new property that returns the Content-Length HTTP header, or -1 if the header is not present.
* BUG: Request.Language now uses an internal dictionary to convert the Accept-Language HTTP header to a correct system language.
* BUG: Request.Language now takes the priority of languages specified in the Accept-Language HTTP header into account.
* BUG: If the request exceeds the maximum size defined by Request.MaxFileSize, a "Request too big" error is raised instead of "Response too big".
* NEW: Desktop.Types is a new property that returns a read-only array of each desktop defined in Desktop.Type.
* NEW: Desktop.Passwords: Work correctly now when multiple desktops are included in the Desktop.Type property.
* OPT: DesktopFiles: Remove some useless array copies.
[GB.FORM]
* NEW: FileView: Add information about each file next to the icon in icon view mode.
* BUG: DocumentView: Remove erroneous public constant written in French.
[GB.FORM.EDITOR]
* NEW: TextEditor: Draw wrapped lines with a normal background, but with a gray hook to its right.
* BUG: TextEditor: Now we can set up to 32 style colors without crashing.
[GB.FORM]
* NEW: Spinner: Use the foreground color to draw the spinner and its label.
* NEW: TabPanel: Use the TabPanel foreground color to draw the titles of the tabs.
[GB.GUI.BASE]
* BUG: GridView: Border padding is now applied inside the cell, not outside like the margin.
* NEW: TreeView: A Scroll event is raised now then the TreeView, the ListView or the ColumnView scrolls.
* BUG: TreeView: Setting the item Font property to NULL does not crash anymore.
[GB.FORM]
* BUG: DocumentView: Correctly reset the scroll position when setting Arrangement to Arrange.Fill.
* OPT: DocumentView: Desaturate is faster now as it is done only once per page drawing.
[GB.FORM]
* NEW: DocumentView: The default background color is now a mix of the default text foreground and background colors.
* BUG: DocumentView: Use Paint.Begin() instead of Draw.Begin(), so that preview uses anti-aliasing.
* BUG: DocumentView: Fix some cases of page drawing not correctly triggered.
* NEW: DocumentView: ShowPage is new property that displays the current page and the number of pages inside the preview.
* NEW: DocumentView: Desaturate is a new property that desaturates the preview. It's slow when the zoom is huge.
* NEW: DocumentView: Allow zoom up to 800%.
[DEVELOPMENT ENVIRONMENT]
* NEW: The IDE translation is now fix and complete.
[GB.FORM.TERMINAL]
* NEW: The complete translation.
[GB.TERM.FORM]
* NEW: The translation is now complete.
[GB.UTIL]
* New: The translation is now fix
[GB.GUI.BASE]
* NEW: Paint.Arrow() is a new method that draws an arrow.
* NEW: TreeView & ColumnView: ShowLines is a new property that makes the control draw tree lines.
* NEW: TreeView & ColumnView: The arrow size now follows the font size.
[GB.EVAL]
* NEW: Highlight.Alternate is a new constant that represents the background style used for coloring code embedded into webpages.
[GB.EVAL.HIGHLIGHT]
* NEW: Support for new Highlight.Alternate style.
[GB.FORM.EDITOR]
* NEW: Support for new Highlight.Alternate style.
* NEW: Matching braces now blink with the cursor.
* BUG: When the cursor moves, the blinking timer is reset so that the cursor blinks only when it is not moving.
[GB.FORM.EDITOR]
* NEW: TextEditor: Don't enclose selection with quotes anymore, it is more annoying than anything else.
* NEW: TextEditor: Undo now groups successive single character insertions, and successive single character deletions as well.
[GB.FORM.EDITOR]
* BUG: Translate popup menu.
[GB.NET.CURL]
* BUG: DownloadManager: Remove useless Message event.
* NEW: DownloadManager: Add a Connect event raised when the distant server is connected.
[GB.WEB]
* BUG: CGI error message is not translatable.
[GB.XML]
* BUG: Error messages must not be translatable.
[GB.GTK]
* NEW: Drag.Show() and Drag.Hide() methods are now implemented in 'gb.gui.base'.
* NEW: Drag.X and Drag.Y properties are now writable.
[GB.GTK3]
* NEW: Drag.Show() and Drag.Hide() methods are now implemented in 'gb.gui.base'.
* NEW: Drag.X and Drag.Y properties are now writable.
* BUG: Finishing a drag & drop now correclty releases the button grab.
[GB.GUI.BASE]
* NEW: GridView: The padding of column headers is at least half of Desktop.Scale.
* NEW: ScrollArea: The Scroll() method returns TRUE now if no scrolling actually occured.
* BUG: TreeView: Item X property now correctly takes the TreeView padding into account.
* NEW: Drag.Show() and Drag.Hide() methods are now implemented in 'gb.gui.base'.
[GB.QT4]
* NEW: Drag.Show() and Drag.Hide() methods are now implemented in 'gb.gui.base'.
* NEW: Drag.X and Drag.Y properties are now writable.
[GB.QT5]
* NEW: Drag.Show() and Drag.Hide() methods are now implemented in 'gb.gui.base'.
* NEW: Drag.X and Drag.Y properties are now writable.
[GB.FORM]
* BUG: MenuButton: Use selected background color when the MenuOnly property is set and the MenuButton has the focus.
[GB.GTK]
* NEW: Disable top-level menus shortcuts when the window menu bar is hidden.
[GB.GTK3]
* NEW: Disable top-level menus shortcuts when the window menu bar is hidden.
[GB.GUI.BASE]
* NEW: Add helper function for disabling/enabling top-level menu shortcuts.
[GB.QT4]
* NEW: Disable top-level menus shortcuts when the window menu bar is hidden.
[GB.QT5]
* NEW: Disable top-level menus shortcuts when the window menu bar is hidden.
[DEVELOPMENT ENVIRONMENT]
* BUG: About dialog: Wrap license text so that it is not truncated.
[GB.GUI.BASE]
* BUG: Paint.DrawRichTextShadow() default radius is now the same as Paint.DrawTextShadow().
[GB.WEB]
* BUG: Request: Posted field request using 'multipart/form-data' and having initial void lines were incorrectly trimmed. Posted files were not affected.
[GB.FORM]
* NEW: MenuButton: Handle right-to-left written language correctly.
* NEW: Expander: Redesign the Expander title.
* NEW: SliderBox: Hitting the ESC key in the SpinBox resets the SliderBox to its default value.
[CONFIGURATION]
* NEW: Update version to 3.13.90.
[DEVELOPMENT ENVIRONMENT]
* NEW: Redone extra references support.
[COMPILER]
* NEW: Take project extra references into account.
[GB.TERM.FORM]
* BUG: Fix project description.
[DEVELOPMENT ENVIRONMENT]
* NEW: The IDE translation is now complete.
[GB.FORM]
* NEW: Italian translations improvements
[GB.WEB.FEED]
* NEW: The translations is now complete.
[GB.FORM]
* NEW: ListEditor: ReadOnly is a new property that makes ListEditor enter read-only mode.
* NEW: ListEditor: Add is new event that is raised when the add button is clicked.
* NEW: ListEditor: Add() is a new method that insert a new element in the list.
* NEW: ListEditor: Exist() is a new method that returns if an item exists in the list.
* NEW: Update some translations.
[GB.MEDIA.FORM]
* NEW: MediaView: Speed is a new property that allows to define the media playing speed. A negative speed moves backward.
* NEW: MediaView: Resizing the control while the media is paused correctly resizes the displayed frame.