
                      ALICE
                All-Iconify-Enabler
             
             Version 0.9 03.03.1996


                von Sven Kopacz


1. Rechtliches

 Die Sprche kennen Sie zwar alle schon, aber lesen Sie sie trotzdem:
 
 Alice ist Freeware, d.h. jeder darf es kostenlos benutzen und 
 kostenlos weitergeben, ebenso darf Alice kostenlos eigenen Programmen 
 beigelegt werden.
 Allerdings darf eine Weitergabe/Beilage NUR VOLLSTNDIG erfolgen, 
 d.h. dieser Text mu dabei sein!
 Uploads in Mailboxen, die keine Download-Gebhren verlangen (z.B. die 
 Maus-Mailboxen) sind ebenfalls erlaubt.
 (Eigentlich ist alles, was hier erlaubt ist, nicht nur erlaubt 
 sondern ausdrcklich erwnscht:-)
 
 Jede Form der Weitergabe, bei der dem Empfnger Kosten fr Alice 
 entstehen ist VERBOTEN.
 

2. Wat it denn dat, wat it denn dat??

 Alice ist ein TSR ("Terminate and stay resident"), d.h. in diesem 
 Fall eine Systemerweiterung fr den AUTO-Ordner. Ist Alice 
 installiert, beherrschen alle Applikationen das Iconify. 
 Voraussetzung dafr ist ein Betriebssystem, das eben dieses Iconify 
 untersttzt. Z.Zt. sind das meines Wissens:
 -MagiC >= V3.0
 -MagiCMaC >= 1.2.4
 -MultiTOS-Beta
 -Geneva
 -N.AES
 
 ACHTUNG! Diese Version 0.9 von Alice luft NICHT unter MTOS und 
 Geneva (jedenfalls nicht der ersten ffentlichen Demo), bei N.AES 
 wei ich es nicht (wer's probiert, kann mir gerne schreiben, Adresse 
 s.u.).
 Eine Anpassung ist geplant, momentan hab ich aber nicht gerade riesig 
 Zeit dafr und wei auch garnicht, ob da berhaupt Bedarf besteht. 
 Wer also Alice unter anderen Systemen als MagiC/MagiCMaC einsetzen 
 will, soll sich bitte bei mir melden.
 

3. Installation und Konfiguration

 Kopieren Sie Alice in den AUTO-Ordner, die Position ist egal. Um 
 Alice zu konfigurieren bentigen Sie die GEM-Version (!) von SETTER. 
 SETTER ist ursprnglich ein TTP-Programm von Harun Scheutzow, um 
 verschiedene Programme zu konfigurieren. Markus Kohm hat eine 
 GEM-Version dieses Programms verfat, die auerdem neue Mglichkeiten 
 zur Konfiguration bietet. Diese erweiterten Mglichkeiten werden von 
 Alice genutzt, weshalb Sie eben die GEM-Version von SETTER bentigen.
 Diese Version liegt dem Alice-Archiv bei.
 
 Ziehen Sie nun einfach das in den AUTO-Ordner kopierte ALICE.PRG auf 
 SETTER.PRG. SETTER wird gestartet und prsentiert Ihnen in einem 
 Fenster alle Optionen von Alice. Ich hoffe mal, da die alle 
 selbsterklrend sind. Falls es Probleme gibt, schreiben Sie mir, 
 damit ich in zuknftigen Versionen die Texte entsprechend verbessern 
 kann.
 
 Haben Sie alles Ihren Wnschen entsprechend eingestellt, starten Sie 
 Ihren Rechner neu, damit sich Alice installieren kann.
 
 Achja, wenn Sie mal die Anleitung zu SETTER lesen, werden Sie 
 feststellen, da Sie Ihre Einstellungen in Alice NICHT bei jedem 
 Update neu ttigen mssen...
 
 
4. Benutzung

 Da gibts eigentlich nicht viel zu sagen, das Iconify kennen Sie ja 
 wahrscheinlich aus Programmen wie Thing, CAT, ConNect u.v.a. ltere 
 Programme bieten normalerweise kein Iconify, weshalb sich dieses 
 OS-Feature IMO schlecht nutzen lt (es ist schwierig, von etwas zu 
 profitieren, was man nur ab und zu haben kann). Mit Alice knnen Sie 
 nun in allen Programmen die Iconify-Option benutzen, wobei Alice die 
 komplette Verwaltung der Iconify-Fenster fr nicht Iconify-fhige 
 Applikationen bernimmt.
 
 Falls Sie es noch nicht wissen: Das Fensterelement oben rechts mit 
 dem kleinen Dreieck ist der "Iconifier" oder "Smaller". Ein Klick 
 darauf bewirkt, da das Fenster verkleinert ("ikonisiert") wird und 
 der komplette Inhalt durch ein Icon ersetzt wird. Halten Sie beim 
 Klick auf den Iconifier zustzlich die Control-Taste gedrckt, werden 
 alle Fenster der zugehrigen Applikation in ein einziges 
 Iconify-Fenster "verwandelt", das ist das sog. "All-Iconify".
 Ein Doppelklick auf ein ikonisiertes Fenster bewirkt ein "Uniconify", 
 d.h. der ursprngliche Zustand wird wieder hergestellt.
 
 Auf Fenster, die durch Alice ikonisiert wurden, knnen Sie auerdem 
 andere Objekte ziehen ("Drag and Drop"), sofern die beteiligten 
 Applikationen das VA-Protokoll untersttzen. Das betreffende Programm 
 verhlt sich dann, als htten Sie das Objekt auf das Icon des 
 Desktops gezerrt.
 (Fr Programmierer: VA_DRAGACCWIND wird in VA_START umgewandelt).
 
 Ist ein von Alice ikonisiertes Fenster das oberste Fenster, dann 
 werden Tastendrcke ignoriert (das wre sonst zu gefhrlich).

 
5. Icons

 Natrlich kann Alice nicht wissen, welchen tatschlichen Inhalt ein 
 Fenster hat (z.B. einen Text oder eine Grafik), deshalb werden Sie in 
 den von Alice ikonisierten Fenstern normalerweise nur eines von vier 
 Standard-Icons vorfinden:
 -Haben Sie ein einzelnes Fenster einer Applikation ikonisiert, 
  erscheint ein Fenster-Icon
 -Haben Sie ein einzelnes Fenster eines Accessories ikonisiert, 
  erscheint ein Fenster-Icon mit aufgeklapptem Accessory-Men.
 -Haben Sie ein "All-Iconify" bei einer Applikation ausgelst, 
  erscheint das Programm-Icon des Original-TOS-Desktops.
 -Haben Sie ein "All-Iconify" bei einem Accessory ausgelst, erscheint 
  das Programm-Icon des Original-TOS-Desktops mit aufgeklapptem 
  Accessory-Men.
 
 Der Fenstertitel bleibt dabei jeweils erhalten und unter dem Icon 
 erscheint der Name des Programms, zu dem das ikonisierte Fenster 
 gehrt.
 

6. Mehr Icons?

 Da schlappe vier Icons etwas fade sind, wurde in Alice eine 
 Schnittstelle integriert, die in Zusammenarbeit mit Arno Welzel 
 entstanden ist. ber diese Schnittstelle haben externe Programme die 
 Mglichkeit, den Inhalt der ikonisierten Fenster zu zeichnen und 
 somit fr mehr Abwechslung und Information zu sorgen. Fr Rainer User 
 bedeutet das, da er bei Verwendung des alternativen Desktops Thing 
 (von Arno Welzel) ab Version 1.0 in den ikonisierten Fenstern ganz 
 automatisch die Icons vorfindet, die er auch im Desktop fr die 
 jeweiligen Programme angemeldet hat. Na wenn das nichts ist:-)

 Wenn Sie einen anderen Desktop benutzen, dann knnen Sie versuchen, 
 den Autor dieses Desktops zum Einbau der Schnittstelle zu berreden. 
 Den passenden Ansprechpartner finden Sie i.d.R. im Info-Dialog oder 
 in der Anleitung zu Ihrem Desktop.
 
 Programmierer knnen sich auch einen eigenen Redraw-Server schreiben 
 (Puristen mchten vielleicht nur den App-Namen in den Fenstern haben, 
 Multimedia-Anhnger dagegen ganze MPEG-Filmchen abspielen lassen;-), 
 mehr dazu im Kapitel "Fr Programmierer".
 

7. V0.9

 Diese Version trgt nicht umsonst die Bezeichnung "Beta". Alice wurde 
 zwar ausgiebig getestet, dabei trat aber bei einem Tester ein Problem 
 mit CAT auf, bei dem das Uniconify nicht richtig klappt (das Fenster 
 bleibt klein und der Inhalt wird erst beim nchsten Redraw gendert). 
 Wenn Ihnen mit CAT oder mit anderen Programmen hnliches passiert, 
 dann teilen Sie mir das bitte mit, vor allem wenn Sie es schaffen, 
 das ganze irgendwie gezielt zu reproduzieren. Im Moment bin ich 
 nmlich ziemlich ratlos, woran das liegen knnte, vor allem weil es 
 bei mir nicht auftritt...
 
 Auerdem luft Alice noch nicht auf allen Systemen. Daher also das 
 "Beta".
 
 Irgendwelche anderen Fehlermeldungen i.Z. mit Alice werden natrlich 
 ebenfalls jederzeit (mehr oder weniger dankend;-) von mir 
 entgegengenommen.

 
8. Fr Programmierer

 ...stellen sich jetzt vielleicht folgende Fragen:
 
 -Soll ich in meine Programme Iconify-Untersttzung einbauen?
 
  Das mu natrlich jeder selber wissen. Tatsache ist, da Alice 
  weiterentwickelt wird und eine Untersttzung aller Iconify-fhigen 
  Betriebssysteme vorgesehen ist, prinzipiell kann man es sich also 
  sparen, in eigenen Programmen Speicher fr Iconify-Untersttzung zu 
  opfern. Andererseits will man vielleicht in Sonderfllen 
  spezielle Fenster auf keinen Fall ikonisiert bekommen o.., dann ist 
  eine eigene Untersttzung notwendig.
  Hinweis: Applikationsmodale Fensterdialoge sind kein Problem, 
  solange man auf die Nachricht WM_NEWTOPPED/WM_ONTOP fr ein anderes 
  Fensterhandle mit dem Toppen des Dialogfensters reagiert.
  
  Bevor Sie Iconify allerdings nur halblebig einbauen (das ALL_ICONIFY 
  wird offenbar gerne gemieden), lassen Sie es lieber ganz bleiben 
  oder bieten Sie zumindest eine optionale Abschaltung dafr an.
  

 -Was mu ich tun, damit Alice meine Programme auf jeden Fall in Ruhe 
  lt?
 
  Einfach beim Programmstart ein Fenster mit Iconifier per wind_create 
  erzeugen (und falls es nicht gleich bentigt wird, danach eben wieder
  lschen).
  Wann das genau passiert ist unwichtig, wichtig ist nur, da das 
  erste mit wind_create erzeugte Fenster einen Iconifier besitzt. Wenn 
  das in Ihrem Programm sowieso der Fall ist, knnen Sie alles so 
  lassen wie es ist. 
  

 -Was mu ich tun, damit Alice meine Programme untersttzt.
 
  Nix. Was man aber nicht machen sollte, ist ein wind_create mit 
  angemeldetem Iconifier. Dann nmlich geht Alice davon aus, da Ihre 
  App das Iconify selber kann und hlt sich raus (auer bei der 
  Vergabe der Koordinaten fr das ikonisierte Fenster).
 

 -Wie verhalten sich von Alice ikonisierte Fenster fr mein Programm?
 
  Fr das Programm erscheinen diese Fenster, als wrden sie sich nach 
  wie vor an der alten Position befinden, jedoch von einem anderen 
  Fenster vollstndig verdeckt (d.h. der Redrawbereich hat die 
  Breite/Hhe 0).
  Fhrt das Programm ein wind_set(WF_TOP) auf ein von Alice 
  ikonisiertes Fenster aus, so fhrt dies automatisch zu einem 
  Uniconify. Befindet sich das Fenster "versteckt" in einem 
  All-Iconify-Fenster, so wird es aus diesem Fenster "gelst".
  
  Da das Programm nix vom Iconify mitbekommt, ist es kein Problem, 
  beim Beenden die Fensterkoordinaten zu speichern. Auch wenn alle 
  Fenster ikonisiert oder womglich in einem All-Iconify-Fenster 
  "versteckt" (und damit geschlossen) sind.
  

 -Sonst noch was?
  
  Ja. Wenn Alice das Iconify bernimmt, bernimmt es auch diverse 
  Nachrichten, den Redraw etc...In diesem Fall kann es vorkommen, da 
  ein event_message oder _multi von der Applikation nicht mehr 
  bearbeitet werden soll. Alice ndert einen solchen Event daher in 
  einen Message-Event mit der Nachrichtennummer 0x998 (MSG_NOEVENT). Die 
  Applikation mu dann nichts weiter machen, als diese Nachricht 
  einfach zu ignorieren (was normalerweise dadurch geschieht, da man 
  seine Programme einfach so lt, wie sie sind;-)
  
  

 8.1 Die Schnittstelle fr den Redraw-Server:
 
 Wie bereits erwhnt, kann ein anderes Programm den Inhalt der 
 ikonisierten Fenster zeichnen. Dieses Programm bernimmt damit die 
 Rolle des Redraw-Servers. Dazu mu sich der Server zunchst bei Alice 
 anmelden:
 
 1) Der Server sucht den Cookie mit Kennung "ALIC" (wird von Alice 
    angelegt)
    
 2) Der Cookie enthlt als Wert einen Zeiger auf folgende Struktur:
 
    typedef struct 
    { 
     long magic;   /* Magic - muss 'ALIC' sein */ 
     long version; /* Versionsnummer von Alice */ 
     int redraw_ap_id;  /* -1 */ 
    } ALICE_COOKIE; 

   "version" ist die Versionsnummer+Datum in BCD-Schreibweise. Die 
   Version 0.9 vom 17.01.1996 ist also am Eintrag "09170196" zu 
   erkennen.
  
   Nun prft der Server, ob in "redraw_ap_id" der Wert -1 eingetragen 
   ist. Ist dies nicht der Fall, hat sich bereits ein anderer Server 
   angemeldet->Pech.
   Ansonsten trgt der Server nun in "redraw_ap_id" seine eigene ap_id 
   (aus appl_init()) ein.
  
3) Wenn Alice nun ein Fenster ikonifiziert, schickt es an den Server 
   folgende Message:
  
   msg[0]=THING_CMD (0x46ff) 
   msg[1]=<ap_id des Fenstereigners> 
   msg[2]=0; 
   msg[3]=AT_WINICONIFY (0x1000) 
   msg[4/5]=<Zeiger auf Programmnamen ohne Pfad aber mit Extension> 
   msg[6]=<Fenster-Handle> 
   msg[7]=reserviert, immer 0 
  
   Als Extension gilt: 
   ".APP" oder ".PRG" = GEM-Programm 
   ".ACC" = Accessory 
  
   Der Server hat somit die Mglichkeit, intern einen Objektbaum fr 
   den Fensterinhalt aufzubauen.

4) Sobald ein Redraw fr <Fenster-Handle> notwendig ist, schickt Alice 
   eine WM_REDRAW-Message im blichen Format an den Server. 
 
5) Wenn das Fenster geschlossen oder wieder auf normale Gre 
   (uniconify) gebracht wird, schickt Alice an den Server folgende 
   Message:
  
   msg[0]=THING_CMD (0x46ff) 
   msg[1]=<ap_id des Fenstereigners> 
   msg[2]=0 
   msg[3]=AT_WINUNICONIFY (0x1001) 
   msg[4]=<Fenster-Handle> 
   msg[5-7]=reserviert, immer 0 
  
   Der Server kann nun den Speicher fr den evtl. erzeugten 
   Objektbaum wieder frei geben.

   Lt sich der Fensterinhalt schnell aufbauen (z.B. einfacher Text), 
   dann kann 3) und 5) einfach ignoriert werden und der Inhalt 
   "on the fly" beim Eintreffen einer Redraw-Message erzeugt werden. 
      
6) Sollte der Server sich unerwartet beenden, schreibt er in den 
   Alice-Cookie in 'redraw_ap_id' wieder den Wert -1, damit Alice 
   weiss, da der Server nicht mehr aktiv ist.
 
7) Der Server mu, falls er selbst Fenster benutzt, sein Iconify 
   selber machen, weil alle seine wind_get-Anfragen von Alice 
   durchgelassen werden, es also groe Probleme mit den von Alice 
   ikonisierten Fenstern gbe. Alice meldet in den Serverfenstern auch 
   keine Iconifier an (auch nicht, wenn in der Konfiguration 'Iconify 
   fr alle Apps bernehmen' gewhlt wurde).


9. Kontakt

 Ich selbst bin per eMail im Mausnet unter

 Sven Kopacz @ LB

 zu erreichen. In der Maus LB ist auch immer die neuste Version von 
 Alice zu finden.

 LB  MAUS  Ludwigsburg
 07141-280479
 Gastdownload, nicht von 18-20 und 21-23 (Zahler)
 Netz, nicht anrufen: 21.10-21.45 und 2.50- 5.30

 Per Post geht's auch:

 Sven Kopacz
 Metzinger Str. 20
 70597 Stuttgart
 
 Wer eine Antwort per Post wnscht, legt einen adressierten & 
 frankierten Rckumschlag bei, fr die neuste Alice-Version zustzlich 
 eine Diskette (DD oder HD).
 
 Fr die netten Leute mit den Spendierhosen hier noch meine 
 Bankverbindung:

   Kto.-Nr. 3213502
   BLZ 600 501 01  Landesgirokasse Stuttgart



 SETTER (GEM-Version) ist von Markus Kohm (Markus Kohm @ KA2)

 THING ist von Arno Welzel (aw@zaphot.augusta.de oder Arno Welzel @ A) 
 

 Ein Dankeschn geht auerdem an alle Tester: 

 Christoph Bartholme
 Oliver Buchmann
 Andreas Frank
 Ulli Hahndorf
 Raymund Hemmerling
 Andrew Lee
 Frank Mller
 Richard Quadt
 Uwe Seidler
 Holger Weets
 Arno Welzel
 Rainer Wiesenfeller
 
 -Ende-