Gambas Documentation - /doc/release/2.99.2

/doc/release/2.99.2

# Gambas 3 RC2

- What's new

- ChangeLog

- Requirements

- Compilation & Installation

  - Check installation

  - Source package configuration

  - Compilation

  - Installation

  - Troubleshooting

  - Running Gambas

## What's new

This release is the second release candidate of Gambas 3.

More than one hundred bugs were fixed everywhere, and the following new features were implemented:

- A new Lithuanian translation.

- The CSV import is more clever.

- The menu editor has been redesigned.

- The code formatter has been enhanced.

- Many new OpenGL examples were added.

- A new control, DataComboView, that replaces the old DataComboMulti.

- Exist now takes a new optional boolean argument, that tells the interpreter if symbolic links must be followed or not.

- The Application.Return property has been removed. Now, to define the process exit value, just return it from the Main function.

- MySQL 5 BIT field datatype is supported.

- Support for the https protocol in the HttpClient class.

- Support for any mime type and any charset in SmtpClient.

- A lot of new functions were added to the OpenGL components.

- Support for fade in and fade out in the gb.sdl.sound component.

As usual, please report any compilation and packaging problem on the mailing-list!

Thanks in advance.

## ChangeLog

    [CONFIGURATION]
    * BUG: Remove generated ltmain.sh files.
    * NEW: Update FSF address in every source file.

    [DEVELOPMENT ENVIRONMENT]
    * BUG: Fix keyboard handling in editor procedure list.
    * BUG: In the procedure list, finding a procedure by typing its name
      correctly scrolls the list.
    * BUG: Classes coming from libraries are correctly taken into account in
      automatic completion now.
    * BUG: Fix the layout of the help window the first time it is shown.
    * BUG: Don't fail when there is no IDE settings file yet.
    * BUG: When loading a Gambas 2 project, GridView.Data BackColor and
      ForeColor properties are correctly converted.
    * BUG: Fix Autotools project packaging.
    * BUG: Autotools project packaging cannot handle extra packages
      dependencies.
    * BUG: Autotools project packaging does not handle extra files
      dependencies yet. It will be fixed later.
    * BUG: Fix loading of old Gambas 3 projects without ".src" directory.
    * BUG: Multi-dimensional arrays are now correctly displayed by the
      debugger.
    * BUG: Circular inheritance does not freeze the automatic completion
      anymore.
    * BUG: Do not hide balloon message displayed on the project tree
      immediately.
    * BUG: Do not increment the version release number anymore when making an
      installation package.
    * BUG: Remove the "Show toolbox" menu entry. Its behaviour was not
      intuitive at all.
    * BUG: Clicking on a void index table in the database editor does not crash
      anymore.
    * BUG: Add missing pkgdesc entry in the PKGBUILD.
    * BUG: Don't crash when scanning a class, if that class inherits a form.
    * BUG: Starting a new search automatically resets the search list.
    * BUG: Double-clicking on a control while the project is running does not
      try to insert an event handler anymore.
    * BUG: Hidden exported classes cannot be controls!
    * BUG: Modifying table fields and indexes many times now works correctly.
    * BUG: Fix drag & drop between two IDE windows.
    * NEW: The recent files list should be correctly refreshed now if another
      Gambas instance updates it.
    * NEW: Czech translation updated.
    * NEW: Lithuanian translation made by Regimantas Baublys.
    * NEW: Add support for latin language.
    * NEW: Use the new Application.ShowTooltips property.
    * NEW: Update Catalan translation.
    * NEW: The database editor now can export table data and request results to
      CSV files.
    * NEW: Handle the "_property" special method in automatic completion.
    * NEW: Change default code snippets.
    * NEW: Hitting ENTER inside a comment line automatically begins a new
      comment line. Using SHIFT disables that feature.
    * NEW: "Pretty print" is now "Format code".
    * NEW: New option tab the code formatter in the option dialog.
    * NEW: An option to format code when loading or saving a file.
    * NEW: The menu editor has been redesigned.
    * NEW: Pretty printer now acts on selected text.
    * NEW: CSV import and automatic field conversion now can deal with both
      localized and non-localized data (i.e. floating point numbers with point
      or comma).

    [WIKI CGI SCRIPT]
    * BUG: The front page now is correctly version dependant.
    * BUG: Do not add "v3" at the end of a link that has "v2" explicitely.
    * NEW: Use a combo-box now for selecting the current version.
    * NEW: Update Catalan translation.
    * NEW: Automatic OpenGL documentation.

    [WEB SITE MAKER]
    * NEW: Activate the Gambas 3 download button.
    * NEW: Czech translation updated.
    * NEW: Update for Gambas 2.23.1.

    [EXAMPLES]
    * BUG: Remove printing from BarCode example, it does not work anymore.
    * NEW: A new example based on the GNU Scientific Library, made by Juergen
      Zdero and modified by me.
    * NEW: Lighttable: menu added for opening a new folder.
    * NEW: Update Catalan translation of few examples.
    * NEW: Add the NeHe OpenGL examples compiled by Kevin Fishburne. There are
      two projects: one that includes all examples, and another one that is
      a GUI shell for compiling and running those examples.
    * NEW: Use the new OpenGL constants names in OpenGL examples.
    * NEW: Add the forgotten TunnelSDL example.
    * NEW: Use the new OpenGL constants names in the 3DWebCam example.

    [INTERPRETER]
    * BUG: Recursive release of pending objects at program's end is more robust
      now.
    * BUG: Using "AM/PM" in date format does not confuse next date to string
      conversions anymore.
    * BUG: Fix conversion from floating point number to date when the number is
      negative.
    * BUG: Eval("Me") does not crash anymore.
    * BUG: [...] now correctly returns a boolean array when its arguments are
      all booleans.
    * BUG: Fix a possible memory leak if the [...] array creation operator
      fails for any reason.
    * BUG: Write and Read instructions now deal with NULL values without crashing.
    * BUG: Translatable string constants are now correctly translated when they
      are used as public symbols.
    * BUG: Fix escaped characters handling in date format strings.
    * NEW: Stream.Lines is a new property that allows to enumerate a stream
      line by line until end of stream is reached.
    * NEW: '_property' is a new special method that must return TRUE when an
      unknown symbol (stored in Param.Name) is a property. If that special
      method is not implemented, all unknown symbols are methods.
    * NEW: Remove the deprecated constant gb.Text.
    * NEW: Param.Property has been removed.
    * NEW: Remove the GB.IsProperty() API, that is useless now.
    * NEW: Byte[].FromString() is now a static method that creates a new byte
      array from a string.
    * NEW: Remove the unused GB.ExistFile() API.
    * NEW: Exist() now takes an additional optional boolean argument that tells
      if symbolic links must be followed, like Stat().
    * NEW: Remove useless Qt 3 shared library preloading support.
    * NEW: Support for profiling. Not activated.
    * NEW: Centralize signal handler management.
    * NEW: The Main startup function now can return a value. If that value is
      an integer or a boolean, then it will be the exit value returned to the
      parent process.
    * NEW: The Application.Return property has been removed.
    * NEW: Be more robust with native method signatures that forget the ';' at
      the end of a class name, provided that a brace follows.
    * NEW: Abort if a native class declares the same symbol twice.
    * NEW: Two more standard error messages declared in gambas.h

    [COMPILER]
    * NEW: Handle the new '_property' special method. That method must be
      public, dynamic, takes no argument, and must return a boolean.

    [ARCHIVER]
    * NEW: Don't abort if the executable flags of the resulting file cannot be
      set, because the file system has been mounted with the "noexec" flag (for
      example).

    [SCRIPTER]
    * BUG: Don't require /tmp to allow executable files.
    * BUG: Running a script now correctly returns the value specified by
      the Application.Return property.
    * NEW: The name of a cached compile script is now the name of the original
      script stored in a directory whose name is the MD5 sum.
    * NEW: Use the new way of defining the process exit value.

    [GB.DB]
    * BUG: Type mismatch error is correctly raised now when setting the value
      of a Result field.

    [GB.DB.FORM]
    * NEW: DataSource.Count is a new property that returns the number of
      records of the DataSource.
    * NEW: Replace the DataComboMulti control by a DataComboView control. It is
      not completely well tested, but it works better than its predecessor.
    * NEW: Data controls icons were redesigned.
    * NEW: Do not resize automatically the rows in DataView.
    * NEW: In Dataview, only resize the current row.

    [GB.DB.MYSQL]
    * BUG: When creating a table, use "ENGINE" keyword instead of "TYPE" with
      MySQL >= 4.0.18.
    * NEW: Support for MySQL 5 BIT(x) field datatype.

    [GB.DB.ODBC]
    * BUG: Fix a stupid crash that occurs on 64 bits systems only.

    [GB.DBUS]
    * BUG: Use the new special method _property to implement DBus properties.
    * BUG: Settings a DBus property does not freeze anymore. But there is
      memory leak yet.
    * BUG: Fix a memory leak when sending a DBusVariant object.
    * NEW: Add a DBusConnection.Unregister method to unregister a Gambas object
      from the bus. When all objects are unregistered, the application can
      quit.

    [GB.FORM]
    * BUG: Fix drawing of colorized dates in the DateChooser control.
    * BUG: Wizard containers is now an exported hidden class, so that
      automatic completion works in the IDE.
    * BUG: Setting the ScrollArea.Painted property works correctly now.
    * BUG: Really fix the problem with ScrollArea having the Painted property
      set.
    * BUG: IconView MoveFirst(), MoveNext(), MovePrevious() and MoveTo()
      methods now correctly return TRUE when no item is available.
    * NEW: Add an "open in file manager" action in FileChooser and DirChooser
      controls, when the gb.desktop component is loaded.
    * NEW: Czech translation update
    * NEW: Update Catalan translation.
    * NEW: IconPanel now automatically resizes the left panel to fit its
      contents.
    * NEW: The IconPanel left panel now correctly resizes itself to fit its
      contents.
    * NEW: IconPanel takes the mouse wheel into account now.

    [GB.FORM.DIALOG]
    * NEW: Czech translation update
    * NEW: Update Catalan translation.

    [GB.GTK]
    * BUG: Remove some debugging stuff in the Printer class.
    * BUG: Correctly raise Show and Hide events in the Watcher class.
    * BUG: Application.ShowTooltips really works now, and apparently it is not
      desktop-wide, but application-wide as expected.
    * BUG: Clean up the MovieBox implementation.
    * BUG: Clean up the PictureBox implementation.
    * BUG: Fix the PictureBox aligment property.
    * BUG: The Printer End event is correctly raised now.
    * BUG: Fix a crash in GridView when the gb.gtk component shared library is
      freed.
    * BUG: Fix two crashes in GridView control.
    * BUG: Compile again with GTK+ 2.x.
    * BUG: Fix how popup windows are displayed.
    * NEW: The Application.Tooltip virtual class has been removed.
    * NEW: Application.ShowTooltips is a new property to define if tooltips are
      visible or not.
    * NEW: MovieBox.Alignment is a new property that defines the alignment of
      the movie inside the MovieBox frame.
    * NEW: GridView.Columns[].Expand is a new property that allows to define if
      a column automatically expands to fit the GridView visible width,
      provided that the GridView.AutoResize property is set. If no column has
      its Expand property set, then the last column will expand anyway.
    * NEW: Remove the Window.Type property and the WindowType class.

    [GB.IMAGE]
    * BUG: Image.PaintImage() incorrectly handled alpha channel compositing.

    [GB.NET.CURL]
    * BUG: Fix HttpClient URL property.
    * BUG: HttpClient.Post and HttpClient.Put are now more tolerant when
      checking the Content-Type validity.
    * BUG: Refuse void URLs in HttpClient and FtpClient.
    * NEW: Support for the https protocol in the HTTP client.
    * NEW: The default HttpClient user-agent string is now (on Linux):
      "Gambas/3.0 (gb.net.curl; Linux)"

    [GB.NET.SMTP]
    * BUG: Search openssl in '/usr/bin' or '/bin', and raise an error if it is
      not found.
    * BUG: Don't crash if the subject is void.
    * NEW: Allow the subject to be a void string.
    * NEW: Support for any mime type and any charset in SmtpClient.

    [GB.OPENGL]
    * BUG: No need to search for glu.h file.
    * BUG: Use pkg-config to detect needed libraries, should fix building on OSX.
    * BUG: Restore prefix GL in glew header inclusion for debian based packages.
    * BUG: Correctly specify the number of color components when using an Image
      in an OpenGL function: glTexImage1D, glTexImage2D, gluBuild2DMipmaps...
    * BUG: In GLeval.c changed GB_SINGLE to GB_FLOAT to make Gl2Map work.
    * BUG: Three constants and methods had the same name. So I added an
      underscore to these constants to fix that. Now you must use GL.ACCUM_,
      GL_CLEAR_, and GL_VIEWPORT_.
    * BUG: Doubled definition of TEXTURE_RECTANGLE_ARB - removed one.
    * NEW: Add support for GL evaluators, some associated Gets are missing.
      (Tomek)
    * NEW: Gl.CheckExtensions() to check the openGL driver extensions/ability
      support.
    * NEW: Multitexture mapping constants and gl.ActiveTexture function.
    * NEW: Add some FramebufferObject extension functions.
    * NEW: Add all constants for GL_EXT_framebufferobject extension
    * NEW: Remove "GL_" from the constant names in the Gl class. The old
      constant names are supported, but emit a warning message.
    * NEW: Add methods Gl.BindRenderbufferEXT(), Gl.GenRenderbuffersEXT() and
      Gl.IsRenderbufferEXT().
    * NEW: Add Gl.DeleteFramebuffersEXT(), Gl.DeleteRenderbuffersEXT(),
      Gl.IsFramebufferEXT() and Gl.RenderbufferStorageEXT() methods.
    * NEW: Add Gl.FramebufferRenderbufferEXT(), Gl.FramebufferTexture1DEXT(),
      Gl.FramebufferTexture3DEXT(), Gl.GenerateMipmapEXT(),
      Gl.GetFramebufferAttachmentParameterivEXT(),
      Gl.GetRenderbufferParameterivEXT() methods.
    * NEW: Add support for GL_ARB_texture_rectangle extension.
    * NEW: Add Gl.EvalCoord2fv() evaluator method.
    * NEW: glTexGen and glMultiTexcoord functions.

    [GB.OPENGL.GLSL]
    * BUG: Restore prefix GL in glew header inclusion for debian based packages.
    * BUG: Remove FramebufferObject extension functions from glsl component.
    * NEW: GLSL attribute variable definition and setting functions.

    [GB.OPENGL.GLU]
    * NEW: Nurbs functions.
    * NEW: Basic quadratic shapes (sphere, cylinder, cone, disk).
    * NEW: Remove "GLU_" prefix from GLU constants.
    * NEW: Add many GLU constants used by the GLU methods implemented in the
      component.
    * NEW: Add Glu.QuadricOrientation() and Glu.QuadricDrawStyle() methods.

    [GB.PDF]
    * BUG: Make gb.pdf compile with poppler 0.17.

    [GB.QT4]
    * BUG: GridView default background and foreground colors are correctly
      taken into account now.
    * NEW: The Application.Tooltip virtual class has been removed.
    * NEW: Application.ShowTooltips is a new property to define if tooltips are
      visible or not.
    * NEW: MovieBox.Alignment is a new property that defines the alignment of
      the movie inside the MovieBox frame.
    * NEW: GridView.Columns[].Expand is a new property that allows to define if
      a column automatically expands to fit the GridView visible width,
      provided that the GridView.AutoResize property is set. If no column has
      its Expand property set, then the last column will expand anyway.
    * NEW: Remove the Window.Type property and the WindowType class.

    [GB.QT4.EXT]
    * BUG: Fix how the cursor is ensured to be visible in the Editor class.
    * BUG: Some fixes in the undo/redo management of the Editor class.
    * BUG: Fix an uninitialized variable in GEditor class.
    * BUG: Fix undo/redo management in Editor control.
    * BUG: In Editor, fix handling of text lines having non-ascii characters
      inside.

    [GB.REPORT]
    * NEW: Czech translation update
    * NEW: Add Catalan translation.

    [GB.SDL]
    * BUG: Enable stencil buffer support.
    * BUG: Use pkg-config to properly detect dependencies.
    * BUG: Restore prefix GL in glew header inclusion for debian based packages.
    * BUG: SDL_ttf prior to 2.0.10 doesn't provide pkg-config file, so add manual checking of files.
    * BUG: Add missing linking against libXcursor.
    * BUG: fix a typo in configure.ac
    * BUG: Redesign the way keyboard events are processed, so that SDL
      constants are used. Consequently, all Key constants now work, but '1' and
      '&' have different codes on a french keyboard. Key.Text works too.
    * BUG: Key[x] works correctly with letter keys now.
    * NEW: Key.Repeat is a new static property for enabling keyboard
      repetition.

    [GB.SDL.SOUND]
    * BUG: Allocating more than 8 channels now works correctly.
    * NEW: Implement support for fade in and fade out in the Sound and Channel
      classes.
    * NEW: The maximum number of channels is now 64.

    [GB.SETTINGS]
    * BUG: Use a lock to prevent simultaneous writings of the same settings
      file.
    * NEW: The Settings.Path property has been renamed as Settings.DefaultDir.
    * NEW: Now Settings.Path returns the path of the settings file on the disk.

    [GB.WEB]
    * BUG: JSON.Decode() now returns NULL if there is no token in the input
      string.

## Requirements

To compile Gambas, you must install the following libraries on your system :

Component | Requirements
--- | ---
Compilation | `gcc` `g++` `automake` `autoconf` `libtool > 2.0`
Interpreter | `libffi`
`gb.compress.bzlib2` | `libbz2.so`
`gb.compress.zlib` | `libz.so`
`gb.cairo` | `cairo`
`gb.crypt` | `libcrypt.so`
`gb.db.mysql` | `libmysqlclient.so`, `libz.so`
`gb.db.odbc` | `libodbc.so`
`gb.db.postgresql` | `libpq.so`
`gb.db.sqlite2` | `libsqlite.so`
`gb.db.sqlite3` | `libsqlite3.so`
`gb.desktop` | `libXtst.so`
`gb.gtk` | All GTK+ libraries >= 2.10 `librsvg2.so` `cairo`
`gb.image.io` | `gdk-pixbuf`
`gb.image.imlib` | `imlib`
`gb.net.curl` | `libcurl.so`
`gb.opengl` `gb.opengl.glsl` | `libGL.so`, `libGLEW.so`
`gb.opengl.glu` | `libGLU.so`
`gb.pcre` | `libpcre.so`
`gb.pdf` | `libpoppler.so`
`gb.qt4` `gb.qt4.ext` `gb.qt4.opengl` `gb.qt4.webkit` | All qt 4 libraries >= Qt 4.5
`gb.sdl` | `libSDL.so`, `libSDL_ttf.so`, `libGL.so`, `libGLEW.so`
`gb.sdl.sound` | `libSDL.so`, `libSDL_mixer.so`
`gb.v4l` | `libjpeg.so`, `libpng.so`,Video4Linux >= 2.0
`gb.xml` | `libxml-2.0`
`gb.xml.xslt` | `libxslt`

And do not forget to install all related development packages!

Try to always use a recent version of these libraries.

In order to compile the development environment, you have to compile the following components:

- gb.db

- gb.db.form

- gb.debug

- gb.desktop

- gb.eval

- gb.eval.highlight

- gb.form

- gb.form.dialog

- gb.form.mdi

- gb.image

- gb.image.effect

- gb.qt4

- gb.qt4.ext

- gb.qt4.webkit

- gb.settings

You must have the right to write to `/tmp`, otherwise Gambas will not work.

This package was done with the following versions of GNU tools on Ubuntu 10.10:

- `automake` 1.11.1

- `autoconf` 2.67

- `libtool` 2.2.6b

## Compilation & Installation

### Check installation

First, check that you installed all the needed libraries, and especially all the development packages.

Do not forget to look at the Compilation & Installation page. Maybe you will find important information specific to your distribution.

### Source package configuration

When you are sure that everything is installed, type the following magic sentences in a shell.

`'$'` represents your shell prompt, and `'...'` are the messages printed during the configuration and compilation.

First, type that to create the configuration scripts.

    $ ./reconf-all

Then type that to analyze the current system and configure the package:

    $ ./configure -C
    ...

If a library or a development package is missing, then you will be warned that some components are disabled.

There are more 'configure' specific explanations in the `INSTALL` file located in the top-level source directory. I invite you to read them.

### Compilation

If everything is configured without error, then run this command to compile the program:

    $ make
    ...

### Installation

If everything compiles without error, then enter this command to install everything:

You must be `root` to install Gambas on your system.

    $ su -c "make install"
    Password: <Type the root password here>
    ...

or

    $ sudo make install
    Password: <Type your password here>
    ...

### Troubleshooting

If you did several successive compilations, after having updated the source from the subversion repository for example, and if something fails during all this process, you can try to "reconfigure" the configuration scripts by typing the following command:

    $ ./reconf-all

Then you can run `./configure -C` again

If it does not work, I need to know what happened exactly. To do so, type the following command :

    $ ( ./configure -C; make; make install ) > output.txt 2>&1

And send me the file "output.txt" by mail, with every other detail about your computer and your distribution you find useful.

### Running Gambas

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

Enjoy it !

### See also

- Compilation & Installation