Gambas Documentation - /doc/release/2.99.3

/doc/release/2.99.3

# Gambas 3 RC3

- What's new

- ChangeLog

- Requirements

- Compilation & Installation

  - Check installation

  - Source package configuration

  - Compilation

  - Installation

  - Troubleshooting

  - Running Gambas

## What's new

This release is the third release candidate of Gambas 3.

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

- Two new menu entries in code editor and text editor to switch selected text to upper case or lower case.

- Two new functions added to the form editor: embedding the selected controls inside a newly created container, and removing a container without removing the children.

- The interpreter is now strict when checking symbol overrides through inheritance.

- Support for LXDE desktop in the gb.desktop component.

- Desktop.RunAsRoot() runs a command as root, by using the graphical "su" utility of the current desktop.

- The Action class has been optimized, making the IDE start faster.

- Proxy configuration in gb.qt4.webkit.

- A new method to evaluate JavaScript in the WebView control.

- WebView.UserAgent is a new property to define a custom user agent string for a specific WebView control.

- Support for HttpOnly cookies in gb.web 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.

    [DEVELOPMENT ENVIRONMENT]
    * BUG: Comments are not automatically inserted anymore when we are at the
      beginning of the line.
    * BUG: Searching in the menu editor does not crash anymore.
    * BUG: Deleting menus in the menu editor works correctly again.
    * BUG: Shortcuts are now correctly displayed in menu editor.
    * BUG: Keep menu selection when moving them up or down.
    * BUG: Deleting non-existing symbolic links works correctly now.
    * BUG: Comment and uncomment work again in the code editor.
    * BUG: Define the correct startup class.
    * BUG: Display recursive error messages sent by the debugger correctly.
    * BUG: The search list does not jump to the next instance unexpectedly
      anymore.
    * BUG: Fix a possible crash in menu editor.
    * BUG: Enabling or disabling tooltips in the option dialog does not crash
      anymore.
    * BUG: Inserting a new menu in the menu editor correctly selects it.
    * BUG: The component property dialog does not crash anymore if there is no
      exported class in the project.
    * BUG: Refresh help browser correctly when a new project is opened.
    * BUG: Class help now ends with the first void line after at least one
      help line.
    * BUG: The help browser now opens external links in the external web
      browser.
    * BUG: The help browser is always refreshed when its treeview is clicked.
    * BUG: Correctly handle image editor option in the options dialog.
    * BUG: Try to fix Fabiens's problem with invisible completion list.
    * BUG: Generate project help pages in temporary files so that the help
      browser can put them in its history.
    * BUG: Fix bad project file links in the help browser.
    * BUG: Fix the "Gambas web site" button tooltip in the help browser.
    * NEW: Reorganize menus in code editor and text editor.
    * NEW: Two new menu entries in code editor and text editor to switch
      selected text to upper case or lower case.
    * NEW: The startup class icon is now just drawn with a dark outline.
    * NEW: Error messages updated.
    * NEW: French translation updated.
    * NEW: In the library tab of the project property dialog, display the
      dependencies of the libraries.
    * NEW: Add a button to only display exported classes in the project tree.
    * NEW: Automatic completion now displays hidden symbols if the class is
      part of the current project.
    * NEW: Support for *.tar.xz source archives.
    * NEW: Underscores are now allowed inside a class name.
    * NEW: Support for splitted lines in pretty printer.
    * NEW: Redesign the system information window and its contents.
    * NEW: Fix some theme colors.
    * NEW: English and french tips were updated.
    * NEW: Fix and enhance the Report brush chooser dialog.
    * NEW: Use Color.Gradient instead of Color.Merge.
    * NEW: Use a MenuButton instead of a ComboBox to edit list properties.
    * NEW: Add two new functions to the form editor: embedding the selected
      controls inside a newly created container, and removing a container
      without removing the children.
    * NEW: Remove some icons that are not used anymore.
    * NEW: Change auto-completion symbol icons.
    * NEW: Add a filter in the "recent" tab of the "open project" dialog.
    * NEW: Add a project filter in the recent project list of the welcome
      dialog.
    * NEW: Update Czech translation.
    * NEW: Update Czech tips.

    [WIKI CGI SCRIPT]
    * BUG: Fixes in OpenGL automatic documentation.
    * NEW: Some enhancements in OpenGL automatic documentation.
    * NEW: Tons of new changes to make a better automatic documentation of
      virtual classes.
    * NEW: Support for indonesian translation.
    * NEW: Page renaming has a new option to do a copy instead.

    [WEB SITE MAKER]
    * BUG: Fix PayPal link.
    * BUG: Fix default font in style sheets.
    * NEW: Update website for Gambas 3.0 RC2.

    [EXAMPLES]
    * BUG: Some fixes in WebCam example.
    * NEW: Add a proxy configuration dialog in the WebBrowser example.
    * NEW: WebBrowser example: Handle new WebView.Fonts.xxx properties.
    * NEW: WebBrowser: Use the 'document.execCommand' JavaScript DOM method to
      make the web browser editable.
    * NEW: Some little changes in TreeView example.
    * NEW: New StarField example made by Laurent Carlier.

    [INTERPRETER]
    * BUG: Do not leak object reference when an error is raised during an event
      handler.
    * BUG: When a broken symbolic link is encountered, Dir() now assumes it is
      a file.
    * BUG: Components loaded at startup are now persistent. They are not
      unloaded by the interpreter anymore. That should prevent crashes from bad
      C++ libraries that have global static objects to delete. Qt can you hear
      my cries?
    * BUG: Now an inherited method checks that it has the same signature as the
      parent method. This check is not done for a native class inheriting
      another native class. C/C++ programmers are supposed to know what they
      are doing. :-)
    * BUG: Error.Backtrace is accurate now.
    * BUG: Fix FOR...NEXT loop with Byte, Short and Single datatypes.
    * NEW: Inheritance is stricter now: the child symbol must have exactly the
      same kind than the parent symbol.
    * NEW: Gambas 3 executable mime description file and icon have been renamed
      so that they do not conflict with Gambas 2 files.
    * NEW: Loading a user library now automatically loads the other libraries
      it depends on, as well as the components.
    * NEW: Rename many virtual classes everywhere so that the documentation can
      easily extract the property name of the parent class from the virtual
      class name. For example, ".ApplicationArgs" is now ".Application.Args".
    * NEW: Rename the '.File.Perm' virtual class as '.Stat.Perm'.
    * NEW: String.IsValid() is a new method that returns if a string is a valid
      well-formed UTF-8 string.
    * NEW: The LIKELY() and UNLIKELY() macros do nothing now, as it seems that
      recent CPUs are better than humans for branch prediction.
    * NEW: Write instruction can write a bunch of bytes from a pointer address.
    * NEW: Quote comma in Html$().

    [GB.DB.FORM]
    * BUG: Rename all Refresh() methods as Update() in all controls, so that
      the Refresh() method inherited from Control is not badly overridden.
    * NEW: DataView.Labels and DataBrowser.Labels are two new properties that
      define the column labels. If they are not set, the field names are used.
    * NEW: Change the way DataView chooses the height of a row.

    [GB.DESKTOP]
    * BUG: Update xdg-utils to the latest version, so that LXDE desktop is
      correctly supported.
    * NEW: Desktop.RunAsRoot() runs a command as root, by using the graphical
      "su" utility of the current desktop.
    * NEW: Support for LXDE in Desktop.OpenTerminal().

    [GB.EVAL]
    * OPT: Use an intermediate string buffer when analyzing a line of code.

    [GB.EVAL.HIGHLIGHT]
    * NEW: Use alternate background when highlighting scripts and styles inside
      an HTML document.

    [GB.FORM]
    * BUG: IconView.Find() has been renamed as IconView.FindAt(), to avoid the
      conflict with the inherited UserControl.Find() method.
    * BUG: Fix orientation of "clear" stock icon for KDE4.
    * BUG: Setting DirChooser (or FileChooser) Root property correctly updates
      the bookmark button.
    * BUG: DirChooser (or FileChooser) parent directory button is drawn
      correctly with gb.gtk now.
    * BUG: DirView now correctly ignores errors raised during the Icon event.
    * BUG: FileView now correctly ignores errors raised during the Icon event.
    * BUG: Fix mouse events handling in MenuButton controls whose MenuOnly
      property is TRUE.
    * NEW: Some updates in stock icons maps.
    * NEW: MenuButton.MenuOnly is a new property that makes the MenuButton only
      pop up its menu, and never raise its Click event.

    [GB.FORM.MDI]
    * BUG: Workspace.Children has been renamed as Workspace.Windows, because
      the Workspace.Children property was in conflict with the inherited
      Container.Children property.

    [GB.FORM.STOCK]
    * BUG: Add two missing SVG files for stock icons.
    * BUG: Add a missing svg stock icon for "bookmark".
    * NEW: Update icons.

    [GB.GTK]
    * BUG: Fix Picture.Fill() method with GTK+ >= 2.24.
    * BUG: Remove window resize grips with GTK+ >= 2.24.
    * BUG: Remove resize grip for GTK+ >= 3.0 too.
    * BUG: Make gb.gtk compile with GTK+ < 2.24.
    * BUG: Use gtk_window_set_resize_grip only with GTK+ >= 2.24.4.
    * BUG: GridView.RowAt() and GridView.ColumnAt() now take the headers into
      account.
    * BUG: TrayIcon comes back as a virtual control.
    * NEW: ListView, TreeView and ColumnView Find() method has been renamed as
      'FindAt' to match the IconView class.
    * NEW: Control.Refresh() now takes no argument.
    * NEW: DrawingArea.Refresh() keeps taking four optional arguments
      describing the sub-rectangle to refresh.
    * OPT: Optimizations in the Action property management.

    [GB.IMAGE]
    * NEW: Color.SetRGB() and Color.SetHSV() are two new methods that takes a
      color as an integer, modifies one of its component, and returns it. They
      are faster than using the ColorInfo class.
    * NEW: Color.GetAlpha() returns the alpha component of a color from its
      integer value.
    * NEW: Color.Gradient() is a new method that creates an intermediate color
      between two others colors by using a RGB gradient.

    [GB.OPENGL]
    * BUG: Rename Gl.BITMAP as Gl.BITMAP_, because there is a Gl.Bitmap()
      function.

    [GB.OPENGL.GLU]
    * BUG: Fix Makefile.am file.

    [GB.PDF]
    * BUG: Fix compilation of gb.pdf.

    [GB.QT4]
    * BUG: Changing the number of columns or rows in a GridView will raise
      Select and Change events only if there is a current row.
    * BUG: Moving a modal form during the Open event handler now prevents the
      form to be centered, as with gb.gtk.
    * BUG: Remove a debugging message.
    * BUG: TrayIcon comes back as a virtual control.
    * NEW: ListView, TreeView and ColumnView Find() method has been renamed as
      'FindAt' to match the IconView class.
    * NEW: Control.Refresh() now takes no argument.
    * NEW: DrawingArea.Refresh() keeps taking four optional arguments
      describing the sub-rectangle to refresh.
    * OPT: Optimizations in the Action property management.

    [GB.QT4.EXT]
    * BUG: When the Change event is raised while setting the Editor.Text
      property, the ReadOnly property now returns the correct value.
    * BUG: Editor: Some fixes in procedure separation drawing.
    * NEW: Some little changes in the way Editor paint background of lines.
    * NEW: In Editor, draw procedure separation on the previous line if it is
      empty. Otherwise draw it on the current line.

    [GB.QT4.WEBKIT]
    * BUG: Correctly export the virtual class of the WebSettings.Proxy
      property.
    * BUG: The default user agent is returned when no specific user agent has
      been set.
    * BUG: Raise the Error event later, so that setting the URL property during
      its event handler works correctly.
    * NEW: WebSettings.Proxy is a new virtual object that defines the proxy
      used for all requests.
    * NEW: Remove WebView.Cached property, and add a WebSettings.Cache.Enabled
      property to replace it globally.
    * NEW: Replace WebView.Font[] by many WebView.Fonts.xxx properties.
    * NEW: Add other WebView.Fonts.xxx properties to define default font sizes.
    * NEW: WebView.Eval() and WebFrame.Eval() are two new methods that can run
      any piece of JavaScript in the context of a frame.
    * NEW: WebView.UserAgent is a new property to define a custom user agent
      string for a specific WebView control.

    [GB.REPORT]
    * BUG: Fix incorrect inheritances.
    * BUG: The top padding/border and bottom are correctly taken into account
      when computing autoresize.
    * BUG: Now the text is clipped.
    * BUG: %any arrangement bugs fixed.
    * BUG: Fix some bad method overrides.
    * BUG: Fix a typo mistake in ReportVBox class.
    * NEW: The Ignore property is now available. It allow to place an object
      anywhere relative to its parent container.
    * NEW: The auto filling system is back, and is near to work perfectly.
    * NEW: The report label have now a key property.

    [GB.SDL.SOUND]
    * BUG: Do not stop watching a file descriptor if it is not watched at
      component exit.

    [GB.WEB]
    * NEW: Response.SetCookie() has a new optional argument to set if the
      cookie is "HttpOnly".
    * NEW: Session cookies are now automatically "HttpOnly".

## 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