Discussion:
VisualOberon, Blackbox, System3
(too old to reply)
Eric
2003-11-09 10:07:28 UTC
Permalink
I just want 2 ask which among these is the best given these considerations..

1. must run in Windows
2. has an interface like JCreator
3. can easily compile problems
4. GUI's is not a problem

I have blackbox, does it use oberon language??
Is visualoberon has an interface like JCreator or VisualC?

THNX
Tim Teulings
2003-11-09 14:57:25 UTC
Permalink
Hallo!
Post by Eric
1. must run in Windows
2. has an interface like JCreator
3. can easily compile problems
4. GUI's is not a problem
I have blackbox, does it use oberon language??
Is visualoberon has an interface like JCreator or VisualC?
Do you mean some kind of interface builder or GUI dreawing program? No,
VisualOberon does not have. It does have the possibility to define GUIs
using XML files, though. These XML files may be the base for GUI
builder, too.
--
Gruß...
Tim.
jmdrake
2003-11-21 20:52:41 UTC
Permalink
Post by Tim Teulings
Hallo!
Do you mean some kind of interface builder or GUI dreawing program? No,
VisualOberon does not have. It does have the possibility to define GUIs
using XML files, though. These XML files may be the base for GUI
builder, too.
Hey there Tim! Cool feature. How long have you had this?

It's interesting that the latest offer from ETH (BlueBottle Oberon) also
uses XML to define user interfaces. Perhaps there's some room for
collaboration here? There's isn't complete yet. Are you basing yours
on some existing XML UI scheme such as XUL or XWT, or did you start
from scratch?

Regards,

John M. Drake
Tim Teulings
2003-11-21 22:58:58 UTC
Permalink
Hallo!
Post by jmdrake
Post by Tim Teulings
Do you mean some kind of interface builder or GUI dreawing program? No,
VisualOberon does not have. It does have the possibility to define GUIs
using XML files, though. These XML files may be the base for GUI
builder, too.
Hey there Tim! Cool feature. How long have you had this?
Hmm, the copyright in the sources is 2002, so it must be there for 1 or
two years. However I build a similar system (not based on XMl but on a
handmade (Coco/R) syntax for my employer a few (4-5?) years ago. It is
nice and does very well work together with the automatic layouting. It
does need some template mechanism. I have some ideas for it, but as
always I lack ime. The layouting engine together with the XML GUI
description code and the model viewer concept should make it possible to
generate huge application from some script, I know one company that did
such thing (but they used UML and other technics)...
Post by jmdrake
It's interesting that the latest offer from ETH (BlueBottle Oberon) also
uses XML to define user interfaces. Perhaps there's some room for
Yes I read something about that. But what exactly does that mean? Do
they still have the document based aproach and now just use XML instead
of a binary format? VO isn't document based, but uses a more
conventional aproach (does have however a model viewer concept) so it
might not match.
Post by jmdrake
collaboration here? There's isn't complete yet. Are you basing yours
The VO syntax is simple and it should be easy to change. But the
aproaches must fit - and I never heard of any Oberon System having a
similar layouting system like VO has.

This is an example for a little hello world program:

<?xml version='1.0' encoding='ISO-8859-1'?>

<HelloWorld>
<Window name="Main" title="HelloWorld">
<WindowGroup>
<Main>
<Text text="Hello world!"/>
</Main>
</WindowGroup>
</Window>
</HelloWorld>
Post by jmdrake
on some existing XML UI scheme such as XUL or XWT, or did you start
from scratch?
No, from scratch, the intial version took me a few days with some
improvements later. I plan to came back to that part of the code later
to complete it, do some cleanup and a more table driven aproach (which
would allow me to generate some documentation from it). It is however
already useable.
--
Gruß...
Tim.
jmdrake
2003-12-02 15:53:40 UTC
Permalink
Post by Tim Teulings
Post by jmdrake
It's interesting that the latest offer from ETH (BlueBottle Oberon) als
o
Post by jmdrake
uses XML to define user interfaces. Perhaps there's some room for
Yes I read something about that. But what exactly does that mean? Do
they still have the document based aproach and now just use XML instead
of a binary format? VO isn't document based, but uses a more
conventional aproach (does have however a model viewer concept) so it
might not match.
Bluebottle still supports System 3, but it's kind of like running
System 3 under Windows or Unix X11. The XML user interface is more
"conventional". Here is some sample code:

<Panel title="Temporary Menu" width="250" height="380" color="C0C0C0FF">
<Button title="Oberon" align="top" height="50" onClick="runner Execute">
<SystemCommand id="runner" execute="Oberon.Start"/>
</Button>
<Button title="Editor" align="top" height="50" onClick="runner Execute">
<SystemCommand id="runner" execute="TestEditor.Open"/>
</Button>
<Button title="Bunny" align="top" height="50" onClick="runner Execute">
<SystemCommand id="runner" execute="WMBunny.Insert BunnyLinear.gif 8 16"/>
</Button>
<Button title="Bones" align="top" height="50" onClick="runner Execute">
<SystemCommand id="runner" execute="WMBunny.Insert bones.gif 25 10"/>
</Button>
<Button title="VNC" align="top" height="50" onClick="runner Execute">
<SystemCommand id="runner" execute="AosVNC.Open"/>
</Button>
<Button title="Object Tracker" align="top" height="50"
onClick="runner Execute">
<SystemCommand id="runner" execute="WMObjectTracker.Open"/>
</Button>
<Button title="Quit Aos !" align="top" height="50" onClick="runner Execute">
<SystemCommand id="runner" execute="AosTools.PowerDown"/>
</Button>
<Panel align="client">
<Edit id="command" align="left" multiline="false" width="200"
onEnter="../button/runner Execute"/>
<Button id="button" title="Exec" align="client" onClick="runner Execute">
<Batch id="runner">
<Assign srcComp="../../../command" dstComp="../command"
srcProp="string" dstProp="execute" />
<SystemCommand id="command" />
</Batch>
</Button>
</Panel>
</Panel>

This creates the "main menu" which is a series of 8 buttons and
a textbox. Unfortunately it's still in "flux" and needs a lot
of work, but I've seen some interesting stuff done with it.
Post by Tim Teulings
Post by jmdrake
collaboration here? There's isn't complete yet. Are you basing yours
The VO syntax is simple and it should be easy to change. But the
aproaches must fit - and I never heard of any Oberon System having a
similar layouting system like VO has.
<?xml version='1.0' encoding='ISO-8859-1'?>
<HelloWorld>
<Window name="Main" title="HelloWorld">
<WindowGroup>
<Main>
<Text text="Hello world!"/>
</Main>
</WindowGroup>
</Window>
</HelloWorld>
Here is hello world for BlueBottle:

<Panel title="HelloWorld" width="100" height="100">
<Label caption="Hello world!" align = "top" height="50"/>
</Panel>
Post by Tim Teulings
Post by jmdrake
on some existing XML UI scheme such as XUL or XWT, or did you start
from scratch?
No, from scratch, the intial version took me a few days with some
improvements later. I plan to came back to that part of the code later
to complete it, do some cleanup and a more table driven aproach (which
would allow me to generate some documentation from it). It is however
already useable.
Good. I'll take a look at it. Thanks for the info and keep up the good
work!

Regards,

John M. Drake
Tim Teulings
2003-12-02 17:26:18 UTC
Permalink
Hallo!
Post by jmdrake
Bluebottle still supports System 3, but it's kind of like running
System 3 under Windows or Unix X11. The XML user interface is more
<Panel title="Temporary Menu" width="250" height="380" color="C0C0C0FF">
[...]
Post by jmdrake
</Panel>
This creates the "main menu" which is a series of 8 buttons and
a textbox. Unfortunately it's still in "flux" and needs a lot
of work, but I've seen some interesting stuff done with it.
OK, that is not as different as I thought but there are differences that
Post by jmdrake
<Panel title="Temporary Menu" width="250" height="380" color="C0C0C0FF">
In VisualOberon you normally do not give objects fixed sizes. You can
give them fixed sizes but normally you use relative measurements (if you
use a measurement at all). For example you can tell an object that is
has the size of 50% of the desktop (of course it is a good idea to do
this only for top level objects else you might get dialogs that are
bigger than the screen).

In most cases is is however enough to tell an object that is can change
it horizontal or vertical size and leave the actual sizing to the
container that holds the objects or a collection of objects. You then
choose the container that fits you needs. VisualOberon will then
calculate the object and in the end the dialog size itself and
VisualOberon will handle resizing of dialogs in an intelligent way.

What happens in your XML code if you change the size of the font (since
the font is not part of the XMl code, it is not fixed)? Likely it would
not be usable anymore. In VisualOberon you just get a bigger dialog!
This may result in too big dialogs if you use strange fontsizes but the
dialog would still be useable.

An area I would like to put more investigation is to use objects that
change their layout if certain limits are meet (however there was no
need, since I currently do not run programs on desktop computer and for
exmaple PDA) or where their layout can be changed dramatically by
configuration (I call them abstract layouting objects). For example
there is an layouting object that tries to choose different
visualisations of labeled items (a list of items where every items
contains of a textual label and an structured object). Depending on the
total number of list entries it uses a tab object, a table, where a
selctions switches the view of the current object or a combobox instead
of a table.

Same procedure could be used e.g. for wizard dialogs. You could change
the look of the dialog compeltely and VisualOberon would calculate it to
fit.

VisualOberon XML normally does not contain colors since major point of
the usibility of a GUI is fullfilled expetations and standarized
behaviour. So a color sheme is defined at a central place and all
objects use this color sheme. This is even true for Windows ;-)
Post by jmdrake
<Button title="Oberon" align="top" height="50" onClick="runner Execute">
VisualOberon does not know of commands.This is not a problem of VO
itself, it is just that the runtime system of the oo2c compiler does not
allow it. VO uses a more conventional model driven aproach together with
a message delegation system (messages can be delegated to any message
handling object and can even get convert to another message on its way).

The MVC concept separates viewing and (re)action, so embedding command
execution in display dexcription code could be discussed (however VO is
also more M-(VC) than M-V-C);-)

How do the "onClick" attribute and the SystemCommand tag interact. Looks
like a mixture of classic command driven Oberon System and some MFC or
QT stuff where you have defined actions?

You would also never tell an object that it should align something to
the left, the object class would allow differnet styles and you would
the configure the alignment handling for each style in a configuration file.

All these differences do have the aim the extract and abstract as much
of the object layouting and put as information into the layouting system
as possible. Instead of defining a flat dialog you defined hierachical
relations. This has advantages:

* Defining a GUI gets simpler, since much more is automatic.
* The GUI looks smart.
* The GUI is easily themable (and VO does proof this!).
* The GUI is drastically adpated to different display needs.
* GUI can to some degree be configured to like like the native GUI.
* GUIs are consistent.
* The GUI can be changed without changing the program
* The Look can be changed without changing ther program
* Good for rapit protoyping
* Good for automatic code generation
Post by jmdrake
<Panel title="HelloWorld" width="100" height="100">
<Label caption="Hello world!" align = "top" height="50"/>
</Panel>
OK, obviously you left some tags ;-). If I strip down the example to the
Post by jmdrake
Post by Tim Teulings
<WindowGroup>
<Main>
<Text text="Hello world!"/>
</Main>
</WindowGroup>
You see: Positioning is gone and a layouting groupd has apeared
(WindowGroup has also slots for a menubar, a toolbar and a statusbar).
Post by jmdrake
Good. I'll take a look at it. Thanks for the info and keep up the good
work!
fine, seeing and using it might explain it better :-) I would suggest to
take a look at the current CVS version, since I smoothed the XML
handling a little bit since your last mail :-) There is now a tool that
spits out some documentation for each object. If you have any problems,
mail me /this is of course an offer for everybody else out there who
wants to test VisualOberon!).

While I used your mail to show the differences, I'm of course still
interested in some cooperation and knowledge transfer.
--
Gruß...
Tim.
WLad
2003-11-10 07:39:13 UTC
Permalink
Post by Eric
I just want 2 ask which among these is the best given these considerations..
1. must run in Windows
2. has an interface like JCreator
3. can easily compile problems
4. GUI's is not a problem
I have blackbox, does it use oberon language??
It use next generation (branch?) of oberon-family language: Component
Pascal.
Post by Eric
Is visualoberon has an interface like JCreator or VisualC?
BlackBox interface is enough for me. In general cases you question
hasn't sense because of difference in idiologies of these systems
(approaches to solve tasks).
Loading...