0.82 - 24 Jan 2004
- You can hit the Control key with the up & down arrows in the code editor to move
to the previous or the next method.
- Change Help Browser shortcut from F2 to F1.
- New forms, classes and modules have now names like "Form1", "Class2", "Module3".
- Translation dialog is now resizable.
- BUG: Auto instanciable classes should work now.
- BUG: SIGCHLD interpreter signal handler has been fixed so that the KDE one
is not removed. The KDE file dialog will not freeze anymore.
- The Expand and Collapse events do not take the item key as parameter anymore.
You must check your TreeViews and your ColumnViews!
- BUG: TreeView, ColumnView and ListView were fixed.
- BUG: showing forms should not raise X errors anymore.
- Three new controls: DatePicker, URLLabel and ColorBox.
- DatePicker works only because I did an ugly hack to workaround a KDE bug.
This bug seems to be corrected since KDE 3.1.5.
0.81 - 17 Jan 2004
- Some optimizations when controls are resized.
- BUG: initial path now reworks in file selector.
- BUG: deleting a directory in project window should work now.
- You have a menu entry to select all the text in the editor.
- The tips files changed. Now there is one tips file by language.
- The help browser has a new heading for each language help page.
- You can resize the buttons of the toolbox.
- Now you can connect to a server by specifying a username.
- You can load and save SQL scripts to a file. These SQL scripts file are just text
file containing SQL requests separated by semicolons.
- BUG: deleting a table closes table windows correctly now.
- Two new array classes: Byte and Short.
- Arrays now have a Read and a Write method to read and write their contents on a stream.
- Support for auto-instanciable classes.
- BUG: converting Boolean, Short and Byte numbers to Integer numbers works now.
- The Form class is now auto-creatable. This means that you can have a form named
'FDialog', and use it as in Visual Basic: FDialog.Show directly shows the form,
without the need to create an instance !
- Iconview has a new method Find(), to find an icon item from a point.
0.80 - 01 Jan 2004
- Gambas can be installed in /usr/bin now. I don't know if it really works !
- The configure script now should find the QT meta-object compiler (moc) even if
it is not located in the QT directory.
- There is a very alpha new component: gb.vb. This is a Visual Basic compatibility
component: it provide static functions that simulate the behaviour of some Visual
Basic functions that differ from the Gambas ones.
- Support for displaying in form editor controls that are not in the gb.qt and
- BUG: error during a save operation will not crash the IDE anymore.
- Dependencies between components are now managed by the project property dialog.
- Number of untranslated strings is now permanently updated in the translation
- Declaring a class twice in a component now raises a panic error, and do not
crash the interpreter anymore.
- Putting an identifier between braces prevents the compiler from interpreting it
as a reserved keyword or subroutine name.
- You can insert any character in a string with the \xHH syntax, where HH is the
hexadecimal code of the caracter. For example, "\x0A" is a newline.
- Window and Panel controls have a new property, Arrangement. When this property is
set, then the control children are automatically moved and/or resized.
- Dialog.Filter now is an array of strings, each string being a filter. Now, instead of
Dialog.Filter = "Text files (*.txt);;All files (*.*)"
Dialog.Filter = [ "Text files (*.txt)", "All files (*.*)" ]
- Drag.X and Drag.Y are two new properties that return the mouse position of a drop.
- TreeView, ListView and ColumnView got a new method Find(), that find an item from the
- Control.Window is a new property that returns the window containing a control.
- Support for OS not having the MSG_NOSIGNAL option for some system calls.
0.74 - 20 Dec 2003
- Somes fixes to let the interpreter and the network component compile with gcc 2.95
- You can return from the current function in the debugger.
- BUG: the file selector should not lose its layout anymore.
- Dir$() now returns a string array, that contains each file located in the browsed
directory. Its new syntax is: Dir$ ( Path , [ Filter ] )
- You can return from the current function in the debugger.
- NEW: Arrays have a new method, Reverse(), that reverse their contents.
- NEW: You can dynamically call object methods with the Object.Call() static method.
- BUG: Using READ with a negative length on a void stream does not corrupt memory
- NEW: ListView, TreeView, ColumnView and IconView have a new property named 'Key'
that returns the key of the current item, or a null string if there is no current
- BUG: Key.Control, Key.Shift and Key.Alt now return the correct value in a KeyPress
event, if Control, Shift or Alt are pressed alone.
- BUG: Window masks are not shifted one pixel down anymore.
- When drawing on a picture that has a mask, the mask is recalculated when Draw.End
is called. Be careful: the recalculation is done with a QT method based on a
trivial heuristic, and so may fail !
- BUG: Color.RGB() does not return negative values anymore.
- BUG: Some fixes related to the UTF-8 filenames in the Dialog class.
- BUG: DrawingArea with Cached = FALSE does not repaint its background anymore.
- NEW: Drag & Drop support, with a new class, Drag, a new method, Control.Drag(), a
new property, Control.Drop, and two new control events: Drag and... Drop !
Use Control.Drag() to drag something from a control, in a MouseMove event for
example, and set Control.Drop to TRUE if you want a control to accept drops.
The Drag class has properties that give you information about the object being
dragged, like the Clipboard class. Use them inside Drag and Drop event handlers
in the following way:
- Cancel the Drag event with STOP EVENT if you don't want the object.
- Use Drag.Data in the Drop event handler to get the dragged object.
0.73 - 06 Dec 2003
- There are many fixes for gcc 3.3, Cygwin and Solaris.
- BUG: the name of controls and groups are checked. You cannot enter a control name
or a group name with a space inside anymore, for example.
- BUG: a workaround in the File selector, so that it does not crash anymore when
displaying void directories.
- A new property Application.Env that allow reading and modifying the process
- The internal debugger does not stop anymore inside archives loaded with the
- Files instructions like OPEN, KILL, MKDIR, etc. now convert automatically the
file name from UTF-8 to system charset. This implies that gambas source code files
must be written in UTF-8 and nothing else !
- BUG: the inequality comparison operators now should be definitively fixed :-)
- See the Changelog file in ./src/lib/net
- Allow the component to compile with QT 3.2
- BUG: Window.Show() reworks now on MDI child windows. An internal change in the QT
library caused that regression.
- The property Music.Pos now returns the position of the music, and can be set to
play the music from a specified time.
0.72 - 20 Nov 2003
- The network component made by Daniel Campos has been integrated !
- ./configure script works better on non-Linux systems.
- Some fixes in program examples.
- Some source files and many symbols in them were renamed so that Gambas compiles
under Cygwin. But it does not work yet...
- BUG: A class can inherit another class having no symbols in its description without
- Posted routines are now executed in the order they were posted: posted the first,
executed the first.
- BUG: CLOSE now works with streams that are not File objects.
- BUG: Array() and [...] now create correctly String arrays.
- BUG: the inequality comparison operators now behave correctly with NULL.
- BUG: The internal interpreter event loop now call posted routines correctly.
Gambas Editor Component
- Buttons have now a minimum height, like ComboBox, according its font.
- The right mouse button does nothing anymore in ListBox controls.
- BUG: Showing windows was fixed, so that closed windows does not reappear suddenly,
like in the IDE.
- The QUIT hook does not crash anymore.
- If a line begins with a question mark, the question mark is replaced by 'PRINT',
like in the old Basics.
0.71 - 01 Nov 2003
- A new instruction, STOP EVENT, to stop an event in an event handler. You can return
- Process class and File class now inherit the Stream virtual class. Consequently,
you can use PRINT, READ, INPUT, ... on a process object.
- Process.Send has been removed.
- 'Write' event Process has been replaced by 'Read' event Process, and do not take
any argument anymore. Use READ, LINE INPUT or INPUT instead. The 'Error' event
did not change.
- Shared libraries are preloaded with the library version added to the file name:
'libqt-mt.so.3' instead of 'libqt-mt.so'.
- BUG: String.Sort does not crash anymore while trying to sort void strings.
- Using QUIT instruction does not display the 'Unknown error' message anymore.
- BUG: reading and writing now correctly manage interrupted system calls.
- By specifying a negative value as third argument to READ, you can read up to
READ #hStream, sString, 255 ' reads a 255 characters length string
READ #hStream, sString, -255 ' reads a string up to 255 characters
- WAIT does not need the QT component to work now.
- New properties Application.Handle and Process.Handle that will replace
Application.Id and Process.Id in a next version.
- Key.Cancel has been removed. Use STOP EVENT instead.
- New properties Window.Handle and Control.Handle that will replace Window.Id and
Control.Id in a next version.
0.70 - 19 Sep 2003
- ./configure were reworked, so that adding component and managing differences
between systems is easier.
- A new experimental component: gb.sdl, that allow using SDL to play sounds and music.
- The file selector of Fabien Bodard has been merged.
- BUG: you can define objects greater than 32K now ! And so declare arrays as large as
- A new property Application.Version that returns the version of the project.
- The Keyboard and Mouse event handlers do not take any parameters anymore! They must use
new static fields of the Key and Mouse classes that replace the old parameters.
As for the Keyboard events:
- Ascii -> Key.Text
- Code -> Key.Code
- State -> Key.Shift, Key.Control, Key.Alt
As for the Mouse events:
- X -> Mouse.X
- Y -> Mouse.Y
- Button -> Mouse.Left, Mouse.Middle, Mouse.Right, Mouse.Shift, Mouse.Control, Mouse.Alt
- Orientation -> Mouse.Orientation
- Delta -> Mouse.Delta
The old Mouse.X and Mouse.Y were renamed as Mouse.ScreenX and Mouse.ScreenY.
- A new property Iconview.Scrollbar.
0.65 - 29 Aug 2003
- Gambas should compile and run on FreeBSD.
- Help browser search now display page titles instead of file names. The vertical
position in the page is memorized when you click on the backward and forward
- Shared libraries preloading has been reworked, so that LD_PRELOAD can be defined
by the user.
- BUG: a bug with LD_PRELOAD defined to a void string has been fixed.
- Support for systems having no setenv() and unsetenv() system functions, like
Qt Extended Component
- Splitter.Pos property has been replaced by Splitter.Layout that returns a string
and not an integer array.
- TextView has two new properties: TextView.ScrollX and TextView.ScrollY. They
returned the position of the visible part of the displayed HTML page.
0.64 - 10 Aug 2003
- If the KDE component is not compiled, then its libraries are not preloaded.
Yes, it is logical ! But sometimes I'm not :-)
- There is no one sole component description file anymore, but one description file
for each component now.
- A menu entry allows you closing all opened windows.
- The IDE now tells the compiler which classes use the project. You need not use the
CLASS keyword anymore.
- The database manager now deals with database specific encodings.
- It saves its configuration in ~/.gambas/gambas-database-manager.conf now.
- Circular references were found and destroy :-)
- The syntax to raise event has changed. Instead of simply calling the event like
a function, you must use the RAISE keyword now:
RAISE Event AS ReturnValue
- The compiler now can receive a list of pre-declared classes in a file. If so, then
an identifier beginning with an uppercase character is not supposed to be class.
It must have been specified in the class list file.
- The Component.Controls property is useless now, it has been removed.
- The QUIT instruction, that immediately stops a program, has been implemented.
- BUG: temporary files are now correctly deleted.
- A new Gambas API: GB.System.Charset(), that returns the charset used by the
- BUG: the LIKE instruction should work correctly now.
- BUG: the debugger now shoud display local variable values correctly now.
- Database charset management.
Qt Extended Component
- ListView, TreeView and ColumnView Rename events are now posted instead of
being raised immediately, so that you can do what you want during the
event handler without crashing the QT library.
- BUG: TableView.Refresh didn't work. It was replaced internally by a Hide()
followed by a Show(). This is an awful workaround, but I found no other solution.
0.63 - 01 Aug 2003
- KDE libraries are all preloaded when using the KDE components.
- Global destructors are now called when unloading C++ components like the QT one.
- Bug fixes into the debugger : you can safely trace a class located in another
project, and trace code using static arrays (static arrays are arrays declared
this way: DIM iTab AS Integer).
- The new project/file/icon selector made by Fabien Bodard has been integrated.
Be careful : this is beta code !
- The IDE warns you when you want to import a translation different from the
current language in the translation dialog.
- Arabic, Croatian, Indonesian and Spanish translations were integrated.
- A new keyword PROPERTY to declare properties in your class.
You declare the property this way: PROPERTY [ READ ] AS
Then you must write a function to read the property, and, if the property is
not read-only, a function to write it. The function names are PropertyName_Read()
- PROPERTY keyword management.
- BUG: fixed a memory leak in Dir$() when browsing archive contents.
- BUG: the debugger can display all types of local variables.
- Draw.Text() syntax has changed. The new method can draw multi-line text aligned
inside a rectangle.
- Setting DrawingArea.Enabled to FALSE prevents the control to draw anything on the
screen, even its background.
- NEW: Font.Ascent and Font.Descent.
- Printer.Command has been replaced by Printer.Name.
- NEW: Printer.MinPage and Printer.MaxPage.
- ComboBoxes automatically adjust their height to its font size.
- NEW: Control.Id that returns the control window handle.
- NEW: TextView.Clear() clears the textview.
0.62 - 14 Jul 2003
- The IDE configuration file has changed. Now the IDE uses a shared class named
Config that is stored in the Util archive library.
This class stores configuration files into the '~/.gambas' directory and gives
them the name of the application by default : for example, the IDE configuration
file is '~/.gambas/gambas.conf'.
The format of these configuration files follows the Window .INI file format.
The old '~/.gambas' file will be removed by the installation process.
- Portuguese (Brazilian) translation by Nelson Ferraz.
- An internet link in the help browser now runs mozilla by default, or any other
internet browser defined in the preferences dialog.
- The icon editor toolbox has now its own window. This window is common for all
opened icon editors.
- Files in the project tree can now be copied, cutted and pasted, i.e. moved and
copied. They now have their own properties window.
- Welcome dialog icons were redesigned.
- Project properties dialog were redesigned and simplified.
- BUG: translation search and check were fixed. Some messages were not examined
by the algorithm.
- The project tree is sorted with directories first.
- A new keyword, COPY, to copy files.
- A new routine, IsDir(), to know if a file is a directory.
- A new keyword, COPY, to copy files.
- A new routine, IsDir(), to know if a file is a directory.
- BUG: The file search between archives has been fixed. You can use USE safely now :-)
- Operators can now have up to 63 operands.
- The QT component should compile fine now with QT 3.0.
- The Window.State property now works correctly. Bugs in QT and/or KDE window manager
were gone round.
0.61 - 05 Jul 2003
- ./configure got a new option, --disable-preloading, to prevent the gambas programs
to preload shared libraries. It seems that preloading don't work on some systems
for unknown reasons.
- Now you can use other gambas archive (executable) as libraries !
- The examples are copied into the gambas installation path. They can be directly
opened from the IDE menu.
- The welcome dialog was reworked.
- The Library class has been renamed as Component.
- Application.Charset and Application.Language has been moved to the new System
- Endianness management. Class compiled on a big-endian architecture can be loaded
on a little-endian architecture. And conversely.
- You can use the BIG or the LITTLE keyword with the OPEN instruction, to specify
that the READ and WRITE instructions will read big-endian or little-endian data.
OPEN "./image.bmp" FOR READ LITTLE AS #hFile
This will read a BMP file, that is known to be stored in little endian format
(Tell me if I'm wrong).
- The USE "path" keyword tells the interpreter to search classes in the specified
Gambas archive. If the path is relative, the archive is search on the same
directory where the project is, and then in the executable path of gambas if needed
(/opt/gambas/bin by default).
You can use USE (!) for several archives if you need.
- TreeView, ListView and ColumnView classes : The Click event is raised only if the
mouse is used.
0.60 - 25 Jun 2003
- WARNING: Older Gambas project must be recompiled to work with this version.
- Component information is now completely stored in one unique text file located
in /opt/gambas/lib. This file is named 'components'. It contains component names
that can be translated.
- The old *.help files were removed. They are replaced by the Wiki contents.
- The format of the *.info files generated by the 'gbi' command has changed.
- The Component Explorer has been replaced by a new Help Browser based on the
Gambas Wiki made by Rob.
- The ToolBar has been reworked.
- The preloaded shared libraries now contain the library version number, so that
systems that do not have the symbolic link "*.so" can use Gambas.
- The OPEN keyword has changed. You can pass a new option WATCH to watch files.
A watched file calls the "File_Read" and "File_Write" event handlers as needed.
- BUG: you can safely set breakpoints on classes that have a static constructor.
Gambas Editor Component
- BUG: Containers that has been explicitely destroyed by the Delete method are
nowdetected. Adding controls to them does not crash anymore, but raise an error
- The WAIT instruction now process only redraw events, and block user input during
- Strings with escape characters are now correctly colorized.
0.58 - 14 Jun 2003
- The QT library and KDE core library are now preloaded when the corresponding
components are used. This is a workaround to make Gambas work on Gentoo, SuSE,
RedHat, and X11 using NVidia driver. This was achieved by using the LD_PRELOAD
- KDE libraries are now detected using 'kde-config'. KDE includes are detected by
browsing KDE prefix returned by this command.
- QT includes are detected using qptrlist.h, a file that exists only in QT 3.
- You can arrange controls horizontally and verticaly in the form editor. The tab
order follows this arrangement.
- BUG: Default user password is void now.
- Support for preloading shared libraries that don't like not to be loaded at
- BUG: Imbricated posted event are correctly managed now.
- BUG: Rol(), Ror(), Shl() and Shr() functions now work as expected on byte and
- BUG: Trying to do an impossible object conversion cannot lead to a crash
Qt Extension Component
- The Flat property of Button and ToggleButton controls were renamed as Border.
- ScrollBar and Border properties are added to many view controls.
- Control.Grab() grabs the contents of a control into a picture.
- Desktop.Grab() grabs the contents of the desktop into a picture.
- Printer.PageSize is now a string and not an integer constant anymore.
- New property Printer.Command to set the system command used for printing.
- New property Printer.File to create a postcript file instead of printing.
- Many other new properties in the Printer class: Resolution, ColorMode, FromPage,
- BUG: changing Border property of a window having no icon does not crash anymore.
- New control TextView, to display an HTML page and follow the links clicked by
- BUG: mysql driver does not crash anymore when enumerating a result.
- BUG: mysql 4.0 workaround
- BUG: Database.Name and Database.System are now read-only property.
0.57 - 25 May 2003
- Gambas now is developed on a Mandrake 9.1, and so should compile fine on it.
The postgresql library is correctly detected.
- The font sizes used in gambas application now depends on the last version of the
XFree86 font system, fontconfig v2. They will be too small on older Linux systems
that uses fontconfig v1.
- A new window for displaying local variables during a debugging session.
- BUG: inserting controls in a ScrollView now works in all cases.
- The database manager has a MDI interface now.
- A new option for VB users to make form controls public.
Qt Extension Component
- Forms are now self-executable. Thus, you can define a form as startup class in
the IDE, without being obliged to define a static public function Main() that
instanciates and shows it.
- New methods, Draw.Polygon() and Draw.Polyline() to draw... polygons and polylines.
- A new control, Workspace, which can be used for creating MDI applications.
- A new property, Splitter.Pos, that returns an array of integers that define
the relative widths of each control inside the splitter.
0.56 - 11 May 2003
- The code specific to QT 3.1 is not compiled anymore when using QT 3.0.
- The debugging interface has been redesigned. There is now a console that allows
the user to evaluate any expression, during debugging or not.
- BUG: creating controls inside ScrollView works correctly now.
- Tips of the day are stored in separate files, each file containing only one tip
and all its translations.
- Many changes and bug fixes.
- Parsing numbers is now much more flexible and tolerant :-)
- BUG: many race conditions were removed in the Process management routines.
Everything should work correctly now.
- BUG: Using the debugger does not interfer with the error management of the
debugged program anymore.
- BUG: calling a static method on an object reference works now.
- BUG: accessing files into executable archives should work in all cases now.
Consequently, translations will be used when lauching an executable.
- The subroutine Eval() has been implemented.
- BUG: Using void strings with some string operators don't crash the interpreter
Qt Extension Component
- The Splitter control has been removed, and replaced by a new one in the QT
- The DrawingArea control has been optimized when cached, by directly using
Xlib methods instead of QT ones. The refresh seems to be twice faster !
- BUG: Window.Visible now works.
- The new Splitter control is now a container directly based on the QSplitter
- Many changes and many bug fixes in the database component and its interface.
- The slowness of seeking into SQL request with the mysql driver has been fixed.
0.55 - 05 May 2003
- Licence text is now separated from the authors list, so that translators can
- You can run the gambas database manager directly from the "Tools" menu.
- Some fixes and changes in the file/project/image selector.
- The database manager is now usable and almost terminated.
- A new subroutine Array() that returns a array. The type of the array depends on
the type of the first argument.
- A syntax shortcut for the previous subroutine is the use of square brackets.
See the EXEC example below.
- The EXEC instruction has been replaced by two instructions: EXEC and SHELL.
SHELL works like the old EXEC, by calling "/bin/sh" in the background.
EXEC runs the specified process directly, and takes all its arguments in
a string array.
EXEC [ "/usr/bin/ls", "-la" ] WAIT
- A new method on string arrays: Join(), that catenate each string in the array,
by adding an optional separator between the strings.
PRINT [ "a", "b", "c" ].Join("-")
- BUG: process management has been fixed, so that you can launch several processes
- A new property Process.State, that returns the state of a process: Stopped, Running
- A new property Process.Value to get the value returned by a process, or the signal
that was raised by a crash.
Qt Extension Component
- New methods Font.Width() and Font.Height() to get the dimensions of a text
displayed with a specified font.
- New property IconView.WordWrap.
- Shortcut management now works with QT 3.1 - until the next version of QT ;-)
- New control Splitter.
- A new control, TableView, to display large tables by extracting data on demand.
- MySQL driver is almost completed. There are some problems with user management
and large result sets yet.
- Many bug fixes. There are some problems yet:
- Don't use table names in uppercase with postgresql.
- Don't use user management with mysql.
0.54 - 21 Apr 2003
- BUG: I have fixed the bug in the gbi program that made the database driver
- A preview version of a new tool: the Gambas Database Manager. You can find
it in the app/gbdbmgr directory.
- When you import a translation, it is now merged with the current one, instead of
- BUG: the interprer could enter in an infinite loop at the end of a program
when releasing the loaded classes. The new algorithm do not loop anymore, but
there are problems yet.
- New method Object.Find()
- BUG: calling functions with a variable number of arguments was broken in the
- A new control: TableView
- New property TabStrip.Orientation, to define the tab position.
- New method TreeView.Item.Clear, to clear all children of an item.
- A new event to manage the wheel mouse: MouseWheel
- A new event to manage the context menu: Menu. You should use it instead of
the Click event with a test on the mouse button.
- A new event in GridView: Scroll, raised when the GridView has scrolled.
- A new API to manage databases and users. This API is subject to change,
depending on what the MySQL driver needs.
- You can access table definition with a real class named Table.
- New method Result.MoveTo()
- If you don't specify a database name in the Connection object, a default
database is opened in the PostgreSQL driver.
0.53 - 14 Apr 2003
- Translations were integrated: French, Italian and Dutch.
- In the configure scripts, the *.info files are generated in a way compatible with
systems having only /bin/sh.
- Use of "const char *" instead of "char *" in the interpreter and compiler source
code, in the hope of helping the compiler to optimize the code.
- Component descriptions are now stored in a unique file (/opt/gambas/lib/components)
These descriptions can be translated inside this file !
- A few new tips of the day.
- BUG: bug fixes in the translation dialog, and new functions.
- BUG: selecting controls inside a ScrollView works now.
- BUG: Menu editor displays menus list correctly now.
- Many changes to help porting on Solaris.
- Many changes to help porting on Solaris.
- A new property Application.Charset to get the charset used by the system.
- Collection now returns their elements in the order they have been inserted.
- BUG: the stack was corrupted when calling destructors, that lead to a crash when you
clicked on a form in the IDE just after having deleted a control.
- BUG: the locale management were fixed.
- BUG: The end of file is correctly detected in buffered streams now.
- BUG: The Conv$() now really works.
Gambas Editor Component
- The QT component is compatible with QT 3.1 now.
- TopOnly, a new Window property to compel a window to stay on top of the others.
- Fonts full name are now separated by commas and not spaces anymore.
- Picture.Pixels returns a useful color when dealing with alpha channel now.
It blends the opaque pixel color with a white background.
- A new API for manipulating the database structure, and its corresponding
implementation in the postgresql driver. Do not use this new API with mysql,
or everything will crash !
This API is still in beta version, and subject to change.
- The Database class has been renamed to Connection.
- Examples were recompiled, and corrected.
- The Console example were fix to deal with the different charsets.
0.52 - 30 Mar 2003
- Some Solaris specific stuffs are being integrated.
- BUG: Loading a form containing a unknown control class does not crash the IDE
anymore. The unknown control is simply replaced by a frame.
- Some little changes in the icon editor.
- Some fixes in the translation dialog.
- You can make source archives from the 'Project -> Make source archive...' menu.
- Object fields are reordered so that they are correctly aligned in memory,
because processors like SPARC cannot access 16 bits data at odd addresses,
- BUG: Translation file modification time are correctly managed now, so that they
are compiled if the source file has changed.
- Manage temporary files. All temporary files are located into '/tmp/gambas'.
- The new subroutine Temp$() returns a unique temporary file name.
- BUG: Language detection works on SuSE now.
- BUG: The use of QSizeGrip widget do not crash anymore on SuSE.
0.51 - 22 Mar 2003
- ./configure script detects correctly KDE 3 now.
- You can disable MySQL and/or PostgreSQL database drivers.
- Gambas is compiled without creating *.pot files owned by root user.
- Reworked translation dialog box.
- BUG: Errors raised into native methods could lead to memory leaks.
- TreeView, ListView and ColumnView items are now displayed by default in the order
they have been added.
- Resizable modal dialogs have an automatic resize grip now.
- BUG: when a modal dialog is displayed, you cannot close other windows anymore.
- MySQL driver optimizations.
0.50 - 16 Mar 2003
- WARNING: New projects are not compatible with older versions !
- Gambas projects are now translatable. This implied internal changes like using
UTF-8 charset, and so:
- Translations are stored into the '.lang' directory of the project.
- A new dialog used for translating projects.
- The entire IDE source code is translatable now.
- Non-ascii characters are not allowed in identifiers anymore. The '§' character
has been replaced by the '$' character.
- You mark strings that must be translated by enclosing them between braces.
- Internationalization management routines.
- Conv$(), a new subroutine for converting strings between different charsets.
- BUG: some bug that led to segfaults in class destructors were fixed.
- BUG: Dir$(), Exist() and Stat() work with relative paths now.
- Printing a positive number with PRINT does not print a space before anymore.
- Replacing latin1 charset by UTF-8 charset.
- BUG: setting an IconView item picture works now.
- BUG: RadioButtons should work correctly now.
- BUG: Menus stay disabled when you change their caption.
- A new ScrollBar property for TreeView, ListView and ColumnView controls.
- Optimizations in DCOP call marshaling.
- KDE application are automatically launched on a DCOP request if necessary.
- A new MySQL driver made by Nigel Gerrard. This is a beta version.
- BUG: You can use Find, Edit and Create with tables whose primary index is not
on the first fields of the table.
0.45 - 23 Feb 2003
- Gambas now compiles on RedHat 8.0 ! It was just a matter of linking with libgcc_s,
which is automatic on other distributions. Hum...
- There is a database component now ! It can only manage PostgreSQL at the moment.
- You can script KDE applications with Gambas ! This feature is based on DCOP.
There is an example named "Scripting" in the example directory, that let you
change wallpaper periodically.
- BUG: the .project file is now always putted first in the archive, so that
loading libraries at startup works.
- Native classes can intercept calls to unknown symbols. This is used by the KDE
component for DCOP calls.
- BUG: calling methods on objets created and returned by a function does not crash
anymore. Example: PRINT Split("a,b,c").Find("b")
- Native methods can have a variable number of arguments.
- BUG: Application.Path always returns a absolute path now.
- TODO: there are bugs in menu management that will be corrected in the next
- New classes to manage DCOP calls. See the Scripting example for more information.
- Hello world ! I'm looking for a guy who can write the MySQL driver...
0.44 - 02 Feb 2003
- QT moc files are not distributed anymore, so that Gambas compiles with new versions
of the QT library.
- A new file selection dialog made by Fabien Bodard has been integrated.
- Many dialogs to create forms, classes, modules, icons, directories and text files.
- Examples programs has been modified to use the new Array implementation.
- BUG: now you can define two labels with the same name in two different functions.
- BUG: evaluating expressions should work now.
- Constructor calling algorithm has been modified. Now each inherited class consumes
the arguments passed to the constructor. The child class gets the first arguments,
and the parent classes gets the following arguments not consumed by the previous
But note that the parent constructors are always called first !
- BUG: Trying to open a directory raises an error now.
- BUG: Labels have the correct alignment at creation now.
- Now you can embed forms into forms ! In other words, you can use forms like controls.
To embed a form, just adds the parent form to the constructor of the embedded form.
For example, if your form has a constructor with two arguments A and B, you embed it
by calling NEW MyForm(A, B, ParentForm)
- You can modify the internal picture cache, with Picture[Name] = ...
- You can flush the internal picture cache with the Picture.Flush() method.
- New event 'Cursor' for the TextArea control. It is raised when the cursor position
- BUG: now ComboBox controls do not intercept key shortcuts anymore in the form editor.
0.43 - 19 Jan 2003
- The optimization flag is now -Os. It seems that an interpreter compiled with -Os
is about 15% faster than an interpreter compiled without optimization.
- Changes in the icon editor.
- BUG: the mascot shows as specified at startup now.
- BUG: the debugger now intercepts errors raised during the initialization of a class
and before entering then Main() function.
Qt Gambas Editor
- Calling convention between interpreter and component have been rewritten. It is
now faster and has less memory footprint.
- The Array class has been replaced by faster specialized versions : Integer,
String, Date, Object and Variant.
- The String class Sort method accept an argument that specifies the algorithm
used for comparing data: binaray, case insensitive, or locale aware comparison.
- The FromString method of the Array class has been removed. Split() must be used
- Some changes and clean-ups in the Gambas Component API. The GB.Collection and
GB.Array methods have been written.
- Collection constructor accepts an optional argument to specify if the key matching
algorithm is case sensitive or not.
- The Editor is now a control.
0.42 - 10 Jan 2003
- Package uses "maintainer-mode" so that automake-1.4 is not required.
- KDE component is optional now. It is disabled by default, and you enable it
with the "--enable-kde-component" configure option.
- Some cosmetics changes in the component explorer.
- Some work and bug fixes in the icon editor.
- BUG: command-line interpretation is correct now.
- Memory management routines were reworked: GNU GLibC mcheck() and mtrace()
were used to verify that there is no memory leaks in the interpreter and the
- BUG: don't declare small functions inside functions anymore, as some compilers
don't like that.
- New properties: Draw.FillX and Draw.FillY, to specify the origin of the
brushes used to paint.
- New Methods: Picture.Flip, Picture.Rotate and Picture.Stretch to flip, rotate
and stretch pictures.
- BUG: You can close the last window during the execution of the Main() function
with no strange side effects anymore.
0.41 - 01 Jan 2003
- A new tool named 'gbi' has been created. It creates component information files
for the new component explorer.
- BUG: Some fixes in the debugger for components very long to load.
- A completely reworked component explorer.
- BUG: Mascot shows and hides correctly now.
- An internal icon editor. It have some bugs... ;-)
- BUG: you cannot put instructions between SELECT and the first CASE, nor have a
void SELECT statement anymore.
- New classes Libraries and Classes, and some virtual classes has been renamed.
- Component can be preloaded at startup. Alas, it does not change many things.
KDE shared libraries cannot be loaded with RTLD_LAZY without crashing.
- Default class method can be dynamic now.
- BUG: Split() does not modify its string argument anymore.
- New property Id in class Process.
- BUG: There was a stack leak in the array operator.
- The component is almost completely documented.
- Text selection interfaces are uniform now.
- Completely reworked Picture class: it can manage Pixmaps, Images and Metafiles now.
- New method HSV in class Color.
- DrawingArea redraws are automatically cached in a pixmap before being displayed,
- Many virtual classes has been renamed.
- In class TabStrip, properties Index and Current are distinct now.
- BUG: events Expand and Collapse were forgotten in ColumnView.
- HTML text in TextLabel can access files inside Gambas archives with a relative
0.40 - 22 Dec 2002
- An animated logo.
- You can configure the size of the handles in the form editor.
- BUG: Adding an icon to a menu works now.
- A toolbar on the main window.
- BUG: "Symbol already declared" error message corrected.
- BUG: calling an method on an anonymous object reference returns
a variant now, so that no optimization occurs, and consequently
no interpreter crash !
- BUG: The EXEC instruction does not hang anymore in some cases.
- BUG: WAIT waits the right duration now.
Qt Extension Component
- The IconView control.
- Reworked interface in TreeView, ListView and ColumnView.
- BUG: TextBox.Align works correctly now.
- You can rename nodes in TreeView, ListView and ColumnView.
- BUG: Window.X and Window.Y properties return the right value even
if the window is hidden.
- Quitting the application syncs with the X server now, so that pending
request are processed without displaying X11 error messages.
- BUG: Form close event is raised in every situation.
- Two new widgets in gb.qt.ext: ScrollBar and Slider.
0.39 - 02 Nov 2002
- Gambas is now developed under a Mandrake 9.0 with gcc 3.2
- configure script can now find QT stuff on a Gentoo distribution.
- Many common routines are really shared now, by using template files in the
"./src/share" source directory.
- The horrible Qt-3.0 hack has been definitely removed, thanks to the spontaneous()
method of the QEvent QT class.
- Toolbox has been rewritten so that it can handle controls added by components.
- Debugger has been completely rewritten. It can watch expressions now !
- Project properties dialog has been redrawn, and has a "Apply" button.
- Form editor can display a grid.
- Property dialog can handle FLOAT properties.
- IDE now works when a project path contains spaces.
- Control icons are now stored in gambas installation directory.
By default: /opt/gambas/lib/control
- BUG: Corrected a bug in buffer management routines that lead to a crash when a
string constant was too long (more than 255 characters)
- BUG: Corrected a bug in symbol table management routines that prevent the compiler
to store strings greater than 255 characters in output files.
- You can instanciate classes dynamically now, with the following syntax:
sClassName = "Button"
MyCollection = NEW(sClassName, hParent)
- New property: Application.Id
- BUG: WAIT now works as expected.
- Debugger can evaluate expressions.
- One can instanciate classes dynamically.
- BUG: a bug has been fixed in inheritance management.
- BUG: a bug has been fixed in function signature management.
Qt Gambas Editor
- Clipping management in Draw class.
- New property: TextArea.Wrap
- Reworked Control.Mouse property.
- New property: Window.Mask. With this property, windows can have any shape !
- Reworked TextBox, ComboBox and TextArea interface.
- Cosmetic changes in the editor.
0.38 - 04 Sep 2002
- The "Snap to grid" is now a property of the project.
- New welcome dialog.
- Many nice little icons in every menu.
- "Tips of the day" dialog.
- New dialogs for creating modules, classes and forms.
- A new dialog for editing the values of ListBox and ComboBox controls.
- BUG: the error messages are correct now.
- BUG: sometimes exceptions could crash the interpreter by incorrectly releasing
the return value of functions. Corrected.
- CStr(0.0) now returns "0" and not "0.E+" anymore.
- You can always cast objects to their real types now.
- BUG: Events raised by a user class define the LAST keyword now.
- Reworking of many widgets interfaces. This rework is not complete yet !
- A new widget: TextLabel, that is a Label displaying rich text.
- The Key class can transform key name into key code with the array operator.
- Menu can have icons.
- Buttons with a picture and no text center their picture now.
- SaveFile dialog now accepts a file name. The bug of Qt 2.X have been corrected !
- The Picture class can manage SVG files now ! Its interface has gained a Type property
and behaves a bit differently.
- ListBox have a Sorted property instead of a Sort method.
- ListBox and ComboBox have a Find method.
- ColumnView has a Header property to show or hide its header.
0.37 - 10 Oct 2002
- The QT component have been ported to QT 3.0.x ! Because of internal changes in
event management, the port was very difficult. I was compeled to make an HORRIBLE
hack for that to work. This hack is the "my_qobject.h" file in ./src/lib/qt :-(
and the new MyApplication methods in ./src/lib/qt/main.cpp
- There is a new component: gb.eval. This component is used to evaluate expressions
at execution time. There is an example name "Evaluator" in ./examples
- BUG: The component explorer shows the classes of the components used by the
- BUG: The help for inherited methods or properties now display correctly.
- A new method Array.Find, to find the position of an element in an array of strings.
- When you do not specify the family name in a font, the default font family is used.
It is the same for the font size.
- The ProgressBar widget interface has changed.
- The TextArea widget has lost some of its properties, due to the QT 3.0.x port.
0.36 - 28 Jul 2002
- This package uses GNU libtool and libltdl now to compile plug-ins. The consequences
are the following :
- The plug-in file names have the ".la" extension instead of ".so", and begin with
"lib.". For example, "gb.qt.so" is now "lib.gb.qt.la".
- The plug-in system should work on many other unices than Linux.
- The package is bigger.
- Adrian Schroeter, from SuSE, sent me a patch to fix some problems with gcc 3.1,
automake 1.6 and 64 bits architectures. Everything was integrated, except the removal
of the PACKED directive, that broke the class loader.
- BUG: Now you can change a source editor color to black.
- BUG: code editor repaints when resizing are correct again.
- The Message() subroutine has been removed.
- You can pass a size when you create an Array. For example, you can do
MyArray = NEW Array(12) to get a array with 12 empty slots.
- Internal class values are automatically converted to class objects if needed.
- The Message() subroutine has been removed.
- BUG: the bug that prevented the button to appear in the IDE property sheet has benn
- As the Message() subroutine has been removed, there is a new class, Message, to display
- The Clipboard interface has been completely rewritten.
- The Printer class. This class is experimental, as the QPrinter class of QT 2 has some
problems. Everything will be solved when the QT component will be converted to QT 3 !
0.35 - 23 Jul 2002
- Component classes and symbols can now be described by a text file.
- This file must have the name of the shared library, with the extension ".help"
instead of ".so".
- They are placed in the "/lib/help" directory of the installation.
- They can be translated. A translated file must be placed in a sub-directory of
"/lib/help". The name of the subdirectory must be then name of the language.
For example, a french translated help file will be placed under "/lib/help/fr".
- Control handles are now visible on a black background in the form editor.
- Comment / uncomment blocks in the code editor.
- Cut/Copy/Paste/Undo/Redo now works in code editor popup menu.
- Reworked component explorer.
- Clicking with the right mouse button in the form editor now select widgets.
- Reworked project properties form.
- BUG: Changing grid property now works (it was the Val() bug fault).
- Two new functions: LTrim$() and RTrim$().
- The Library class, used to load components and get information about them.
- New property: Application.User.
- BUG: Val() should work correctly now (at last !).
- Reworked constructor calling with inherited classes.
- BUG: Open() really likes the TRY instruction now !
- Mkdir() and Rmdir() are now instructions.
- A new widget: ColumnView (a listview with columns).
- FIX: X and Y properties of hidden windows are now correct.
- Window.Border property can be "None" now. Not very well tested.
- New property: Window.State, to show the window normal, minimized, maximized,
or even in full-screen mode. Not very well tested too :-(
- New property: DrawingArea.TrackMouse, to get mouse move events even if no
mouse button is pressed.
0.34 - 13 Jul 2002
- Examples are located in their own directory.
- Three example programs : a notepad, an image viewer and a console.
- Components are now located in their own directory (/lib).
- A new option in ./configure to enable profiling.
- All project files are now named ".project". The name of the project comes from the
name of its directory.
- You must pass the project directory to gbc, gba and gbx now, not the project file.
- If no project directory is passed to gbc, gba or gbx, the current directory is
- A new event in the Gambas editor, in order to show cursor coordinates.
- BUG: Replace should work correctly now.
- Reworked interface for creating and opening projects.
- A nice (?) dialog at program starting.
- BUG: Menu editor should not crash anymore.
- File.Name ignores a trailing slash on its path parameter. In other words,
File.Name("/home/benoit") == File.Name("/home/benoit/")
- A process does not send Write or Error events anymore, when it has been stopped by
the Kill method.
- A killed process detach itself from its parent.
- BUGS: Many bugs corrected in the Val() function.
- BUG: Chr$() could crash the interpreter. Fixed.
- BUG: OPEN supports being TRY-ied now, without memory leaks.
- The SWAP instruction : it swaps two variables by using the stack.
- The DrawingArea widget, with a pretty Cached property.
- The ProgressBar widget.
- Headers were rewritten so that warnings are avoided in other compilers than mine.
- Border property were rewritten, so that Border.Sunken and Border.Raised look nicer
(in my own opinion).
- BUG: corrected something in Menu widget, so that menu editor in IDE does not crash
- Picture.Save method. Not tested !
0.33 - 27 Jun 2002
- Use -O2 instead of -O3 for optimized compilation. I do not trust -O3...
- BUG: Class explorer was broken by class List changes of 0.32. Corrected.
- BUG: "Replace All" in Find dialog works correctly now.
- The error management instructions TRY, CATCH, FINALLY should work correctly
now. They should not left pending references to objects.
- The object referencement has been completly rewritten to deal with error
- The string allocation routines has been completly rewritten for the same
- The class Error was completed with new properties and methods.
- New property Application.Name that returns the name of the project.
- BUG: instanciate static classes correctly raises errors now.
- FIX: Message boxes uses the application Name now.
0.32 - 14 Jun 2002
- BUG: setting a breakpoint was broken in 0.31. Corrected.
- BUG: menu editor was broken in 0.31. Corrected.
- Native classes can be overloaded. For example, the gb.qt component
overload the built-in Application class, and adds it three properties.
- BUG: strings generated by Replace() and Subst() were not null terminated.
- BUG: loop management was buggy in 0.31.
- ListBox and ComboBox interface has been redesigned.
- New List property that allows to define each element of a ListBox or a ComboBox.
- Screen class has been replaced by Desktop class and a overloaded Application class.
0.31 - 12 Jun 2002
- Should compile under system where both QT2 and QT3 are installed.
- You can stop (not pause !) a debugged program anytime.
- Completly reworked string management.
- SEEK can takes a negative parameter for seeking from the end of the file.
- BUG: SEEK instruction compiles now.
- BUG: ScrollView does not crash anymore when you removed its last child.
- BUG: Menu events are posted rather than immediately sent. So, the form editor
does not crash anymore when you delete a container from the popup menu !
0.30 - 31 May 2002
- Project configuration and IDE configuration.
- IDE windows save their position and size.
- Opening recent files.
- BUG: Breakpoint management is almost correct.
- BUG: Text properties can contain special characters.
- Clicking on a menu in the IDE opens the source editor in an event procedure.
- You can open any event procedure via the popup menu in the form editor.
- Deleting project files.
- Renaming project files.
- BUG: Check that the startup class is defined before running the project.
- New instructions: QUIT, STOP, EXEC.
- New subroutines: Split(), If(), Choose(), Replace$().
- New property Collection.Key, that gives the key of the last extracted collection
- Process management routines reworked.
- Components can register 'post routines' executed as soon as possible by the event
loop. Very practical in signal handlers, because interpreters routines are not
- BUG: "read-only property" error message corrected.
- Project stack size is used.
- BUG: NOT works with variants now.
- New instructions: QUIT, STOP, EXEC, INC, DEC.
- Some subroutines become instructions: RENAME, KILL
Qt Gambas Editor
- BUG: CheckBox raises Click event in all cases now.
- New ScrollView container.
- New method TreeView.Exist.
- The event loop quits when there is no opened windows nor running process left now.
- New ToolTip property for every control.
- BUG: modal windows do not send Close event twice anymore.
- Optimizations in syntax colouring.
- Some code cleanup. (There is a lot to do yet)
0.25 - 19 May 2002
- Debugger should be usable now ! :-p
- Double-clicking on a control automatically opens the source editor in
an event procedure.
- Some little bugs corrected.
- BUG: Date management routines where buggy ! Corrected.
- BUG: conversion from variant to date works now.
- The first created window becomes the "main" window now. The main window
receives automatically menu shortcuts from every other non-modal window.
- BUG: Reading Text property from a TextArea is safe now.
- New properties in TextArea control : Cut, Copy, Paste, Undo & Redo.
Same thing must be done with the TextBox control.
0.24 - 14 May 2002
- The Debugger, and many other things...
- Complete debugging information
- Internal debugger
- Process Management class
- BUG: Hex$() and Bin$() with no precision specified work now
- BUG: Objects that raise events now detach automatically at the end of the program.
This removes the circular dependancy with their parent, and so memory is freed.
- Do not save stack frames with local variables. So the virtual machine register PP
is no more useful.
- The Node class is renamed as Item.
- The ListView class.
- BUG: the "after" parameter of TreeView.Add works now.
- BUG: deleting item in TreeView works now.
- The TreeView.Mode property has constants now.
- The TreeView.Sorted property
- BUG: TreeView raises the Click event in all circumstance now.
- BUG: Window raises the first Move and Raise events when shown.
0.23 - 07 Apr 2002
- New "About" dialog
- The "Find" dialog is finished, but the regular expression
- More shortcuts to the Menu editor.
- The Timer control
- Archiver is verbose only if the -v option is specified
- Subroutines names can be used as class names
- An undeclared symbol is supposed to be a class when its first character is an
- You can write expressions on several lines, provided that each line break directly
follows an operator
- "List" class renamed as "Array"
- A class can be used as a function, if it has a public method named "_call"
- Rewritten stack management routine. The old one was totally broken. The new
one is a simple fixed size memory allocation.
- The NOT operator can deal with String and Object datatypes
- Instr() and RInstr() work now.
- BUG: Many string subroutines freed their string parameters before using them
- Buttons can have pixmap AND text now.
- The Timer control
- Every container has a ClientX and ClientY property.
- Image has a Alignment property.
- Menubar with no menu disappears now.
- Screen has a Busy property.
- BUG: new Control event management filter, that deals with objects being destroyed.
- A Center method, to center windows on screen.
- Correct bugs in undo/redo text indents.
0.22 - 18 Mar 2002
- New algorithm to search QT librairies. Should work under SuSE 7.3
- The Font property can be resetted to its default value.
- Windows can have an icon now.
- New property "Home" to the App class that returns the user home
- New icons for project files.
- BUG: correct a bug that sometimes freed return values twice.
- BUG: correct a bug that crashed the interpreter when a null value
was passed to a string management routine.
- The Button and ToggleButton classes are now totally distinct.
- BUG: go round a bug in QT Table widget that caused infinite loops
in interpreter event management.
- Modal dialog windows can return a integer or boolean value to ShowModal()
by passing it as parameter to the Close() method.
- BUG: correct a bug in QT interface declaration that randomly crashed
- Many changes in development environment (open project dialog, save file
0.21 - 04 Mar 2002
- Remove the absolute path of a library in the gambas.project file, so that
not installing Gambas under "/opt/gambas" is possible.
- BUG: correct a bug that sometime crashed the compiler when you use long
integer constant (like a color in a form).
- Add ToggleButton to development environment.
- Standardize interface of TextBox, GambasEditor and ComboBox controls.
- Project properties dialog is working.
One can define the startup class of the project.
- The "Default" property of a Button control works now.
- Add a "Cancel" property to the Button control.
- Remove useless "Format" property from the Clipboard class.
0.20 - 28 Feb 2002
- Yeah ! First public release !