

MultiDialog fr Atari TOS-Rechner          GEM-Dialoge und Multitasking
Anleitung fr die Versionen ab 1.00        von Helmut Neukirchen
Stand: 4. April 1993                   (c) 1992-93, alle Rechte vorbehalten



                                           Inhaltsverzeichnis:

                                       I.  Demonstration fr Neugierige

                                      II.  Einleitung

                                     III.  MultiDialog in der Praxis

                                      IV.  Installation

                                       V.  Konfiguration

                                      VI.  Einschrnkungungen und
                                           zuknftige 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 eingerckt und rechtsbndig geschrieben sind.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  I. Demonstration fr 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 Grnde 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 hrt nicht auf, den
Dialogboxen Widerstand zu leisten.

Was wollen uns diese Worte sagen ?

                  Sobald eine Dialogbox auf dem Bildschirm dargestellt wird,
                 steht fr alle anderen Applikationen, die ebenfalls auf den
                    Bildschirm ausgeben wollen, das Multitasking komplett!!!

Aus dem - ach so schnen - 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 ermglicht so uneingeschrnktes Multitasking unter GEM.

(naja, ATARI wird es wohl nicht vergessen haben, sondern die Implementierung
verworfen haben, da es Inkompatibilitten gibt (s. Kapitel VI), die sich
ATARI nicht leisten kann.)


Mittlerweile drfte klargeworden sein, da MultiDialog hauptschlich fr
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 mte auch unter diesen Systemen laufen, da es keine
speziellen Eigenschaften von MultiTOS voraussetzt. (Das kann sich aller-
dings in zuknftigen Versionen ndern, da es im Moment bereits MultiTOS
Aufrufe benutzt, wenn dieses vorhanden ist!)

Im brigen luft MultiDialog auch auf den altbekannten TOS-Versionen,
allerdings drfte 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 dafr, da deren Dialoge komplett in Fenstern abgewickelt
werden. Unter einem Multitasking GEM knnen daher andere Applikationen
ungehindert weiterlaufen. Solche Dialoge kennen einige vielleicht bereits
von anderen, neueren Applikatonen, wo Dialogboxen in Fenstern bereits
"serienmig" 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 tatschlich viele Programme gibt,
bei denen MultiDialog keine Wirkung zeigt. Ist das bei einem Programm der
Fall, so wird der entsprechende Dialog wie bisher gewohnt durchgefhrt, mit
der Konsequenz, da das Multitasking lahmgelegt ist.
(Nheres dazu in Kapitel VI. "Einschrnkungen und zuknftige Versionen")


Was ndert sich in der Praxis ?

Die Bedienung der Dialoge erfolgt wie gewohnt und doch gibt es einige
Neuerungen:

        Die Dialogboxen mssen nicht mehr unbedingt in der Mitte erscheinen:

Bisher erschienen die Dialogboxen genau in der Bildschirmmitte. Insbesondere
auf Grobildschirmen ist das jedoch sehr lstig, da dann die Wege, die man
mit dem Mauszeiger zurcklegen mu, sehr gro werden. MultiDialog bietet die
Mglichkeit, die Dialogbox an anderen Positionen erscheinen zu lassen.


                                     Die Dialogboxen erscheinen in Fenstern:

Fr die Optik heit das, da alle Dialogboxen am oberen Rand den bekannten
Bewegungs- und Namensbalken eines Fensters besitzen und zustzlich den
Fensterrand samt Schatten "verpat" bekommen. Das heit aber auch, da die
Gesamtausmae einer Dialogbox grer werden, so da sie evtl. nicht mehr
komplett auf den Bildschirm pat. Im Extremfall ist dann die unterste
Zeile im Dialog nicht mehr sichtbar.
Dialog-Fenster, die von MultiDialog fr Dialoge geffnet 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 Bewegungsbalken besitzt, kann damit die gesamte
Dialogbox veschoben werden.
(Das funktioniert allerdings nur, wenn das betreffende Programm
form_dial-Aufrufe benutzt.)
                               MultiDialog macht somit FlyDials berflssig!


Aber das Schnste ist:

                 Whrend der Dialogbehandlung luft das Multitasking weiter:

Das heit, die Menleiste ist weiterhin zugnglich. Man kann dann z.B. ein
Accessory oder eine andere Applikation anwhlen und damit arbeiten. Ebenso
ist es mglich, die Fenster oder das Desktop der anderen Applikationen zu
manipulieren. Jegliche Aktionen mit der Menleiste oder den Fenstern der
Applikation, die gerade den Dialog durchfhrt, sind jedoch nicht mglich.
Man kann zwar deren Meneintrage auswhlen oder versuchen, deren Fenster zu
verndern, allerdings erfolgt darauf keine Reaktion. Das ist erst wieder
mglich, wenn der entsprechende Dialog abgeschlossen wird.
Alle anderen Fenster der dazugehrigen Applikation knnen nicht aktiviert
werden, solange dieser Dialog stattfindet.
Kurz:
                   Mit einer Applikation kann erst wieder gearbeitet werden,
                                              wenn deren Dialog beendet ist.



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  IV.  Installation

Die Installation von MultiDialog gestaltet sehr einfach:

                      Kopieren Sie die Datei MULTDIAL.PRG in den AUTO-Ordner
                         Ihres Bootlaufwerks. Beim nchsten Systemstart wird
                                            es dann automatisch eingebunden.

Nach der Installation knnen 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 drfte allerdings nur notwendig sein, wenn Sie die
Konfiguration oft ndern mssen, z.B. um die optimalen Einstellungen fr
ein Programm herauszufinden.

Hinweis fr MiNT/MultiTOS-Benutzer:
Ob Sie MULTDIAL.PRG vor oder nach MINT.PRG in den AUTO-Ordner kopieren,
sollte eigentlich egal sein (die Programmflags fr die Memory-Protection
mssen 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 Menleiste den
Accessory-Eintrag "MultiDialog" anwhlen.
(Wurde MultiDialog nur als Accessory installiert, so mu zunchst
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 anwhlen des Accessory-Eintrags
"MultiDialog" erscheint auf dem Bildschirm eine Dialogbox, in der
verschiedene Parameter von MultiDialog eingestellt werden knnen.

(Die Bedeutung der einzelnen Einstellungen wird sich dem Nicht-Programmierer
nicht so schnell erschlieen, da sie sehr technischer Art sind. Die meisten
Einstellungen mssen aber sowieso nie verndert werden, da sie standard-
mig 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 wrde, werden
ignoriert und einfach ans Betriebssystem durchgereicht.

Whrend dieser Schalter von globaler Wirkung ist, knnen 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 knnen.)
Normalerweise erscheinen Dialogboxen immer in der Mitte des Bildschirms;
auf Ganzseitenbildschirmen kann das aber auf Dauer ziemlich strend sein,
da man die Maus erst mehrere Kilometer ;-) bewegen mu, um den Dialog
bedienen zu knnen. 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 Nhe der
Menuleiste) erscheinen, in der Stellung "Maus" sucht die Dialogbox die
Nhe 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 aufgefhrten
Mglichkeiten, verhlt 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 wrde.


                                       "Fenster bei: Alert|FormDial|FormDo":
                                (Bedingungen, wann Fenster verwendet werden)

Diese Schalter geben an, unter welchen Umstnden 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 Knpfe 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 grte Flexibilitt, es gibt jedoch
einen Umstand, der es ntig macht, "FormDial" zu deaktivieren
(s. Kapitel VI.). (Der Name stammt von der GEM-Funktion form_dial, mit
der Dialogboxen angekndigt werden sollen.)
Sollten Sie feststellen, da nach Beendigung eines Dialogs das Fenster
"tot" zurckbleibt und nicht gelscht 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 auerdem einige Programme gibt, die keine form_dial-Aufrufe ttigen,
gibt es auerdem noch die Mglichkeit, mittels "FormDo" auch diese in den
Genu von Fenstern kommen zu lassen. (mittels form_do knnen 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" gengt. Zum einen knnen deren Fenster
nicht verschoben werden, zum anderen wird das Fenster zu Anfang jedes
FormDo-Aufrufs geffnet und bei dessen Ende geschlossen.
Daraus resulieren zwei Nachteile:
In vielen Dialogen kann der Benutzer Eintrge 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 erlutert wird).
Jedesmal wenn ein neuer Eintrag angezeigt wird, mu das Fenster geffnet
und spter wieder geschlossen werden. Zum einen bentigt das jedesmal
relativ viel Zeit, zum anderen kann es passieren, da dieser Dialog dabei
von anderen Fenstern, die kurzzeitig aktiv werden, bermalt wird (was fr
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 knnen die Fenster der FormDo-Dialoge
nicht verschoben werden!

Es gibt noch eine dritte Art von Dialogen, nmlich 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 knnen von MultiDialog nicht abgefangen und in Fenstern
dargestellt werden.


                                             "ObjcDraw bei FormDo: Ja/Nein":
                                          (Inhalt der Dialogbox neuzeichnen)

Diesen Schalter knnen Sie nur verndern 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
erwhnt knnen 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, Farbverlufe), die MultiDialog nicht ber den GEM-Aufruf
objc_draw rekonstruieren kann; in diesem Fall ist "Nein" einzustellen.


                                                 "^", "v", "Neu", "Lschen":
                                        (Liste fr automatische Umschaltung)

Da das eine Programm eine andere Einstellung als das andere bentigt,
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 Drcken des "Neu"-Knopfes einfach den
Namen des Programms, fr das eine spezielle Einstellung ntig ist, ein.
(Nehmen Sie den Namen, wie er von MultiDialog im Fenstertitel angezeigt
wird. Wenn Sie kein MultiTOS verwenden, kann der Name von Accessories nicht
ermittelt werden; daher ist fr Accessories auch keine automatische
Umschaltung mglich.)

Mit den Pfeilknpfen knnen Sie durch die Eintrge blttern und
nachtrglich deren Einstellungen ndern (sie beziehen sich immer auf das
Programm mit dem neben den Pfeilknpfen angezeigte Namen.)
Da die meisten Programme mit derselben Einstellung laufen, gibt es den
Eintrag "Default", dessen Einstellungen immer dann benutzt werden, wenn
MultiDialog den Namen eines Programms nicht in der Liste, die Sie
angelegt haben, finden kann.

Wenn Sie Eintrge aus der Liste wieder lschen wollen, so knnen Sie dies
mit dem "Lschen"-Knopf machen. Es wird dann der Eintrag gelscht, der im
Moment angezeigt wird. Fr dieses Programm wird dann wieder die
Default-Einstellung verwendet, die man nicht lschen kann.


                                                 "Sichern", "OK", "Abbruch":

Um die gemachten Einstellungen zu sichern, wird der "Sichern"-Knopf
verwendet. Er speichert die Einstellungen dann in der Datei "MULTDIAL.INF"
ab. Zunchst wird versucht, diese im AUTO-Ordner Ihres Startlaufwerks
anzulegen (von wo sie MultiDialog auch beim nchsten Start ldt), scheitert
dies, so wird sie im aktuellen Verzeichnis gespeichert.

"OK" beendet den Dialog, "Abbruch" macht das gleiche, aber die zuletzt
gemachte nderung wird ignoriert. (Das bezieht sich dabei auf nderungen,
die an der im Moment sichtbaren Einstellung gemacht worden sind. Sobald
Sie die Pfeiltasten (oder "Neu" bzw. "Lschen") benutzen, werden die
nderungen, die Sie gemacht haben, sofort bernommen!)

           Auerdem befindet sich im unteren Ende der Dialogbox ein Anzeige,
             in der alles wichtige aus dieser Datei kurz zusammengefat ist.
                          Mit den Pfeilen, die sich rechts daneben befinden,
                              kann man den angezeigten Ausschnitt verndern.



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  VI.  Einschrnkungen und zuknftige Versionen

                    Alle zur Zeit bekannten Fehler, die MultiDialog besitzt,
                sind rein optischer Natur und beintrchtigen in keiner Weise
                                                     die Betriebssicherheit:


Zunchst die Fehler, die nur bei Singeltask-Betriebssystemen auftreten:

Das Desktop benutzt keine TRAP #2 GEM-Aufrufe, deshalb kann MultiDialog
die Dialogboxen des Desktop nicht abfangen. (Das Desktop des MultiTOS
hingegen verwendet TRAP #2 Aufrufe, so da hier MultiDialog aktiv wird.)

MultiDialog kann die Namen von Accessories nicht herausfinden, aus diesem
Grund ist auch keine automatische Einstellungsumschaltung fr Accessories
mglich. (In AES Versionen < 4.0 gibt es keine Mglichkeit, nach Prozessen
zu suchen.)


Da MultiDialog MultiTOS kennt, gibt es hier nur einen Fehler:

MultiDialog benutzt den appl_search-Aufruf, um den Namen einer Applikation
herauszufinden; dabei wird der interne Zhler von appl_search verndert.
Ruft daher z.B. eine Applikation appl_search auf, benutzt dann einen
Dialog und ruft anschlieend nochmal appl_search auf, so liefert der
2. Aufruf nicht den erwarteten Wert, da in der Zwischenzeit MultiDialog
ebenfalls appl_search aufgerufen hat.


Nun die Fehler, die in allen TOS-Versionen auftreten:

Programme, die eigene Dialogroutinen besitzen (z.B. fly-dials),
profitieren nicht von MultiDialog, da sie keinen form_do-Aufruf benutzen,
den MultiDialog aber bentigt.

Nicht immer ist ein Redraw fr die Fenster der Applikation, deren Dialog
abgefangen wurde, mglich. MultiDialog kann nmlich nur den Teil eines
Fensters neuzeichnen, der sichtbar war, als das Dialogfenster geffnet
wurde.

hnliche Probleme gibt's bei Alertboxen. Die originalen GEM-Alertboxen
retten den Bildschirminhalt und restaurieren ihn wieder; MultiDialog macht
das nicht, da ja in der Zwischenzeit der Bildschirminhalt sich vllig
verndert haben kann.

Einige Programme benutzen Alertboxen bei ausgeschaltetem Mauszeiger.
Die originale Betriebssystemfunktion kann in diesem Fall ohne Probleme den
Mauszeiger anschalten, MultiDialog hingegen nicht.

ltere Programme reservieren so ziemlich allen freien Speicher.
MultiDialog bentigt aber Speicher, um Dialoge in Fenster zu legen, weshalb
nach Start dieses Programms keine Dialoge mehr in Fenstern erscheinen.
(Da diese Programme aber unter MultiTOS ebenfalls Probleme bereiten,
drfte diese Unart aussterben.)

Dank MultiDialog kann man auf die Menuleiste auch whrend eines Dialogs
zugreifen. Das Programm kann aber auf keinerlei Ereignisse reagieren, weil
es nur darauf wartet, da der Dialog beendet wird. Whlt man trotzdem
eine Menueintrag an, so bleibt der Menutitel invertiert und es passiert
nichts. (Man mu halt zuerst den Dialog beenden; aus genau dem gleichen
Grund kann man auch nicht mit den Fenstern oder dem Desktop des betreffenden
Programms arbeiten, man mu erst den Dialog beenden.)

Jedesmal, wenn eine Dialogbox bewegt oder neugezeichnet wird, springt
der Cursor in einem Eingabefeld an das Ende des Feldes.

Es ist gar keine gute Idee, ein Programm zu starten bzw. zu beenden oder
die Auflsung zu wechseln, whrend ein Dialog, der von MultiDialog
abgefangen, sichtbar ist. (Ersteres bezieht sich auf Singletask-Betriebs-
systeme, letzteres auf MultiTOS.)
MultiDialog kann zwar damit umgehen, aber dazu mu es die Dialoge
gewaltsam beenden: Es tut so, als habe der Benutzer den Default-Knopf
gedrckt (normalerweise  ist das "OK" oder "Abbruch"). Wenn kein Default-
Button existiert, wird ein Druck auf auf den letzten Knopf der Dialogbox
simuliert, was hufig der "Abbruch"-Knopf ist. Aber dieser Knopf knnte
genauso gut ein "Alles lschen/Formatiere Festplatte/Starte Atomkrieg"-Knopf
sein, weshalb man besser erst die Dialogbox verlt und dann den
Auflsungswechsel durchfhrt oder ein Programm startet bzw. beendet.

Das Dateiauswahl-Formular wird von MultiDialog nicht abgefangen.
(So da bei einer Dateiauswahl die Bildschirmausgabe weiterhin stillsteht.)
Gleiches gilt fr kritischen Fehlermeldungen des TOS.


Kommen wir nun zu einen wirklich rgerlichen Problem :-(

Macht ein Programm mehr form_dial(FMD_START)-Aufrufe als
form_dial(FMD_CLOSE), so bleiben "Fensterleichen" auf dem Bildschirm
zurck. Diese Fenster knnen weder geschlossen, noch bewegt werden -
eine Mglichkeit ist, das Programm, zu dem der Dialog gehrt, zu beenden.
Tritt dieses Problem auf, so sollte man man "Fenster bei: FormDial"
ausschalten und stattdessen "Fenster bei: FormDo" benutzen.
(Aus diesem Grunde habe ich die automatische Umschaltung eingebaut -
wahrscheinlich ist das auch der Grund, weshalb ATARI so etwas hnliches
wie MultiDialog nicht ins MultiTOS eingebaut hat!)

Lesen Sie dazu das Kapitel VIII. "Fragen und Antworten"; dort wird erklrt,
wie Sie ein "totes" Fenster wieder entfernen knnen, ohne das betroffene
Programm zu beenden.


Anmerkung: Solch ein Verhalten ist weniger ein Fehler in MultiDialog
als ein echter Fehler der betreffenden Applikation, der auch den
Entwicklern dieser Applikation gemeldet werden sollte.


Aber es kommt noch besser: Ratet mal, welchen Fehler das Desktop in
MultiTOS hat! Na? Genau: Alle Dialoge in denen ein "berspringen"-Knopf
existiert, rufen jedesmal, wenn die Dialogbox fr die nchste Datei
aufgebaut wird form_dial(FMD_START) auf, machen aber nur _ein_
form_dial(FMD_FINISH), nachdem die letzte Datei dargestellt wurde.
MultiDialog versucht daher, diese Fehler zu abzufangen, aber es funktioniert
nur mit dem MultiTOS vom 16.2.1993, dies kann bei zuknftigen 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 natrlich per e-mail (Emaille?)!


Was wird in den nchsten Versionen von MultiDialog kommen ?

Nun zunchst einmal werde ich versuchen, die Zuverlssigkeit weiter
zu erhhen und die bekannten Fehler zu beheben.
In der fernen Zukunft wird dann auerdem noch eine Tastaturuntersttzung
hinzukommen, d.h. beliebige Dialogboxen knnen per Tastatur bedient werden.
Irgendwann werde ich auch mal einen C-Compiler bemhen mssen, um
ein CPX fr's erweiterte Kontrollfeld zur Konfiguration zu schreiben.
Auerdem gibt's vielleicht eine englischsprachige Version (Falls sich
viele englischsprachige Benutzer finden).



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  VII. GEM-Programmierung und MultiDialog


Die folgenden Ausfhrungen sind fr Programmierer gedacht, der Nur-Anwender
kann getrost ber sie hinweg lesen:

MultiDialog verbiegt ein paar Vektoren mittels XBRA-Strukten (die Kennung
ist "MDIA"). Es benutzt den TRAP #2 Vektor (GEM, um die AES-Aufrufe
abzufangen), TRAP #13 (BIOS, um MultiDialog in den TRAP #2 Vektor einzu-
klinken) und den GEM-Vektor 258 (etv_term, um bei einem Programmabbruch
den angelegten Speicher korrekt zu entfernen). Wenn der cookie-jar
existiert, wird auerdem ein cookie ("MDIA") angelegt,

Fr jeden dargestellten Dialog wird Speicher ber den Malloc-Befehl ange-
fordert, fr lokale Variablen, das Fenster (wird vom AES gemacht) und
ziemlich viel Speicher fr Redraw-Anforderungen (bei ST-Auflsungen
32kB, aber mit True-Color und Ganzseitenbildschirmen kann's auch 0,5MB
und mehr werden. Wenn kein Speicher mehr frei ist, kann dann nicht mehr
das Redraw ausgefhrt werden oder im Extremfall das Fenster nicht mehr
geffnet werden, in diesem Fall wird dann die herkmmliche Routine
ausgefhrt. (Durch die Benutzung von dynamischem Speicher ist MultiDialog
voll reentrant und untersttzt beliebig viele Dialoge gleichzeitig.)

Wenn auch Ihr Programm von MultiDialog profitieren soll, sollten Sie
form_fial(FMD_START) zu Beginn eines Dialogs, form_do fr den eigentlichen
Dialog und form_dial(FMD_FINISH) am Ende des Dialogs benutzen.
Dabei mu unbedingt zu jedem form_dial(FMD_START) auch ein
form_dial(FMD_FINISH) existieren, sonst bleiben Fensterleichen zurck.
MultiDialog baut darauf, da auf jeden form_dial(FMD_START)-Befehl wieder
ein form_dial(FMD_FINISH) folgt!
Untersuchen sie ihre Programme, ob es zu jedem form_dial(FMD_START) auch
ein form_dial(FMD_FINISH) gibt! Wenn nicht, luft ihr Programm garantiert
nicht vernnftig mit MultiDialog.

Ich empfehle, die Dialogbehandlung nach dem Beispiel im
"ST/STE/TT-Profibuch" auf Seite 777 durchzufhren.
Eine Dialogroutine sollte dementsprechend folgendermaen aussehen:

form_center(dialog,size_x,size_y,size_w,size_h)
wind_update(BEG_UPDATE)
wind_update(BEG_MCTRL)
form_dial(FMD_START, size_x, size_y, size_w, size_h,
                     size_x, size_y, size_w, size_h)
objc_draw(dialog,ROOT,MAX_DEPTH,size_x, size_y, size_w, size_h)

rc=form_do(dialog,ROOT)

form_dial(FMD_FINISH, size_x, size_y, size_w, size_h,
                      size_x, size_y, size_w, size_h)
wind_update(END_MCTRL)
wind_update(END_UPDATE)


Bei der Benutzung von "Spezial-Objekten", die mit objc_draw whrend des
Dialogs neugemalt werden, sollten man die wirklichen Koordinaten des Objekts
(die erhlt man ber objc_offset) als Clipping-Bereich verwenden - und
nicht etwa den Bereich, den man von form_center zurckbekommen hat.
Der Benutzer kann nmlich die Dialogbox aus dem ursprnglichen Clipping-
Bereich herausbewegt haben.



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  VIII. Fragen und Antworten


Frage: Warum erscheint bei mir keine einzige Dialogbox im Fenster ?

Antwort: Entweder MultiDialog ist berhaupt nicht installiert
(bei Start ber den AUTO-Ordner, mu MultiDialog die erfolgreiche
Installation melden), oder es ist abgeschaltet. Prfen Sie in der
Konfigurationsdialogbox von MultiDialog nach, ob MultiDialog
angeschaltet ist. Auerdem mu mindestens einer der Knpfe "Alert",
"FormDial" oder "FormDo" selektiert sein.
(Sollten Sie kein MultiTOS benutzen, so erscheinen die Dialogboxen des
Desktops nie in Fenstern.)


Frage: MultiDialog verursacht bei mir eine Memory-Violation. Was tun ?

Antwort: berprfen Sie, ob die Memory-Protection-Flags von MULTDIAL.PRG
auf GLOBAL gesetzt sind (z.B. mit dem Programm PRGFLAGS oder nehmen Sie
CHPROT, das macht das automatisch). Auerdem knnen Sie versuchen, ob
sich eine Verbesserung ergibt, wenn MULTDIAL.PRG vor oder nach MINT.PRG
gestartet wird.


Frage: Wieso strzen bei mir MultiDialog oder andere Programme immer ab ?

Antwort: Es kann sein, da MultiDialog in Verbindung mit anderen residenten
Programmen nicht funktioniert. Deaktivieren Sie nacheinander alle anderen
Programme im AUTO-Ordner, um den Bsewicht herauszufinden (Hoffentlich ist
nicht MULTDIAL der alleinige beltter!). Unter MiNT/MultiTOS spielt es
evtl. auch eine Rolle, ob die Programme vor oder hinter MINT.PRG im
AUTO-Ordner ausgefhrt werden. Im Extremfall mu man hier alle mglichen
Kombinationen ausprobieren (whrend ich MultiDialog ausprobiert und auf
Inkompatibilitten getestet habe, wurde MULTDIAL.PRG meistens als letzte
Datei geladen.)


Frage: Wieso werden bei manchen Programmen die Dialoge nicht in Fenstern
dargestellt ?

Antwort: Knnen Sie die betreffenden Dialoge mit der Maus auf dem Bildschirm
hin- und herbewegen oder die Knpfe mit der Tastatur bedienen ?
Dann gibt es keine Chance, die Dialoge in Fenster zu verfrachten, da das
Programm eine eigene Dialogverwaltung benutzt. Ansonsten knnen Sie mal
probieren, den Knopf "FormDo" in der MultiDialog-Konfiguration zu
aktivieren, vielleicht klappt's dann.


Frage: Wieso erscheinen manche Alertboxen des MultiTOS (z.B. "Laufwerk
antwortet nicht") nicht in Fenstern ?

Antwort: Diese Alertboxen gehren zu kritischen Fehlern. Die sind selbst
MultiDialog zu kritisch, so da hier die herkmmliche 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), mssen Sie die Alertbox
entweder "blind" bedienen oder Sie deaktivieren "Alert" im Konfigurations-
menu bei "Fenster bei:".


Frage: Nach Beendigung eines Dialogs bleibt das Fenster dieses Dialogs
weiterhin auf dem Bildschirm stehen. Ich kann es aber weder bewegen, noch
schlieen. Wie kann ich das verhindern ?

Antwort: Schalten Sie in der MultiDialog-Konfiguration den Knopf
"FormDial" ab und benutzen Sie stattdessen "FormDo". Dann sollten Sie
dieses Problem, das auf unsaubere Programmierung des betroffenen Programms
zurckzufhren ist, nicht mehr haben.
Am bequemsten ist es, wenn Sie fr dieses Programm einen eigenen Eintrag
in der Umschalt-Liste von MultiDialog anlegen und dort die beste
Einstellung fr dieses Programm angeben. (s. Kapitel V.)
Das "tote" Fenster wird entfernt, wenn Sie das Programm verlassen.
Hufig gelingt es auch, das Fenster zu entfernen, indem man MultiDialog
zunchst abschaltet und dann das betreffende Programm eine Dialogbox
anzeigen lt. Bei Beendigung dieses Dialogs wird dann das Fenster
entfernt. Danach knnen Sie MultiDialog wieder einschalten.


Frage: Ein Dialog erscheint zwar in einem Fenster und alle anderen Prozesse
laufen weiter, aber ich kann das Fenster nicht bewegen. Woher kommt das ?

Antwort: Hierbei handelt es sich um einen Dialog, der nach einem form_do
Aufruf in ein Fenster umgeleitet wurde. Solche Dialoge knnen grundstzlich
nicht bewegt werden. Falls fr das betreffende Programm
"Fenster bei: FormDial" deaktiviert ist, knnen Sie probieren, diese
Einstellung zu aktivieren, vielleicht knnen Sie das Fenster dann bewegen.
(Dieses Phnomen kann auerdem bei unsauber programmierten Programmen
auftreten!)


Frage: Die Dialogbox erscheint zwar in einem Fenster, aber es trgt nur
den Titel "Dialog" statt "MultiDialog". Woran liegt das ?

Antwort: In diesem Fall benutzt das Programm zwar die form_dial-Funktion,
aber es verwendet nicht - wie von MultiDialog erwartet - einen
form_do-Aufruf. Das ist nicht weiter schlimm, der Dialog (so es denn
berhaupt einer ist -  manchmal erscheinen auch Statusmeldungen in so einem
Fenster) blockiert dann halt die anderen Programme.


Frage: Manchmal scheinen Scrollpfeile und andere Auswahlmglichkeiten in
einer Dialogbox nicht mehr richtig zu funktionieren. Ist das normal ?

Antwort: Wahrscheinlich haben Sie die Dialogbox verschoben, so da der
Bereich, in dem das Programm die Auswahl darstellen will, sich nicht mehr
an der erwarteten Position befindet. Die Auswahl funktioniert dann meistens
trotzdem, sie wird nur nicht angezeigt. Versuchen Sie, das Dialogfenster an
die alte Position zurckzuschieben, dann mte es wieder funktionieren.


Frage: Ich bin von MultiDialog richtig begeistert. Ist das normal ?

Antwort: Ja. Verleihen Sie Ihrer Begeisterung Ausdruck, indem Sie die
Arbeit des Autors mit einer Geldspende honorieren.



>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  IX.  Vertrieb, Rechtslage

MultiDialog darf (und mu) kostenlos weitergegeben werden.
(Mglichst nur komplett; wenn keine Einweisung erfolgte, mu aber auf
jeden Fall diese Anleitung mitkopiert werden. In Mailboxen am Besten das
komplette Archiv uploaden.)

Jede Art kommerziellen Vertriebes ist untersagt. Der Vertrieb auf
PD-Sammeldisketten, die verkauft werden, scheidet somit aus (auch wenn
es sich dabei nur um sogenannte "Selbstkostenbeitrge" handelt.)
Der Vertrieb zusammen mit kommerziellen Programmen ist nur mit Genehmigung
des Autors erlaubt. Bitte setzen Sie sich bei Interesse mit mir in
Verbindung.

brig bleibt daher eigentlich nur der Vertrieb ber Mailboxen, sonstige
Netze und direkt ber den Autor.


Der Autor bernimmt keinerlei Haftung fr Schden, die durch Benutzung
des Programms entstehen. Die Benutzung erfolgt auf eigene Gefahr.


Regelmigen Benutzern wird nahegelegt, den Autor und die Entwicklung
von MultiDialog finanziell zu untersttzen. Der Betrag sollte sich
dabei nach dem eigenen Einkommen richten (und danach, was einem das
Programm wert ist). Damit sich der Verwaltungsaufwand auch lohnt,
ist DM 10,-- als Untergrenze anzusehen (Die Obergrenze ist bei
60.000 Atair-Dollars anzusetzen).

berweisungen bitte auf mein Girokonto:

             Helmut Neukirchen,
             Stadtsparkasse Krefeld, BLZ 320 500 00
                              Kontonummer 80 486 947

Untersttzen Sie MultiDialog, nur so ist dessen Weiterentwicklung
gewhrleistet!!! (Eigentlich mssen hier 1000 Ausrufezeichen stehen,
denn in MultiDialog habe ich ca. 1000 wertvolle Stunden investiert.)

Um dem Aufwand bei berweisungen aus dem Ausland aus dem Weg zu gehen,
sollen auslndische Benutzer (d.h. ohne Anbindung an den Deutschen
Giroverband) den Betrag an ihre jeweilige Greenpeace Organisation
berweisen.


Neueste Versionen von MultiDialog gibt's evtl. ber das Internet per FTP
auf dem FTP-Server ftp.informatik.rwth-aachen.de und evtl. in der Mailbox
MAUS Krefeld. Sollten Sie mit dem Begriff FTP oder MAUS nichts anfangen
knnen, haben Sie auerdem natrlich die Mglichkeit, direkt ber den Autor
an die neueste Version zu kommen.

Schicken Sie mir dazu eine formatierte Diskette und einen ausreichend
frankierten, selbstadressierten Rckumschlag. Wenn Sie dann noch angeben,
welche Version Sie zur Zeit besitzen, bekommen Sie Ihre Diskette zurck-
geschickt, sobald eine neuere MultiDialog Version existiert.


Meine Adresse:

Helmut Neukirchen      e-mail: hn@pool.informatik.rwth-aachen.de
Bnnersdyk 63
W-4150 Krefeld  <- Die Postleitzahl drfte sich bald ndern...
Deutschland


                   Dank gilt allen, die MultiDialog finanziell untersttzen.

 
|-THiS FiLE PASSED THR0UGH --- /\ ---.------ /\ ---*--.- FiDONET 2:200/612 --|
|                     .  * .  // \        . // \  .      FUJiNeT 7:102/102   |
| I.C.S Swedish HQ           //   \   +    //   \      .  MeGANeT 66:666/1   |
|                       +   //  /  \      //     \   +    NeST 90:1101/112   |
|  Sync World HQ           /\\  \\ /  .  //   \\ /                           |
|                      .  // \   \/     //    /\/   .    16800 DUAL STANDARD |
|  +46-451-91002          \\ /   /      \\  \/    +                          |
|                      *   \\   /  + .   \\  \ .    .  .                     |
|                        .  \\ /          \\ /                               |
|- SysOp: Troed ------------ \/ARCASTIC -- \/XISTENCE --- CoSysOp: Zaphod B -|
< Advertisment added using -=Bad Ad=- 1.92 by Troed/Sync. BBS: +46-451-91002 >
