[Gambas-devel] Release of gambas 1.9.34
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:
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:
CONFIGURATION & INSTALLATION
* 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
* 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
* BUG: Object.SetProperty and Object.GetProperty now correctly propagate
* NEW: Object.Call now takes its arguments as an unique array, and not as a
* 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
* 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
BREAK YOUR CODE.
* 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
* 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
* 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
* 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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Devel