3.22 Kompatibilität mit MUI Royale
RapaGUI begann als eine Abzweigung des populären MUI Royale
Plugins für Hollywood. Leute, die mit MUI Royale vertraut sind,
werden ohne Zweifel sehen, dass RapaGUI das gleiche Design benutzt,
so dass die Portierung von Programmen von MUI Royale nach RapaGUI
nicht besonders schwierig ist. Obwohl RapaGUI aufgrund der AmigaOS-basierten
Terminologie viele semantische Änderungen erfahren hat, sind
die Designunterschiede tatsächlich sehr gering. Wenn Sie also
Programme von MUI Royale nach RapaGUI portieren, werden Sie
sich nur mit Namensänderungen beschäftigen. Die meisten Leute
werden wahrscheinlich nicht einmal auf einen der wenigen Design-Unterschiede
zwischen MUI Royale und RapaGUI treffen. Dennoch ist hier eine
nicht vollständige Liste von Designunterschieden zwischen MUI Royale
und RapaGUI, um Ihre Portierungsbemühungen zu vereinfachen:
- – MUI Royale verlangte von Ihnen, dass Sie Window.CloseRequest
für alle Ihre Fenster verwenden, sonst würden sie offen bleiben.
RapaGUI schließt automatisch Fenster, die keine Überwachung
für Window.CloseRequest installiert haben.
- – MUI Royale verlangte auch, dass Sie die Ereignisse "HideWindow"
und "ShowWindow" überwachten, um die Minimierung von Fenstern
zu ermöglichen. RapaGUI übernimmt dies nun automatisch.
- – RapaGUI richtet automatisch für Schaltflächen, Symbolleistenschaltflächen
und Menüeinträge Ereignisüberwachung ein. MUI Royale verlangte
von Ihnen, dass Sie diese explizit anfordern, aber dies führte
zu unnötig wortreichen XML-Dateien, in denen Sie so etwas wie
notify="pressed"
für jede einzelne Schaltfläche einfügen
mussten, weil Sie unter normalen Umständen über jeden Schaltflächen-Klick
benachrichtigt werden möchten. RapaGUI ruft automatisch Ihre
Callback-Funktion für alle Schaltflächen- und Symbolleisten-Schaltflächen-Klicks
(Toolbarbutton) und Menüeintrag-Ereignisse auf, um den XML-Code besser lesbar
zu halten.
- – RapaGUI blendet automatisch alle Hollywood-Displays beim
Start aus, während dies bei MUI Royale nicht der Fall ist. Bei
MUI Royale müssen Sie die Standard-Displays manuell als verborgen
definieren.
- – MUI Royale ermöglicht es Ihnen, fast überall Textformatierungscodes
zu verwenden. Da es sich hierbei um eine hochgradig MUI-zentrierte
Fähigkeit handelt, ist es unmöglich, diese plattformunabhängig
zu implementieren. RapaGUI unterstützt Textformatierung nur
in den Klassen Textview (Textanzeige) sowie Texteditor
und nur dann, wenn Textview.Styled sowie Texteditor.Styled
auf
True
gesetzt wurden.
- – MUI Royale erlaubte es Ihnen auch, Symbole in fast allen
Widgets über Textformatierungscodes einzubinden. Dies ist auch
nicht plattformübergreifend realisierbar. Dennoch hat RapaGUI
Symbol-Unterstützung in vielen Klassen, aber die Art und Weise,
wie dies implementiert wird, ist immer klassenabhängig. Mit
RapaGUI können Sie Symbole mit folgenden Klassen verwenden: Button-Klasse,
Listview-Klasse, Pageview-Klasse und
Treeview-Klasse (Schaltflächen, Listenansicht,
Seitenansicht und Baumansicht). Schauen Sie sich die Dokumentation dieser
Klassen an, um mehr darüber zu erfahren, wie man Symbole mit
ihnen verwendet.
- – MUI Royale verlangt, dass Sie ein von der Klasse
<virtgroup>
abgeleitetes Objekt als Element für <scrollgroup>
-Objekte
verwenden. Mit RapaGUI können Sie ganz normale Gruppen verwenden.
- – MUI Royale sendet alle Kontextmenüs-Ereignisse immer über das Attribut
Area.ContextMenuTrigger
. RapaGUI sendet Kontextmenü-Ereignisse
einfach als normale Menüpunkt-Ereignisse. Aber es enthält ein
Feld Parent
in der Ereignismeldung, um Sie über das Widget
zu informieren, dessen Kontextmenü das Ereignis ausgelöst hat.
- – RapaGUI's Checkbox-Klasse erzeugt ein
Auswahlkästchen mit einer Textbeschriftung (Label). MUI Royale's Checkmark-Klasse
erstellt einfach ein Auswahlkästchen-Bild und Sie müssen die Beschriftung
(Label) selbst erstellen.
- – RapaGUI hat keine Unterstützung für das Attribut
Listview.InsertPosition
,
aber die Methode Listview.Insert gibt einfach die
Position des neu eingefügten Eintrags zurück.
- – In MUI Royale wurden Texteditor-Bereiche durch Blockkoordinaten
angegeben, die aus vier verschiedenen Werten (x1, y1, x2, y2)
bestehen. RapaGUI verwendet jetzt nur noch Start- und Stoppkoordinaten,
so dass alle Methoden und Attribute, die sich mit Textbereichen
befassen, jetzt nur noch zwei Argumente benötigen/zurückgeben.
- – RapaGUIs Texteditor-Klasse, Textview-Klasse
(Textanzeige) und Textentry-Klasse (Texteingabe) verwenden den Inhalt
zwischen den öffnenden und schließenden XML-Tags als initialen
Widget-Inhalt, während Sie mit MUI Royale immer ein Attribut
verwenden müssen, um den ursprünglichen Inhalt festzulegen.
- – RapaGUI verlangt, dass Sie ein übergeordnetes Objekt angeben,
wenn Sie Objekte dynamisch mit moai.CreateObject()
erstellen. Das war bei MUI Royale nicht nötig.
- – Da RapaGUI's Treeview-Klasse (Baumansicht) mehrere
Spalten unterstützt, müssen Sie bei der Definition Ihrer Baumansicht
in XML mindestens einen
<column>
erstellen. Dies war
bei MUI Royale nicht nötig, da die Treeview-Klasse nur einzelne
Spaltenbäume unterstützt.
- – MUI Royale hat kein Konzept mit Dialogen, da AmigaOS auch
keines hat. Modale Dialoge wurden nur mit normalen Fenstern
emuliert und alle anderen Fenster wurden in den Ruhezustand
versetzt. RapaGUI führt jetzt echte Dialoge ein. Während Sie
bei MUI Royale normalerweise alle diese Pseudo-Dialoge beim
Start erstellen, wird dies mit RapaGUI nicht mehr empfohlen.
Da Fenster auf manchen Betriebssystemen eine recht begrenzte
Ressource ist, sollten Sie Dialoge nur dann erstellen, wenn
Sie sie benötigen und sie nachher wieder sofort löschen. Siehe Dialog-Klasse für Details.
Wenn Sie nur AmigaOS verwenden möchten, dann können Sie natürlich
alle Ihre Fenster mit nur einem einzigen Aufruf von moai.CreateApp()
erstellen, aber wenn Sie andere Platformen auch berücksichtigen
möchten, sollten Sie die empfohlene Programmierrichtlinie befolgen
und Dialoge nur dann erstellen, wenn Sie sie benötigen und diese
sofort nach dem Schliessen wieder löschen.
- – Objekte der Radio-Klasse werden immer
in RapaGUI gerahmt. In MUI Royale werden sie standardmäßig nicht
gerahmt.
- – Wenn Sie einen etwas komplexere Tastaturkürzel-Zeichenfolge
wie
CTRL+V
, Alt+X
oder F5
mit
Menuitem.CommandString
verwenden, überwacht diese
MUI Royale nicht automatisch. Dies muss manuell durchgeführt
werden. Nur Standardabkürzungen in Form einer einzelnen alphabetischen
Taste, kombiniert mit der Taste CMD
, werden von MUI Royale
automatisch überwacht. RapaGUI verarbeitet jedoch auch komplexe
Verknüpfungen automatisch.
- – Wenn Listview.Active abgerufen wird und kein
Eintrag aktiv ist, gibt MUI Royale die spezielle Zeichenfolge
Off
zurück, während RapaGUI -1 zurückgibt.
Natürlich gibt es auch viele Attribute und Methoden, die in
MUI Royale vorhanden sind, aber in RapaGUI fehlen. Der Grund
dafür ist natürlich, dass RapaGUI aufgrund seines plattformübergreifenden
Designs den kleinsten gemeinsamen Nenner zwischen Windows, Linux,
macOS und AmigaOS darstellt. Deshalb konnten nicht alle Fähigkeiten
von MUI Royale auf RapaGUI übertragen werden.
Navigation zeigen