[Gambas-devel] Release of gambas 1.9.34

Benoit Minisini gambas at ...1...
Mon Jul 17 12:48:19 CEST 2006


The development environment got a new look, based on the KDE Crystal icon set. I hope you will like it :-)

It does not prevent anyone to make the same set of icons from Gnome :-)

Other main changes are:

* The support of actions, that allows you to link buttons, menus and some controls acting together. 

* A new instruction, SLEEP, to wait without calling the event loop. 

* Two interpreter crashing bugs were fixed. 

* Many little changes in the gb.qt component.

The more important change (for you I think) in this version is the support of *actions*.

An action is concretely a string property, that some controls have.

At the moment, the following controls have the Action property:
- Button
- ToolButton
- ToggleButton
- CheckBox
- Menu
- SidePanel
- Window

Controls having the same action synchronize their Enabled, Visible, Value (for toggle controls) properties.

SidePanel and Windows with an action behave like toggles, except that that the Value property is replaced by Visible.

Menu can become toggles now, thanks to a new property named... Toggle.

To make this magic reality, you must use the Action class to synchronize the previous properties. For example, 'Action["action-name"].Enabled = FALSE' must be used to disable all controls associated with the action.

When a control associated with an action raises its Click event, then the Action_Activate handler is called in its window. This pseudo event handler takes the action name as argument.

If this handler does not exist, or returns TRUE, then the Action class will search for a same handler in the parent window if this form is embedded, until finding the toplevel window.

For example, if you have:
- A toggle button associated with the action "test".
- A menu entry associated with the same action, having the Toggle property set.
- A form associated with the same action.

Then clicking the menu, or the toggle button will show or hide the window. And closing the window will toggle the menu and the toggle button too. All that happens automagically without writing a line of code.

If the name of the action begins with a dot, then this action is *local*. It means that the action is constrained to the form being the event observer of the controls associated with the action.

In other words, that means that controls associated with the same local action actually belongs to different synchronisation groups if they have different event observer.

The only constraint is that you must specify the event observer when using the Action class. 

For example, you must do: 'Action[".action", ME].Enabled = TRUE' instead of 'Action[".action"].Enabled = TRUE'.

If you need real examples, look in the IDE source code that makes a lot of use of this feature.

Or look in the Gambas part of the gb.qt component. The Action class is implemented there, in Gambas!

If you want to make a UserControl or UserContainer, the Action class has two static methods: Register, to link or unlink a control with an action, and Raise, used when a linked control raises the event associated with the action.

Note that these methods are called by the C++ part of the gb.qt component too, thanks to the GB.GetFunction() and GB.Call() methods. 

The gb.gtk component will have to do the same things to get action support, and a copy of the Gambas implementation of the Action class of course.

I hope you will like this feature. I'm waiting for your comments, if you didn't escape from your computer for holidays, of course :-)

Here is the full ChangeLog:


* BUG: A symbolic link named 'gambas2' pointing at 'gambas2.gambas' is now
  created inside the 'bin' directory of the installation.


* NEW: KDE Crystal icon theme is used now.
* NEW: The main window was redesigned with toolbars and actions.
* BUG: Some fixes in container support in the form editor.
* NEW: The form editor now has a representation of the window borders and
  title bar.
* NEW: The welcome form was redesigned.
* BUG: Somes fixes in the automatic completion.
* NEW: A new tab which displays the list of current breakpoints while 
* NEW: The option form was redesigned.
* BUG: Automatic creation of property handlers now support static
* BUG: Opened forms become read-only when the project is running.
* NEW: The icon editor was redesigned.
* BUG: Old editor positions are cleared when a new project is opened.


* BUG: The GB.GetFunction API does not leak memory anymore when the 
  searched function does not exist.
* NEW: The '.Array' class lost its point, and is named 'Array' now.
* NEW: Class.Component is a new property that returns the component a class
  belongs to.
* BUG: Object.SetProperty and Object.GetProperty now correctly propagate
* NEW: Object.Call now takes its arguments as an unique array, and not as a
  variable list.
* BUG: An error raised inside a component written in Gambas does not crash 
  the interpreter anymore during a debugging session.
* BUG: An object variable with a defined class can only accept symbols of 
  this class, and not a symbol of an inherited class.
* NEW: Randomize now takes an optional parameter to initialize the seed.

* NEW: A new instruction, SLEEP, to wait without calling the event loop.
* NEW: EXEC and SHELL now support the AS syntax to specify the event name
  of the returned Process objects.

* BUG: The informer does not use a hardcoded path of itself anymore to 
  implement library preloading.


* NEW: The archiver takes a new '-o' option to specify the path of the
  generated executable.


* BUG: The implementatio of the Design property were reworked.
* NEW: The Control.Window property now returns the window the control 
  belongs to, even if this window is embedded. BE CAREFUL! THIS MAY
* NEW: Now a control can be associated with an action, thanks to the Action 
  class. This class is implemented in the gambas part of the component.
* NEW: Now the Application.ActiveWindow returns the window containing the
  control having the focus, even if this window is embedded, provided this 
  embedded window has an event handler for the Activate event. Is it clear?
* NEW: Disabled icons are visually visible now.
* NEW: Button, ToggleButton and ToolButton now support actions.
* BUG: ToolButton now have a minimum height according to its font, like the
  Button control had.
* NEW: CheckBox supports action now.
* NEW: Arrange.LeftRight was renamed as Arrange.Row, and Arrange.TopBottom
  was renamed as Arrange.Column.
* NEW: Container now raises the Arrange event, to indicate that its contents
  has changed and should be arranged.
* NEW: Draw.RoundRect is a new method to draw rounded rectangles.
* NEW: Now DrawingArea controls ignore keyboard events by default.
* NEW: DrawingArea.Focus is a new property to tell a DrawingArea to accept
  keyboard events.
* NEW: Menu now supports actions.
* NEW: Now menus automatically hide unneeded separators just before opening.
* NEW: Menu.Toggle is a new property to make the menu acts like a toggle 
* NEW: Menu.Show and Menu.Hide are two new methods to respectively show
  and hide a menu entry.
* NEW: Menu.Popup now takes two extra optional parameters to specify the
  screen coordinates of where the menu will appear.
* NEW: Menu.Window is a new property that returns the window the menu is
  attached to.
* BUG: Replacing a picture in the Picture cache with another one with the
  same key does not crash the interpreter anymore.
* BUG: Changing the background color of a window now works correctly.
* NEW: Window now supports action, so that it can be automatically shown
  or hidden.


* NEW: Editor.Goto now takes an optional argument that center the cursor
  inside the Editor control.
* NEW: Procedures can be separated with a gradient instead of just a line.
* BUG: Some little fixes in the Editor control.


* NEW: FontChooser.ShowFixed were replaced by FontChooser.FixedOnly.
* NEW: FontChooser.ShowStyle is a new property that allows to hide the
  style panel in the middle.
* BUG: FontChooser does not refresh uselessly anymore.
* NEW: Some cosmetic changes in the SidePanel container.
* NEW: A new property, SidePanel.Action, for associating a SidePanel with 
  an action. This way, the SidePanel can be automatically shown or hidden.
* NEW: A ToolBar control, that acts as a container.


* BUG: Some bug fixes in the Workspace control.
* NEW: Clicking on the titlebar now gives the focus to the associated child
* NEW: Activating windows should not flicker anymore.


* NEW: Settings.Path is a new static property that returns the default
  path of configuration files.



Benoit Minisini
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/devel/attachments/20060717/107ee4f4/attachment.html>

More information about the Devel mailing list