MultiDialog für Atari TOS-Rechner GEM-Dialoge und Multitasking
Anleitung für die Versionen ab 1.00 von Helmut Neukirchen
Stand: 25. Mai 1993 (c) 1992-93, alle Rechte vorbehalten
Inhaltsverzeichnis:
I. Demonstration für Neugierige
II. Einleitung
III. MultiDialog in der Praxis
IV. Installation
V. Konfiguration
VI. Einschränkungungen und
zukünftige Versionen
VII. GEM-Programmierer und
MultiDialog
VIII. Fragen und Antworten
IX. Vertrieb, Rechtslage
Zu dieser Anleitung:
Eine Zusammenfassung erhalten Sie, indem Sie nur die Textstellen
lesen, die eingerückt und rechtsbündig geschrieben sind.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I. Demonstration für Neugierige
- MULTDIAL.PRG starten
(sollte statt MULTDIAL.PRG nur MULTIDIAL.ACC vorhanden sein,
kann man auch MULTDIAL.ACC in MULTDIAL.PRG umbennen)
- Daraufhin sollte eine Dialogbox erscheinen, die sich in
einem Fenster befindet. Dieses Fenster kann man nach Lust
und Laune verschieben.
- Wenn man mit MultiTOS (oder anderen Multitasking-
Erweiterungen) arbeitet, kann man jetzt - ohne den Dialog
von MULTDIAL.PRG zu beenden - z.B. LINES.PRG starten
und das Multitasking bei aktiver Dialogbox
bewundern.
- Den Dialog von MULTDIAL.PRG kann man beenden, indem man dort
auf "OK" oder "Abbruch" klickt.
- Die Dialogboxen aller anderen Programme sollten, nun
ebenfalls in Fenstern erscheinen.
(Falls nicht, findet man die Gründe in Kapitel VI.)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> II. Einleitung
Wir befinden uns im Jahre 1993 n. Chr. Das ganze Multitasking auf dem ST
ist von Dialogboxen lahmgelegt... Das ganze Multitasking ? Nein! Ein von
einem unbeugsamen Programmierer entwickeltes Programm hört nicht auf, den
Dialogboxen Widerstand zu leisten.
Was wollen uns diese Worte sagen ?
Sobald eine Dialogbox auf dem Bildschirm dargestellt wird,
steht für alle anderen Applikationen, die ebenfalls auf den
Bildschirm ausgeben wollen, das Multitasking komplett!!!
Aus dem - ach so schönen - Multitasking-Betriebssystem wird zu diesem Zeit-
punkt wieder fast ein Singletasking-Betriebssystem, das wertvolle Zeit damit
verbringt, tatenlos in einer Schleife zu warten bis der Benutzer nun
endlich den Dialog beendet!
Doch das muß nicht sein:
Was Atari bei der Implementierung des Multitasking-AES vergessen hat, wird
nun durch MultiDialog nachgeholt:
Dialogboxen vorhandener GEM-Applikationen erscheinen in GEM-Fenstern;
MultiDialog ermöglicht so uneingeschränktes Multitasking unter GEM.
(naja, ATARI wird es wohl nicht vergessen haben, sondern die Implementierung
verworfen haben, da es Inkompatibilitäten gibt (s. Kapitel VI), die sich
ATARI nicht leisten kann.)
Mittlerweile dürfte klargeworden sein, daß MultiDialog hauptsächlich für
ein Multitasking-TOS gedacht ist:
Entsprechend wurde es auch unter MultiTOS getestet (auf ST, TT und FALCON).
Zu Mag!X, MultiGEM oder anderen Multitasking-Erweiterungen kann ich nichts
sagen, aber MultiDialog müßte auch unter diesen Systemen laufen, da es keine
speziellen Eigenschaften von MultiTOS voraussetzt. (Das kann sich aller-
dings in zukünftigen Versionen ändern, da es im Moment bereits MultiTOS
Aufrufe benutzt, wenn dieses vorhanden ist!)
(es wäre nett, wenn mir jemand mal schreibt, ob MultiDialog mit Mag!X
oder MultiGEM funktioniert...)
Im übrigen läuft MultiDialog auch auf den altbekannten TOS-Versionen,
allerdings dürfte es dort nur im Zusammenspiel mit Accessories sinnvoll
zum Einsatz kommen.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> III. MultiDialog in der Praxis
Was macht MultiDialog ?
MultiDialog verankert sich im Betriebssystem und sorgt bei beliebigen GEM-
Applikationen dafür, daß deren Dialoge komplett in Fenstern abgewickelt
werden. Unter einem Multitasking GEM können daher andere Applikationen
ungehindert weiterlaufen. Solche Dialoge kennen einige vielleicht bereits
von anderen, neueren Applikatonen, wo Dialogboxen in Fenstern bereits
"serienmäßig" vorzufinden sind. MultiDialog macht dasselbe, halt nur mit
beliebigen GEM-Applikationen.
Der Begriff "beliebige GEM-Applikationen" muß an dieser Stelle allerdings
sofort wieder relativiert werden, da es tatsächlich viele Programme gibt,
bei denen MultiDialog keine Wirkung zeigt. Ist das bei einem Programm der
Fall, so wird der entsprechende Dialog wie bisher gewohnt durchgeführt, mit
der Konsequenz, daß das Multitasking lahmgelegt ist.
(Näheres dazu in Kapitel VI. "Einschränkungen und zukünftige Versionen")
Was ändert sich in der Praxis ?
Die Bedienung der Dialoge erfolgt wie gewohnt und doch gibt es einige
Neuerungen:
Die Dialogboxen müssen nicht mehr unbedingt in der Mitte erscheinen:
Bisher erschienen die Dialogboxen genau in der Bildschirmmitte. Insbesondere
auf Großbildschirmen ist das jedoch sehr lästig, da dann die Wege, die man
mit dem Mauszeiger zurücklegen muß, sehr groß werden. MultiDialog bietet die
Möglichkeit, die Dialogbox an anderen Positionen erscheinen zu lassen.
Die Dialogboxen erscheinen in Fenstern:
Für die Optik heißt das, daß alle Dialogboxen am oberen Rand den bekannten
Bewegungs- und Namensbalken eines Fensters besitzen und zusätzlich den
Fensterrand samt Schatten "verpaßt" bekommen. Das heißt aber auch, daß die
Gesamtausmaße einer Dialogbox größer werden, so daß sie evtl. nicht mehr
komplett auf den Bildschirm paßt. Im Extremfall ist dann die unterste
Zeile im Dialog nicht mehr sichtbar.
Dialog-Fenster, die von MultiDialog für Dialoge geöffnet wurden, besitzen
den Titel " MultiDialog: <app_name> ", wobei <app_name> der Name des
Programms ist, von dem der Dialog stammt. (Wenn Sie kein MultiTOS benutzen,
erscheint bei Accessories der Name "Accessory".)
Da das Fenster einen Be✓✓ê⇦Ä⇧Ç✓נîê⇦´=:⑥⓪5ãÃ7⓪20Àœ´⓪24ØÉ3بãÀ´2É╱à"4ãÀ7øõ7¶⓪;2¨õœ7õ2Ã⓪;ب22Ã⑦⓪╱à④"0¨É3:Ã5´4ÃÃ4ب:⓪0À62¨24Ã3¨ùij@⇩`τij⇦◆£3Γcü③π"a"⇩"""b③ββ ⇩⇧#Ç③ⁿ" ⇧ ⇩`âÇp◆Ç⇩! ⇩"③π" ` p0£3≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤Σ``å`âÇ`⇩③α⇨âαsβÇsµ `å`âÇa③נâ"⇧" Oü⇧é③£3ⁿ3ⁿ'â"⇧3Γcü③β⇨ז`!b③αüp<<3≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤α`β""sΓb⇧3µ`âÇ`⇩⇨"πÇ"``"③αN`⇩ sΓcü③Σ``ÇcüÇ"③α⇩Çb⇧0<<
Kopieren Sie die Datei MULTDIAL.PRG in den AUTO-Ordner
Ihres Bootlaufwerks. Beim nächsten Systemstart wird
es dann automatisch eingebunden.
Nach der Installation können Sie MultiDialog konfigurieren. Starten Sie
hierzu MULTDIAL.PRG oder richten Sie MultiDialog als Accessory ein.
(MULTDIAL.PRG als MULTDIAL.ACC in das Verzeichnis kopieren, aus dem Ihre
Accessories geladen werden. In der Regel also A:\ oder C:\)
Der Accessory-Betrieb dürfte allerdings nur notwendig sein, wenn Sie die
Konfiguration oft ändern müssen, z.B. um die optimalen Einstellungen für
ein Programm herauszufinden.
Hinweis für MiNT/MultiTOS-Benutzer:
Ob Sie MULTDIAL.PRG vor oder nach MINT.PRG in den AUTO-Ordner kopieren,
sollte eigentlich egal sein (die Programmflags für die Memory-Protection
müssen jedoch auf GLOBAL eingestellt sein). Ich empfehle jedoch, es nach
MINT.PRG zu starten.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> V. Konfiguration
Wird MultiDialog als GEM-Programm gestartet, so erscheint eine Dialogbox,
in der MultiDialog konfiguriert werden kann. Wurde MultiDialog als
Accessory installiert, so muß man dazu in der Menüleiste den
Accessory-Eintrag "MultiDialog" anwählen.
(Wurde MultiDialog nur als Accessory installiert, so muß zunächst
MULTDIAL.PRG gestartet werden, um MultiDialog zu installieren. Diesen
Fall teilt das Accessory dem Benutzer über eine Alertbox mit.)
Nach Start von MULTDIAL.PRG oder nach anwählen des Accessory-Eintrags
"MultiDialog" erscheint auf dem Bildschirm eine Dialogbox, in der
verschiedene Parameter von MultiDialog eingestellt werden können.
(Die Bedeutung der einzelnen Einstellungen wird sich dem Nicht-Programmierer
nicht so schnell erschließen, da sie sehr technischer Art sind. Die meisten
Einstellungen müssen aber sowieso nie verändert werden, da sie standard-
mäßig auf der sinnvollsten Stellung stehen.)
Im einzelnen sind das folgende Schalter:
"MultiDialog: An/Aus":
(MultiDialog ein- und ausschalten)
Mit diesem Schalter kann MultiDialog abgeschaltet werden.
MultiDialog ist dann zwar immer noch im Betriebssystem eingeklinkt,
aber alle weiteren Aufrufe, die MultiDialog sonst abfangen würde, werden
ignoriert und einfach ans Betriebssystem durchgereicht.
Während dieser Schalter von globaler Wirkung ist, können sich alle
weiteren Schalter auf einzelne Applikationen beziehen (s.u.):
"FormCenter: immer/Mitte/Ecke/Maus":
(Position der Dialogboxen)
Diese Schalter beziehen sich auf den Ort, an dem eine Dialogbox erscheint.
(der Name stammt von der GEM-Funktion form_center, mit der Applikationen
ihre Dialogboxen positionieren können.)
Normalerweise erscheinen Dialogboxen immer in der Mitte des Bildschirms;
auf Ganzseitenbildschirmen kann das aber auf Dauer ziemlich störend sein,
da man die Maus erst mehrere Kilometer ;-) bewegen muß, um den Dialog
bedienen zu können. MultiDialog kann dies lindern, indem es mehrere
Alternativen anbietet, die Dialogbox zu positionieren. In der Stellung
"Ecke" wird die Dialogbox in der linken oberen Ecke (also in der Nähe der
Menüleiste) erscheinen, in der Stellung "Maus" sucht die Dialogbox die
Nähe des Mauszeigers. Ist "Mitte" eingestellt, so erscheint die Dialogbox
- wie gewohnt - in der Mitte, allerdings merkt sich MultiDialog die
Position der Dialogboxen, so daß sie an der Stelle erscheinen, an der Sie
sie zuletzt positioniert haben. Im Gegensatz zu den bisher aufgeführten
Möglichkeiten, verhält sich "immer" nicht so. Hier erscheint die Dialogbox
immer in der Mitte des Bildschirms, egal wo sie sich beim letzten Mal
befand.
Sollten Sie irgendwelche Probleme mit Dialogboxen haben, die nicht ganz
sichtbar sind, weil sie z.B. aus dem Bildschirm ragen, stellen Sie hier
"immer" ein. Dann wird die Routine benutzt, die auch ohne MultiDialog
verwendet würde.
"Fenster bei: Alert|FormDial|FormDo":
(Bedingungen, wann Fenster verwendet werden)
Diese Schalter geben an, unter welchen Umständen ein Dialog in einem
Fenster dargestellt wird.
Ist "Alert" eingeschaltet, so erscheinen Alertboxen in einem Fenster.
(Alertboxen sind daran zu erkennen, daß sie maximal 3 Knöpfe und
5 Zeilen Text, sowie evtl. ein kleines Warnsymbol besitzen.)
Alertboxen sollten eigentlich keine Probleme bereiten, weshalb dieser
Schalter immer aktiviert sein kann. (Naja, mit dem Redraw gibt es
manchmal doch Probleme, die aber rein optischer Natur sind.)
Die beiden anderen Schalter beziehen sich nicht mehr auf Alertboxen,
sondern auf Dialogboxen, welche öfter Verwendung finden.
Die Einstellung "FormDial" bietet die größte Flexibilität, es gibt jedoch
einen Umstand, der es nötig macht, "FormDial" zu deaktivieren
(s. Kapitel VI.). (Der Name stammt von der GEM-Funktion form_dial, mit
der Dialogboxen angekündigt werden sollen.)
Sollten Sie feststellen, daß nach Beendigung eines Dialogs das Fenster
"tot" zurückbleibt und nicht gelöscht wird, so deaktivieren Sie bitte den
Schalter "FormDial" und verwenden Sie stattdessen die Einstellung
"FormDo", die dieses Problem nicht aufwirft. (Lesen Sie dazu auch das
Kapitel VIII. "Fragen und Antworten".)
Da es außerdem einige Programme gibt, die keine form_dial-Aufrufe tätigen,
gibt es außerdem noch die Möglichkeit, mittels "FormDo" auch diese in den
Genuß von Fenstern kommen zu lassen. (mittels form_do können Programme
einen Dialog bedienen lassen.) Dialogboxen, die erst durch die Einstellung
"FormDo" in Fenster gelangen, sind allerdings nicht so bequem zu Bedienen,
wie diejenigen bei denen "FormDial" genügt. Zum einen können deren Fenster
nicht verschoben werden, zum anderen wird das Fenster zu Anfang jedes
FormDo-Aufrufs geöffnet und bei dessen Ende geschlossen.
Daraus resulieren zwei Nachteile:
In vielen Dialogen kann der Benutzer Einträge in der Dialogbox über Pfeile
o.ä. scrollen (z.B. im IKONEN ANMELDEN Dialog der neueren Desktops, wobei
dieser Dialog ein schlechtes Beispiel ist, wie weiter unten erläutert wird).
Jedesmal wenn ein neuer Eintrag angezeigt wird, muß das Fenster geöffnet
und später wieder geschlossen werden. Zum einen benötigt das jedesmal
relativ viel Zeit, zum anderen kann es passieren, daß dieser Dialog dabei
von anderen Fenstern, die kurzzeitig aktiv werden, übermalt wird (was für
die Optik sicherlich nicht vorteilhaft ist). Der letztere Effekt kann evtl.
mit der Einstellung bei "ObjcDraw bei FormDo" gelindert werden.
Im Gegensatz zu FormDial-Dialogen können die Fenster der FormDo-Dialoge
nicht verschoben werden!
Es gibt noch eine dritte Art von Dialogen, nämlich solche, die weder
einen form_dial-, noch eine form_do-Aufruf benutzen. Das sind in der
Regel solche, die bereits eine besondere Form der Dialogbehandlung
anbieten (z.B. verschiebbare (sog. FlyDials) oder über Tastatur bedienbare
Dialoge). Diese können von MultiDialog nicht abgefangen und in Fenstern
dargestellt werden.
"ObjcDraw bei FormDo: Ja/Nein":
(Inhalt der Dialogbox neuzeichnen)
Diesen Schalter können Sie nur verändern wenn bei "Fenster bei:" "FormDo"
aktiviert ist, da sich diese Einstellung nur auf Dialoge bezieht, die
bei einem form_do-Aufruf in ein Fenster umgeleitet wurden. Wie bereits oben
erwähnt können dabei Probleme auftreten, weil der Inhalt der Dialogbox durch
andere Fenster übermalt wird. Da das in der Regel der Fall ist, sollte hier
"Ja" eingestellt werden. Manche Dialogboxen enthalten jedoch Grafiken
(z.B. Bilder, Farbverläufe), die MultiDialog nicht über den GEM-Aufruf
objc_draw rekonstruieren kann; in diesem Fall ist "Nein" einzustellen.
"^", "v", "Neu", "Löschen":
(Liste für automatische Umschaltung)
Da das eine Programm eine andere Einstellung als das andere benötigt,
besitzt MultiDialog eine automatische Umschaltung der Einstellungen.
Das geschieht über eine Liste, in der jedem Programm seine Einstellung
zugeordnet ist.
Mittels des "Neu"-Knopfes kann ein neuer Eintrag in der Liste angelegt
werden. Tippen Sie dazu nach Drücken des "Neu"-Knopfes einfach den
Namen des Programms, für das eine spezielle Einstellung nötig ist, ein.
(Nehmen SieOëêנÉÄ✓IJנÇ⇩✓Oê⇦נÇÇנÉ⇧üé⑨é⇧Ç✓ im Fenstertitel angezeigt
wird. Wenn Sie kein MultiTOS verwenden, kann der Name von Accessories nicht
ermittelt werden; daher ist für Accessories auch keine automatische
Umschaltung möglich.)
Mit den Pfeilknöpfen können Sie/ëÇ⇦î⇨נëé✓Oÿ⇩üä9ê✓Oîü9üüê⇦ÇנÇëנ≡pÇÄ⇨üä9ê⇧é⇨נëê⇦êנÿ⇩ä⇧ê⇧üÇê✓נ9Çëê⇦Çנבä⇩✓Oîêé✓⇨êנä⇩⇨נé✓⇦נÄ✓נëÄ⇦ppçäÇ✓⇦ÄOÇ⇩⇧נëêOÇêêנëêנçêê⇩⇧Ç!çêêנÄê✓ê⇩✓⇧êOÉÄ✓ijאppÖÄOëé✓OÇ✓⇩⇦⇧êנçäÇ✓⇦Ä✓OÇ⇩⇧נëê⇦ä✓⇧îêנÿ⇩ä⇧ê⇧üÇêOüÄ✓êIJנê⇩üנê⇦Oëê≡pÿ⇩üäÄ✓OכÖê✓Ä⇧üכIJנëê⇦⇦✓נÿ⇩ä⇧ê⇧üÇê✓נé>>>>>>>>>>>>>>>> V. Konfiguration
Wird MultiDialog als GEM-Programm gestartet, so erscheint eine Dialogbox,
in der MultiDialog konfiguriert werden kann. Wurde MultiDialog als
Accessory installiert, so muß man dazu in der Menüleiste den
Accessory-Eintrag "MultiDialog" anwählen.
(Wurde MultiDialog nur als Accessory installiert, so muß zunächst
MULTDIAL.PRG gestartet werden, um MultiDialog zu installieren. Diesen
Fall teilt das Accessory dem Benutzer über eine Alertbox mit.)
Nach Start von MULTDIAL.PRG oder nach anwählen des Accessory-Eintrags
"MultiDialog" erscheint auf dem Bildschirm eine Dialogbox, in der
verschiedene Parameter von MultiDialog eingestellt werden können.
(Die Bedeutung der einzelnen Einstellungen wird sich dem Nicht-Programmierer
nicht so schnell erschließen, da sie sehr technischer Art sind. Die meisten
Einstellungen müssen aber sowieso nie verändert werden, da sie standard-
mäßig auf der sinnvollsten Stellung stehen.)
Im einzelnen sind das folgende Schalter:
"MultiDialog: An/Aus":
(MultiDialog ein- und ausschalten)
Mit diesem Schalter kann MultiDialog abgeschaltet werden.
MultiDialog ist dann zwar immer noch im Betriebssystem eingeklinkt,
aber alle weiteren Aufrufe, die MultiDialog sonst abfangen würde, werden
ignoriert und einfach ans Betriebssystem durchgereicht.
Während dieser Schalter von globaler Wirkung ist, können sich alle
weiteren Schalter auf einzelne Applikationen beziehen (s.u.):
"FormCenter: immer/Mitte/Ecke/Maus":
(Position der Dialogboxen)
Diese Schalter beziehen sich auf den Ort, an dem eine Dialogbox erscheint.
(der Name stammt von der GEM-Funktion form_center, mit der Applikationen
ihre Dialogboxen positionieren können.)
Normalerweise erscheinen Dialogboxen immer in der Mitte des Bildschirms;
auf Ganzseitenbildschirmen kann das aber auf Dauer ziemlich störend sein,
da man die Maus erst mehrere Kilometer ;-) bewegen muß, um den Dialog
bedienen zu können. MultiDialog kann dies lindern, indem es mehrere
Alternativen anbietet, die Dialogbox zu positionieren. In der Stellung
"Ecke" wird die Dialogbox in der linken oberen Ecke (also in der Nähe der
Menüleiste) erscheinen, in der Stellung "Maus" sucht die Dialogbox die
Nähe des Mauszeigers. Ist "Mitte" eingestellt, so erscheint die Dialogbox
- wie gewohnt - in der Mitte, allerdings merkt sich MultiDialog die
Position der Dialogboxen, so daß sie an der Stelle erscheinen, an der Sie
sie zuletzt positioniert haben. Im Gegensatz zu den bisher aufgeführten
Möglichkeiten, verhält sich "immer" nicht so. Hier erscheint die Dialogbox
immer in der Mitte des Bildschirms, egal wo sie sich beim letzten Mal
befand.
Sollten Sie irgendwelche Probleme mit Dialogboxen haben, die nicht ganz
sichtbar sind, weil sie z.B. aus dem Bildschirm ragen, stellen Sie hier
"immer" ein. Dann wird die Routine benutzt, die auch ohne MultiDialog
verwendet würde.
"Fenster bei: Alert|FormDial|FormDo":
(Bedingungen, wann Fenster verwendet werden)
Diese Schalter geben an, unter welchen Umständen ein Dialog in einem
Fenster dargestellt wird.
Ist "Alert" eingeschaltet, so erscheinen Alertboxen in einem Fenster.
(Alertboxen sind daran zu erkennen, daß sie maximal 3 Knöpfe und
5 Zeilen Text, sowie evtl. ein kleines Warnsymbol besitzen.)
Alertboxen sollten eigentlich keine Probleme bereiten, weshalb dieser
Schalter immer aktiviert sein kann. (Naja, mit dem Redraw gibt es
manchmal doch Probleme, die aber rein optischer Natur sind.)
Die beiden anderen Schalter beziehen sich nicht mehr auf Alertboxen,
sondern auf Dialogboxen, welche öfter Verwendung finden.
Die Einstellung "FormDial" bietet die größte Flexibilität, es gibt jedoch
einen Umstand, der es nötig macht, "FormDial" zu deaktivieren
(s. Kapitel VI.). (Der Name stammt von der GEM-Funktion form_dial, mit
der Dialogboxen angekündigt werden sollen.)
Sollten Sie feststellen, daß nach Beendigung eines Dialogs das Fenster
"tot" zurückbleibt und nicht gelöscht wird, so deaktivieren Sie bitte den
Schalter "FormDial" und verwenden Sie stattdessen die Einstellung
"FormDo", die dieses Problem nicht aufwirft. (Lesen Sie dazu auch das
Kapitel VIII. "Fragen und Antworten".)
Da es außerdem einige Programme gibt, die keine form_dial-Aufrufe tätigen,
gibt es außerdem noch die Möglichkeit, mittels "FormDo" auch diese in den
Genuß von Fenstern kommen zu lassen. (mittels form_do können Programme
einen Dialog bedienen lassen.) Dialogboxen, die erst durch die Einstellung
"FormDo" in Fenster gelangen, sind allerdings nicht so bequem zu Bedienen,
wie diejenigen bei denen "FormDial" genügt. Zum einen können deren Fenster
nicht verschoben werden, zum anderen wird das Fenster zu Anfang jedes
FormDo-Aufrufs geöffnet und bei dessen Ende geschlossen.
Daraus resulieren zwei Nachteile:
In vielen Dialogen kann der Benutzer Einträge in der Dialogbox über Pfeile
o.ä. scrollen (z.B. im IKONEN ANMELDEN Dialog der neueren Desktops, wobei
dieser Dialog ein schlechtes Beispiel ist, wie weiter unten erläutert wird).
Jedesmal wenn ein neuer Eintrag angezeigt wird, muß das Fenster geöffnet
und später wieder geschlossen werden. Zum einen benötigt das jedesmal
relativ viel Zeit, zum anderen kann es passieren, daß dieser Dialog dabei
von anderen Fenstern, die kurzzeitig aktiv werden, übermalt wird (was für
die Optik sicherlich nicht vorteilhaft ist). Der letztere Effekt kann evtl.
mit der Einstellung bei "ObjcDraw bei FormDo" gelindert werden.
Im Gegensatz zu FormDial-Dialogen können die Fenster der FormDo-Dialoge
nicht verschoben werden!
Es gibt noch eine dritte Art von Dialogen, nämlich solche, die weder
einen form_dial-, noch eine form_do-Aufruf benutzen. Das sind in der
Regel solche, die bereits eine besondere Form der Dialogbehandlung
anbieten (z.B. verschiebbare (sog. FlyDials) oder über Tastatur bedienbare
Dialoge). Diese können von MultiDialog nicht abgefangen und in Fenstern
dargestellt werden.
"ObjcDraw bei FormDo: Ja/Nein":
(Inhalt der Dialogbox neuzeichnen)
Diesen Schalter können Sie nur verändern wenn bei "Fenster bei:" "FormDo"
aktiviert ist, da sich diese Einstellung nur auf Dialoge bezieht, die
bei einem form_do-Aufruf in ein Fenster umgeleitet wurden. Wie bereits oben
erwähnt können dabei Probleme auftreten, weil der Inhalt der Dialogbox durch
andere Fenster übermalt wird. Da das in der Regel der Fall ist, sollte hier
"Ja" eingestellt werden. Manche Dialogboxen enthalten jedoch Grafiken
(z.B. Bilder, Farbverläufe), die MultiDialog nicht über den GEM-Aufruf
objc_draw rekonstruieren kann; in diesem Fall ist "Nein" einzustellen.
"^", "v", "Neu", "Löschen":
(Liste für automatem MultiTOS vom 16.2.1993, dies kann bei zukünftigen MultiTOS
Versionen scheitern.
(Ich habe diesen Fehler Eric Smith gemeldet, hoffentlich ist er bald
behoben!)
Fehler-Berichte, die MultiDialog betreffen, bitte an meine Adresse (s.u.).
Am liebsten natürlich per e-mail (Emaille?)!
Aber, nicht vergessen: Immer Versionsnummer von MultiDialog, TOS-Version
und bei MultiTOS das AES-Datum und Sprache des AES angeben.
Was wird in den nächsten Versionen von MultiDialog kommen ?
Nun zunächst einmal werde ich versuchen, die Zuverlässigkeit weiter
zu erhöhen und die bekannten Fehler zu beheben.
Wenn meine Arbeit finanziell unterstützt wird, kommt dann außerdem noch
eine Tas⌠aturunterstützung hinzu, d.h. beliebige Dialogboxen können per
Tastatur bedient werden.
Ir`
Ã2;ãÃ7⓪;ب22É4õœ⓪0´õœ⓪6ãÀ⓪2œÃ2Ã⓪!ûíÃÀÕ4À2¨⓪12Àijœ2Ã⓪6ij¨¨ØÃ⑥⓪:Àåà2œÃ⓪!¿,⓪3@¨③¨É2¨;Øœ´2¨:2É%ÃÃ:97À632À2⓪=:¨⓪%ÃÃ34ø´¨0´4ÃÃ⓪=:É9õœ92œõ2Ã⑦╱à ´נ2¨22ÀÉ3œõ:③¨É;4ØÀ62œõœ:⓪2œÃ2É2Ã3À4¨õœ9Õ90õœ4øØÉ+2¨9œÃÃ⓪④#0À69É9œõœ⓪╱à;4ØÀ2É2Ã3À4¨õœ9Õ90õœ4øØÉ!2Ã>>>>>>>>>>>>>>>> V. Konfiguration
Wird MultiDialog als GEM-Programm gestartet, so erscheint eine Dialogbox,
in der MultiDialog konfiguriert werden kann. Wurde MultiDialog als
Accessory installiert, so muß man dazu in der Menüleiste den
Accessory-Eintrag "MultiDialog" anwählen.
(Wurde MultiDialog nur als Accessory installiert, so muß zunächst
MULTDIAL.PRG gestartet werden, um MultiDialog zu installieren. Diesen
Fall teilt das Accessory dem Benutzer über eine Alertbox mit.)
Nach Start von MULTDIAL.PRG oder nach anwählen des Accessory-Eintrags
"MultiDialog" erscheint auf dem Bildschirm eine Dialogbox, in der
verschiedene Parameter von MultiDialog eingestellt werden können.
(Die Bedeutung der einzelnen Einstellungen wird sich dem Nicht-Programmierer
nicht so schnell erschließen, da sie sehr technischer Art sind. Die meisten
Einstellungen müssen aber sowieso nie verändert werden, da sie standard-
mäßig auf der sinnvollsten Stellung stehen.)
Im einzelnen sind das folgende Schalter:
"MultiDialog: An/Aus":
(MultiDialog ein- und ausschalten)
Mit diesem Schalter kann MultiDialog abgeschaltet werden.
MultiDialog ist dann zwar immer noch im Betriebssystem eingeklinkt,
aber alle weiteren Aufrufe, die MultiDialog sonst abfangen würde, werden
ignoriert und einfach ans Betriebssystem durchgereicht.
Während dieser Schalter von globaler Wirkung ist, können sich alle
weiteren Schalter auf einzelne Applikationen beziehen (s.u.):
"FormCenter: immer/Mitte/Ecke/Maus":
(Position der Dialogboxen)
Diese Schalter beziehen sich auf den Ort, an dem eine Dialogbox erscheint.
(der Name stammt von der GEM-Funktion form_center, mit der Applikationen
ihre Dialogboxen positionieren können.)
Normalerweise erscheinen Dialogboxen immer in der Mitte des Bildschirms;
auf Ganzseitenbildschirmen kann das aber auf Dauer ziemlich störend sein,
da man die Maus erst mehrere Kilometer ;-) bewegen muß, um den Dialog
bedienen zu können. MultiDialog kann dies lindern, indem es mehrere
Alternativen anbietet, die Dialogbox zu positionieren. In der Stellung
"Ecke" wird die Dialogbox in der linken oberen Ecke (also in der Nähe der
Menüleiste) erscheinen, in der Stellung "Maus" sucht die Dialogbox die
Nähe des Mauszeigers. Ist "Mitte" eingestellt, so erscheint die Dialogbox
- wie gewohnt - in der Mitte, allerdings merkt sich MultiDialog die
Position der Dialogboxen, so daß sie an der Stelle erscheinen, an der Sie
sie zuletzt positioniert haben. Im Gegensatz zu den bisher aufgeführten
Möglichkeiten, verhält sich "immer" nicht so. Hier erscheint die Dialogbox
immer in der Mitte des Bildschirms, egal wo sie sich beim letzten Mal
befand.
Sollten Sie irgendwelche Probleme mit Dialogboxen haben, die nicht ganz
sichtbar sind, weil sie z.B. aus dem Bildschirm ragen, stellen Sie hier
"immer" ein. Dann wird die Routine benutzt, die auch ohne MultiDialog
verwendet würde.
"Fenster bei: Alert|FormDial|FormDo":
(Bedingungen, wann Fenster verwendet werden)
Diese Schalter geben an, unter welchen Umständen ein Dialog in einem
Fenster dargestellt wird.
Ist "Alert" eingeschaltet, so erscheinen Alertboxen in einem Fenster.
(Alertboxen sind daran zu erkennen, daß sie maximal 3 Knöpfe und
5 Zeilen Text, sowie evtl. ein kleines Warnsymbol besitzen.)
Alertboxen sollten eigentlich keine Probleme bereiten, weshalb dieser
Schalter immer aktiviert sein kann. (Naja, mit dem Redraw gibt es
manchmal doch Probleme, die aber rein optischer Natur sind.)
Die beiden anderen Schalter beziehen sich nicht mehr auf Alertboxen,
sondern auf Dialogboxen, welche öfter Verwendung finden.
Die Einstellung "FormDial" bietet die größte Flexibilität, es gibt jedoch
einen Umstand, der es nötig macht, "FormDial" zu deaktivieren
(s. Kapitel VI.). (Der Name stammt von der GEM-Funktion form_dial, mit
der Dialogboxen angekündigt werden sollen.)
Sollten Sie feststellen, daß nach Beendigung eines Dialogs das Fenster
"tot" zurückbleibt und nicht gelöscht wird, so deaktivieren Sie bitte den
Schalter "FormDial" und verwenden Sie stattdessen die Einstellung
"FormDo", die dieses Problem nicht aufwirft. (Lesen Sie dazu auch das
Kapitel VIII. "Fragen und Antworten".)
Da es außerdem einige Programme gibt, die keine form_dial-Aufrufe tätigen,
gibt es außerdem noch die Möglichkeit, mittels "FormDo" auch diese in den
Genuß von Fenstern kommen zu lassen. (mittels form_do können Programme
einen Dialog bedienen lassen.) Dialogboxen, die erst durch die Einstellung
"FormDo" in Fenster gelangen, sind allerdings nicht so bequem zu Bedienen,
wie diejenigen bei denen "FormDial" genügt. Zum einen können deren Fenster
nicht verschoben werden, zum anderen wird das Fenster zu Anfang jedes
FormDo-Aufrufs geöffnet und bei dessen Ende geschlossen.
Daraus resulieren zwei Nachteile:
In vielen Dialogen kann der Benutzer Einträge in der Dialogbox über Pfeile
o.ä. scrollen (z.B. im IKONEN ANMELDEN Dialog der neueren Desktops, wobei
dieser Dialog ein schlechtes Beispiel ist, wie weiter unten erläutert wird).
Jedesmal wenn ein neuer Eintrag angezeigt wird, muß das Fenster geöffnet
und später wieder geschlossen werden. Zum einen benötigt das jedesmal
relativ viel Zeit, zum anderen kann es passieren, daß dieser Dialog dabei
von anderen Fenstern, die kurzzeitig aktiv werden, übermalt wird (was für
die Optik sicherlich nicht vorteilhaft ist). Der letztere Effekt kann evtl.
mit der Einstellung bei "ObjcDraw bei FormDo" gelindert werden.
Im Gegensatz zu FormDial-Dialogen können die Fenster der FormDo-Dialoge
nicht verschoben werden!
Es gibt noch eine dritte Art von Dialogen, nämlich solche, die weder
einen form_dial-, noch eine form_do-Aufruf benutzen. Das sind in der
Regel solche, die bereits eine besondere Form der Dialogbehandlung
anbieten (z.B. verschiebbare (sog. FlyDials) oder über Tastatur bedienbare
Dialoge). Diese können von MultiDialog nicht abgefangen und in Fenstern
dargestellt werden.
"ObjcDraw bei FormDo: Ja/Nein":
(Inhalt der Dialogbox neuzeichnen)
Diesen Schalter können Sie nur verändern wenn bei "Fenster bei:" "FormDo"
aktiviert ist, da sich diese Einstellung nur auf Dialoge bezieht, die
bei einem form_do-Aufruf in ein Fenster umgeleitet wurden. Wie bereits oben
erwähnt können dabei Probleme auftreten, weil der Inhalt der Dialogbox durch
andere Fenster übermalt wird. Da das in der Regel der Fall ist, sollte hier
"Ja" eingestellt werden. Manche Dialogboxen enthalten jedoch Grafiken
(z.B. Bilder, Farbverläufe), die MultiDialog nicht über den GEM-Aufruf
objc_draw rekonstruieren kann; in diesem Fall ist "Nein" einzustellen.
"^", "v", "Neu", "Löschen":
(Liste für automat sich also
für einen Dialogmanager entscheiden...
Frage: Wieso werden bei manchen Programmen die Dialoge nicht in Fenstern
dargestellt ?
Antwort: Können Sie die betreffenden Dialoge ohne MultiDialog mit der Maus
auf dem Bildschirm hin- und herbewegen oder die Knöpfe mit der Tastatur
bedienen ?
Dann gibt es keine Chance, die Dialoge in Fenster zu verfrachten, da das
Programm eine eigene Dialogverwaltung benutzt. Ansonsten können Sie mal
probieren, den Knopf "FormDo" in der MultiDialog-Konfiguration zu
aktivieren, vielleicht klappt's dann.
Frage: Dialogboxen, die sehr dicht unter der Menuleiste erscheinen,
werden nicht in ein Fenster umgeleitet. Warum ?
Antwort: Bei diesen Dialogen ist kein Platz für den Fensterrand, so
daß dieser in der Menuleiste erscheinen würde. Um das zu verhindern,
wird daher kein Fenster geöffnet.
Frage: Wieso erscheinen manche Alertboxen des MultiTOS (z.B. "Laufwerk
antwortet nicht") nicht in Fenstern ?
Antwort: Diese Alertboxen gehören zu kritischen Fehlern. Die sind selbst
MultiDialog zu kritisch, so daß hier die herkömmliche Routine benutzt
wird.
Frage: Bei einigen Programmen erscheinen Alertboxen auf dem Bildschirm,
aber der Mauszeiger ist nicht sichtbar. Kann man das verhindern ?
Antwort: Im Moment leider nicht. Programme, bei denen dieses Problem
auftritt, verlassen sich auf die undokumentierte Tatsache, daß das AES
bei einer Alertbox immer den Mauszeiger einschaltet. Da MultiDialog dazu
nicht in der Lage ist (zumindest zur Zeit nicht) müssen Sie die Alertbox
entweder "blind" bedienen oder Sie deaktivieren "Alert" im Konfigurations-
Dialog bei "Fenster bei:".
(Wenn mir jemand verrät, wi✓Oé⇨נêê⇦⇧ä⇧ê⇧üêנÇÇIJנÇ⇩✓é✓⇧êO≡pê⇦Ä✓Ç⇦✓CÉ⓪⓪א@✓äÇ✓êOÇנÇ⇨êנÇ IJנîé⇦Oëê⇦נÉ⇦ê⇩✓✓⇦נä⇩⇨üîÄ⇦נé⇦⇧IJ≡pÇ9äêOëé✓⇦✓⇦OçäÇüêOê✓⇧!ä⇧ijijijאpp≡p≡pÿäÄ✓✓@נÉÄ⇨נ£ê✓ëé✓êOê⇩ê⇦OÖé⇧Ç✓⇦Oîüê⇩üנëÄ⇦Oÿêä⇧ê⇦נëé✓⇦✓⇦OÖé⇧Ç✓⇦ppÇ✓⇩⇧ê⇦âéנÄ✓נëêO£é⇧ëä⇨é⇦ÇOä⇧ê⇨êijנÆ⇨נÇÇנê⇦OÄê⇦נÇ✓ ê⇦נîê✓✓✓IJנÇÇ⇨≡pä⇨üé✓ êijנÇ⇩✓OéÇנé⇨נëÄ⇦OÇê⇦âéëê⇦Çנijpp≡pßüÇ⇦üijנr:
"MultiDialog: An/Aus":
(MultiDialog ein- und ausschalten)
Mit diesem Schalter kann MultiDialog abgeschaltet werden.
MultiDialog ist dann zwar immer noch im Betriebssystem eingeklinkt,
aber alle weiteren Aufrufe, die MultiDialog sonst abfangen würde, werden
ignoriert und einfach ans Betriebssystem durchgereicht.
Während dieser Schalter von globaler Wirkung ist, können sich alle
weiteren Schalter auf einzelne Applikationen beziehen (s.u.):
"FormCenter: immer/Mitte/Ecke/Maus":
(Position der Dialogboxen)
Diese Schalter beziehen sich auf den Ort, an dem eine Dialogbox erscheint.
(der Name stammt von der GEM-Funktion form_center, mit der Applikationen
ihre Dialogboxen positionieren können.)
Normalerweise erscheinen Dialogboxen immer in der Mitte des Bildschirms;
auf Ganzseitenbildschirmen kann das aber auf Dauer ziemlich störend sein,
da man die Maus erst mehrere Kilometer ;-) bewegen muß, um den Dialog
bedienen zu können. MultiDialog kann dies lindern, indem es mehrere
Alternativen anbietet, die Dialogbox zu positionieren. In der Stellung
"Ecke" wird die Dialogbox in der linken oberen Ecke (also in der Nähe der
Menüleiste) erscheinen, in der Stellung "Maus" sucht die Dialogbox die
Nähe des Mauszeigers. Ist "Mitte" eingestellt, so erscheint die Dialogbox
- wie gewohnt - in der Mitte, allerdings merkt sich MultiDialog die
Position der Dialogboxen, so daß sie an der Stelle erscheinen, an der Sie
sie zuletzt positioniert haben. Im Gegensatz zu den bisher aufgeführten
Möglichkeiten, verhält sich "immer" nicht so. Hier erscheint die Dialogbox
immer in der Mitte des Bildschirms, egal wo sie sich beim letzten Mal
befand.
Sollten Sie irgendwelche Probleme mit Dialogboxen haben, die nicht ganz
sichtbar sind, weil sie z.B. aus dem Bildschirm ragen, stellen Sie hier
"immer" ein. Dann wird die Routine benutzt, die auch ohne MultiDialog
verwendet würde.
"Fenster bei: Alert|FormDial|FormDo":
(Bedingungen, wann Fenster verwendet werden)
Diese Schalter geben an, unter welchen Umständen ein Dialog in einem
Fenster dargestellt wird.
Ist "Alert" eingeschaltet, so erscheinen Alertboxen in einem Fenster.
(Alertboxen sind daran zu erkennen, daß sie maximal 3 Knöpfe und
5 Zeilen Text, sowie evtl. ein kleines Warnsymbol besitzen.)
Alertboxen sollten eigentlich keine Probleme bereiten, weshalb dieser
Schalter immer aktiviert sein kann. (Naja, mit dem Redraw gibt es
manchmal doch Probleme, die aber rein optischer Natur sind.)
Die beiden anderen Schalter beziehen sich nicht mehr auf Alertboxen,
sondern auf Dialogboxen, welche öfter Verwendung finden.
Die Einstellung "FormDial" bietet die größte Flexibilität, es gibt jedoch
einen Umstand, der es nötig macht, "FormDial" zu deaktivieren
(s. Kapitel VI.). (Der Name stammt von der GEM-Funktion form_dial, mit
der Dialogboxen angekündigt werden sollen.)
Sollten Sie feststellen, daß nach Beendigung eines Dialogs das Fenster
"tot" zurückbleibt und nicht gelöscht wird, so deaktivieren Sie bitte den
Schalter "FormDial" und verwenden Sie stattdessen die Einstellung
"FormDo", die dieses Problem nicht aufwirft. (Lesen Sie dazu auch das
Kapitel VIII. "Fragen und Antworten".)
Da es außerdem einige Programme gibt, die keine form_dial-Aufrufe tätigen,
gibt es außerdem noch die Möglichkeit, mittels "FormDo" auch diese in den
Genuß von Fenstern kommen zu lassen. (mittels form_do können Programme
einen Dialog bedienen lassen.) Dialogboxen, die erst durch die Einstellung
"FormDo" in Fenster gelangen, sind allerdings nicht so bequem zu Bedienen,
wie diejenigen bei denen "FormDial" genügt. Zum einen können deren Fenster
nicht verschoben werden, zum anderen wird das Fenster zu Anfang jedes
FormDo-Aufrufs geöffnet und bei dessen Ende geschlossen.
Daraus resulieren zwei Nachteile:
In vielen Dialogen kann der Benutzer Einträge in der Dialogbox über Pfeile
o.ä. scrollen (z.B. im IKONEN ANMELDEN Dialog der neueren Desktops, wobei
dieser Dialog ein schlechtes Beispiel ist, wie weiter unten erläutert wird).
Jedesmal wenn ein neuer Eintrag angezeigt wird, muß das Fenster geöffnet
und später wieder geschlossen werden. Zum einen benötigt das jedesmal
relativ viel Zeit, zum anderen kann es passieren, daß dieser Dialog dabei
von anderen Fenstern, die kurzzeitig aktiv werden, übermalt wird (was für
die Optik sicherlich nicht vorteilhaft ist). Der letztere Effekt kann evtl.
mit der Einstellung bei "ObjcDraw bei FormDo" gelindert werden.
Im Gegensatz zu FormDial-Dialogen können die Fenster der FormDo-Dialoge
nicht verschoben werden!
Es gibt noch eine dritte Art von Dialogen, nämlich solche, die weder
einen form_dial-, noch eine form_do-Aufruf benutzen. Das sind in der
Regel solche, die bereits eine besondere Form der Dialogbehandlung
anbieten (z.B. verschiebbare (sog. FlyDials) oder über Tastatur bedienbare
Dialoge). Diese können von MultiDialog nicht abgefangen und in Fenstern
dargestellt werden.
"ObjcDraw bei FormDo: Ja/Nein":
(Inhalt der Dialogbox neuzeichnen)
Diesen Schalter können Sie nur verändern wenn bei "Fenster bei:" "FormDo"
aktiviert ist, da sich diese Einstellung nur auf Dialoge bezieht, die
bei einem form_do-Aufruf in ein Fenster umgeleitet wurden. Wie bereits oben
erwähnt können dabei Probleme auftreten, weil der Inhalt der Dialogbox durch
andere Fenster übermalt wird. Da das in der Regel der Fall ist, sollte hier
"Ja" eingestellt werden. Manche Dialogboxen enthalten jedoch Grafiken
(z.B. Bilder, Farbverläufe), die MultiDialog nicht über den GEM-Aufruf