[Gambas-user] A Gambas odissey
Doriano Blengino
doriano.blengino at ...1909...
Wed Aug 13 12:36:21 CEST 2008
Fabien Bodard ha scritto:
> is this can help you ?
>
> This a simple demo off event management via objerver object that catch
> the event before object.
>
Ok, it works. But, as you can see in my previous message and the
attached source, it was not that my problem. In fact, I already did the
same in MyDirView (I suppose this is the only way to enrich events).
I have several problems with gambas but, nevertheless, I like it. As far
as I have seen until now, it is the only functioning true RAD tool in
linux, and it has several nice things in it. For example, the settings[]
class is amusing, and there are many other good things. Unfortunately it
is still in development, so some features are missing or buggy, like the
GTK system; but this is only question of time. Documentation is
hermetic sometimes, but it can grow and improve.
The only real problem comes from the inheritance from visual basic, I
suppose, which, as many other micro$oft products, is tailored to suit a
market, and not to do things the right way. This is very dangerous,
because a similar product invades the market, cutting away other,
perhaps better, competitors. Then it shapes the mind of the users
(programmers), so the general culture is polluted too.
In this respect, it is a point of distinction that Gambas claims to be
"not a clone of visual basic" and, in fact, it is not a clone. But... I
could be wrong, I don't know visual basic enough, perhaps it should be
better I didn't talk... well, I think event management is wrong. I
suppose this is an inheritance from visual basic, like several others.
Many of them could be good and, if you don't like them, simply you can
avoid them. But others cannot be avoided, and event management is one of
them. I am afraid to see gambas collapse because of a inherent flaw. In
this very case, I have simply the problem that DirView does not raise
the KeyPress event. The first thing you replied to me was "you can
rewrite it". Multiply this reply for every control a user wants to use,
but also wants to improve, and see where all we will go.
To be sure, I just made a test with delphi. I derived a TMyListBox from
TListBox, and overrided the KeyPress event:
TMyListbox = class(TListBox)
procedure keypress(var key: char); override;
end;
procedure TMyListBox.keypress(var key: char);
begin
if key=#13 then begin
addItem('A item', NIL);
exit;
end;
inherited keypress(key);
end;
This code snippet creates a widget class, TMyListBox, which is a ListBox
that adds an item to the list if the user presses enter (key #13). All
the rest is untouched, all the events (Click, DoubleClick, Resize, and
so on) function like before. Don't pay too much attention to the
verbosity of pascal: it comes from the fact that pascal does not require
to have a different file for every different class you want to declare,
so every declaration (the keypress procedure, for example) has to be
associated to its class. In gambas this example could be something like:
' gambas class file
inherits ListBox
public sub ME_KeyPress()
if key.code=key.enter then
me.add("A item")
return
endif
inherited KeyPress ' or "Raise KeyPress", or whatever...
end
This is the crucial point. In gambas this is not possible. I wanted to
derive MyDirView from DirView and only add a couple of things, all the
rest was pretty ok. But I was left with two options:
1 - inherit from DirView, and replicate all its events with a
different name
2 - inherit from TreeView, rewrite all the file related stuff, and
replicate all its events with different names
I chose the second option, because I wanted to modify several things,
but the real problem is events. If they were transparently raised,
unless overridden, the circle would be complete. It would be a quick and
trivial job to create personalized controls to suite every need.
I know what happended to DirView. The programmer created it from
TreeView, and thinked nobody was interested in KeyPress, Expand, and
other events from TreeView. On the other hand, implement them would have
required writing them one by one, with a different name; certainly this
was not appealing...
Dear Fabien,
I am sorry to write this kind of flaming: someone could interpret it as
a complaint. But I think this is an important point to make gambas a
much better than it is now. I don't know if Benoit would read this
message thread, and I know, as said before, that perhaps gambas is too
developed to make this kind of modification. But I would pray the gambas
developers to pay attention, and then decide. If I am wrong, I am sorry.
I will never raise this argument again.
Good day to everybody, and long life to Gambas.
More information about the User
mailing list