[linux-l] Grammar Design

Peter Ross Peter.Ross at alumni.tu-berlin.de
Di Jul 12 04:56:42 CEST 2005


On Mon, 11 Jul 2005, Oliver Bandel wrote:

> On Tue, Jul 12, 2005 at 12:50:38AM +1000, Peter Ross wrote:
>>
>> http://www.faqs.org/faqs/motif-faq/part8/section-7.html
>
> Schade, dass die dynamischen Sachen nicht auch so verarbeitet werden.
> Ich denke ueber sowas schon lange, lange immer wieder mal nach.
> Eine GUI-Language. Aber eben auch fuer die dynamischen Sachen.

Du kannst in den UIL-Files ganze Baeume von GUI-Elementen 
spezifizieren, deren Wurzel im C-Code mit einem Befehl geladen wird.

D.h. Du kannst z.B. mit einem Lade-Befehl die gesamte GUI neu laden (z.B. 
bei Kontext-Wechseln)

Im UIL-File gibst Du die Callbacks an, die dann im C-Code implementiert 
werden. dort koennte u.a. ein Befehl stehen, der die UIL neulaedt, 
einzelne Elemente aendert (z.B. Menupunkte als nichtanklickbar 
kennzeichnet), und natuerlich sollte jedes Programm auch mal was 
"Richtiges" tun (rechnen oder so) Aber immerhin gibt die UIL und die 
Implementierung der GUI-Dynamik im Callback-Context einen guten 
Prototypen.

Die GUI-Wechsel in die Callbacks bereits in der UIL zu stecken, waere 
sicher nett.

Koennte ein Parser "davor" machen, der Elemente wie
Callback {
     "Menupunkt_1".Sichtbarkeit="Falsch"
}

in entsprechende C-Callback-Stubs umwandelt, etwa

Callback {
   XmAendereWert(UILGetWidget("Menupunkt_1", Sichtbarkeit, "Falsch");
}

(Ich schreibe das jetzt alles im PseudoCode, ich habe das seit 10 Jahren 
nicht mehr programmiert).

Elemente der Klasse XmString koennen von links nach rechts oder oben nach 
unten geschrieben werden (und XmMenus so ausgerichtet werden) - und es ist 
ganz einfach, mal die Sprache zu wechseln - lade eine andere Hierachie von 
Menus und Strings - das war's dann)

Es gab Anfang der 90er den ISA Dialog Manager (aus Stuttgart, wenn ich 
mich nicht irre), der ein Design-Tool bot, um eine UIL-aehnliche Sprache 
zu erzeugen, die dann in die damals gaengigen Toolkits (Motif, 
OpenWindows, AlphaWindows (curses-basiert) und MS Windows eingebettet 
werden konnte.

In gewisser Form gibt es das mit den Ressource-Dateien unter Windows auch 
seit spaetestens Windows-3.1.

Ich fand das auch interessant und wesentlich besser als die Rumhackerei 
direkt im Code, wie das bis heute passiert, und ich verstehe einfach 
nicht, warum in der IT so wenig auf Bewaehrtes zurueckgegriffen und dieses 
verbessert wird.. Anstatt muss alles immer wieder neuerfunden werden. Dann 
gibt's mal wxWindows, Qt, Gnome, KDE, Swing.. Und jeder GUI-Kram muss 
wieder neueingehackt werden. Wieviele Entwickler in wievielen 
Programmier/GUI-Sprachen wohl das File-Open-Save Menu getippt haben..

Gruss
Peter



Mehr Informationen über die Mailingliste linux-l