Handbuchergnzung zu Interface 2.0


Vorwort

Nachdem  Interface  auf der ATARI-Messe 1991 das Licht  der  Welt  er-
blickte,  haben  mich  eine Menge  Verbesserungswnsche  erreicht.  In 
Interface  2.0  habe  ich  versucht,  davon so  viel  wie  mglich  zu 
verwirklichen.  Deshalb hier noch mal meinen Dank an alle,  die  nicht 
locker  gelassen haben und es geschafft haben,  mich von ihren  nder-
ungswnschen zu berzeugen.

Ich  habe  das  Programm weitestmglich  an  die  neuen  Multitasking-
Betriebssysteme wie Mag!X, MultiGEM und MultiTOS anzupassen. Da Multi-
TOS  zu  diesem  Zeitpunkt  leider noch  nicht  in  einer  endgltigen 
Version vorliegt,  beziehen sich alle nderungen auf die Beta-Version. 
Wenn sich noch gravierende Dinge ndern sollten,  werde ich  Interface 
selbstverstndlich daran anpassen.

Auf  den folgenden Seiten werden alle Unterschiede zwischen  Interface 
1.0  und Interface 2.0 erlutert.  Dabei werde ich mich  mglichst  an 
die Kapitelnumerierung des Handbuchs halten.


1 Einfhrung

  1.7 Zusatzfunktionen in Dialogboxen

Wenn Sie eine Dialogbox mit der Maus verschieben und dabei die SHIFT-, 
CONTROL-  oder ALTERNATE-Taste gedrckt halten,  wird nur  der  Rahmen 
der Dialogbox verschoben.  Dadurch ist es mglich durch Dialogboxen zu 
sehen, ohne sie verlassen zu mssen.

Alle  Abbruch-Buttons in Alertboxen und Dialogboxen lassen  sich  auch 
durch die UNDO-Taste bedienen.

In allen Dialogboxen wird das GEM-Clipboard ber Control-X/C/V  unter-
sttzt.  Alle 3 Befehle beziehen sich immer auf das Textfeld,  auf dem 
der Cursor gerade steht.

Kopieren     (Control-C): Der Text wird auf das Clipboard kopiert.

Ausschneiden (Control-X): Der  Text  wird auf das  Clipboard  kopiert. 
                          Danach wird das Textfeld gelscht.

Einfgen     (Control-V): Der Text des Clipboards wird an der  Cursor-
                          position eingefgt.


  1.8 Vergrern und Verkleinern von Objekten

Objekte  lassen  sich in alle 4 Richtungen vergrern.  Man  kann  das 
Objekt  zwar immer noch nur in der unteren rechten Ecke mit  der  Maus 
zur Grennderung anfassen,  aber man kann die Maus danach nach links 
oder ber das Objekt ziehen.  Interface schaltet dann automatisch  auf 
die jeweils der Maus am nchsten liegende Ecke um.


  1.10 Speicherverwaltung von Interface

Maximale Anzahl der...
Resourcen: 15
Bume einer Resource : 32767
Objekte in einem Baum:  1024
Objektnamen einer Resource: 32767 * 1024

Maximale Anzahl der Strukturen einer Resource:
OBJECT : 5120
TEDINFO: 5120
ICONBLK: 5120
BITBLK : 5120
USERBLK: 5120

Maximale Lnge...
aller Strings: 160 KB
aller Images : 640 KB (u.U. mehr)

einer Resourcedatei:  unsigned long,  d.h.  einige Megabytes. Begrenzt 
                      durch  die maximale Anzahl oder Lnge  der  eben 
                      genannten Strukturen.


3 Funktionsbeschreibung

  3.1 Die Menleiste

    3.1.1 Das Men "Datei"

      3.1.1.4 Menpunkt "Sichern"

Headerdateien  werden nur abgespeichert,  wenn Labels  verndert  oder 
gelscht wurden,  die Objekthierarchie gendert wurde,  oder wenn  der 
Resourceinfo-Dialog mit "OK" verlassen wurde.  Das drfte alle Compil-
erbenutzer  freuen,  deren  Compiler sonst das komplette  Projekt  neu 
compilieren wrde.


      3.1.1.6 Menpunkt "Info..."

        3.1.1.6.1 Info einer geladenen Resource-Datei

Hinzugekommen sind die beiden Buttons

"static": Wenn  die  Resource als C-Source mit  der  RSH-Ausgabe  aus-
          gegeben werden soll und dieser Button selektiert  ist,  wird 
          jeder  Variablen das Wort  "static"  vorangestellt.  Dadurch 
          sind alle Variablen der Resource modullokal  definiert,  und 
          man  kann  mehrere Resourcen im C-Source in  einem  Programm 
          verwalten, ohne da es Namenskonflikte gibt.

"Langes Format":  Wenn dieser Schalter aktiviert wurde,  wird die  Re-
                  source  in einem speziellen Format  ausgegeben,  das 
                  (fast) beliebig lange Resourcen erlaubt. Das Resour-
                  ceformat  bleibt trotzdem weitgehend kompatibel  zum 
                  alten  Format;  Interface ndert nur alle  Variablen 
                  des Resource-Headers von "WORD" in "LONG" um,  damit 
                  mehr als 64 KB verwaltet werden knnen.

                  Auf  der Diskette liegen Routinen im  C-Source,  mit 
                  denen man diese Resourcen laden kann.  Nheres  dazu 
                  unter Punkt 10.


      3.1.1.9 Menpunkt "Letzte Fassung"

Dieser  Menpunkt  verwirft die Resource und ldt  ihren  zuletzt  ge-
speicherten Stand wieder ein.


      3.1.1.10 Menpunkt "Abbrechen"

Interface wird verlassen,  ohne da die Konfiguration gespeichert wird 
(auch wenn "Autosave" aktiviert ist).


    3.1.2 Das Men "Bearbeiten"

      3.1.2.2 Menpunkt "Objekte..."

Der  Objekttyp  "G_USERDEF"  wird direkt  von  Interface  untersttzt. 
Dabei  legt Interface eine OBJECT-Struktur an,  deren  ob_spec-Pointer 
auf  eine  USERBLK-Struktur zeigt.  Fr jedes Objekt wird in  der  Re-
source eine eigene USERBLK-Struktur angelegt.

"ub_parm" kann direkt in Interface eingegeben werden.  "ub_code"  ent-
hlt  einen NULL-Pointer,  d.h.  nach dem Einladen einer  solchen  Re-
source  mu  man als erstes in "ub_code" aller  Userdef-Objekte  einen 
Zeiger  auf  die  eigene Zeichenroutine  eintragen.  Sonst  wrde  der 
Computer beim Zeichnen eines solchen Objekts sofort abstrzen.

Man  kann  eigene Objekte in die Objektebox von  Interface  einbinden. 
Mehr dazu unter Punkt 6.1 "Die Objektebox".

Wenn  die Objektebox in einem Fenster liegt,  kann man unter  MultiTOS 
auch  Objekte herausziehen,  wenn die Box im  Hintergrund  liegt.  Das 
gleichzeitige Drcken der rechten Maustaste ist dann nicht ntig.


      3.1.2.3 Menpunkt "Bume..."

Wenn die Baumbox in einem Fenster liegt,  kann man unter MultiTOS auch 
Bume herausziehen,  wenn die Box im Hintergrund liegt. Das gleichzei-
tige Drcken der rechten Maustaste ist dann nicht ntig.


      3.1.2.5 Menpunkt "Suchen..."

Man  kann nicht nur nach Labeln,  sondern auch nach beliebigen  Texten 
suchen.  Bei  der  Textsuche durchsucht Interface  die  komplette  Re-
source. Gro/Kleinschreibung wird nicht unterschieden.


      3.1.2.6 Menpunkt "Objektbaum testen"

Wenn  ein Dialog getestet werden soll und dieser  ein  EDITABLE-Objekt 
enthlt,  da nicht vom Typ FText oder FBoxText ist, wird eine Warnung 
ausgegeben,   da  das  AES  beim  Bearbeiten  einen  solchen   Objekts 
abstrzt.

Da  es  mglich  ist,  da  so ein  Objekt  von  einer  EXTOBFIX-Datei 
speziell  behandelt wird,  ist der Testvorgang trotzdem noch ber  die 
Alertbox aufrufbar. Also Vorsicht!


      3.1.2.7 Menpunkt "Resourcevergleich..."

2  Resourcedateien  knnen miteinander  verglichen  werden.  Sinn  der 
Funktion  ist,  da man damit z.B.  fremdsprachige Resourcen  leichter 
pflegen  kann,  und  Fehler schneller findet.  Um  die  Funktion  aus-
zulsen,  mu man zwei Resourcedateisymbole selektieren und dann  die-
sen Menpunkt aufrufen.  Der Menpunkt ist auch anwhlbar,  wenn genau 
zwei  Resourcen  geladen wurden oder die Baumfenster  von  genau  zwei 
Resourcen offen sind.

Wenn ein bestimmter Baum einer der Resourcen selektiert oder  geffnet 
ist,  kann  der Vergleich wahlweise ab dem Anfang oder ab diesem  Baum 
durchgefhrt werden.


      3.1.2.8 Menpunkte "Ausschneiden", "Kopieren" und "Einfgen" 

ber  diese  Punkte kann man alle selektierten Objekte  aus  Formular- 
und Menbumen auf das Interface-Clipboard kopieren,  bzw von dort aus 
an der Mausposition einfgen lassen. Siehe dazu auch Punkt 3.2.5.


    3.1.3 Das Men "Optionen"

      3.1.3.1 Menpunkt "Einstellungen..."

        3.1.3.1.2 "Im Fenster:"

Auer  wie bisher dem Desktop lassen sich jetzt auch folgende  Objekte 
in Fenster legen:

Menzeile:

Der praktische Nutzen ist vielleicht fraglich.  Aber da Interface ber 
diese Mglichkeit verfgt (fr die kleinen Farbauflsungen),  wurde es 
jetzt einschaltbar gemacht.

Dialoge:

Damit  andere Prozesse unter Mutitasking-Betriebssystemen  wie  Mag!X, 
MultiGEM  oder MultiTOS nicht in ihren  Bildschirmausgaben  angehalten 
werden,  wenn  Interface  eine Dialogbox anzeigt,  werden  mit  dieser 
Option  alle Dialoge in Fenster gelegt.  Falls kein Fenster  mehr  zur 
Verfgung steht, werden Dialoge als normale Dialogboxen angezeigt.

Objektboxen:

Damit  man  die Objektboxen nicht immer erneut ber "O" bzw  ber  "B" 
aufrufen mu,  kann man sie in Fenster legen und dann auf dem  Desktop 
liegen  lassen.  Zusammen  mit  der rechten Maustaste  kann  man  dann 
Objekte  auch aus den im Hintergrund liegenden Objektboxen  herauszie-
hen.


        3.1.3.1.6 "Objektdatenanzeige in Zeichen oder Pixel"

Die  Objektdatenanzeige wird auch in  Menbumen  angezeigt.  Auerdem 
werden alle 16 Zeichen des Objektnamens ausgegeben.

Wenn  die Objektdatenanzeige eingeschaltet ist,  gibt es in  Interface 
merkwrdigerweise  Probleme bei der  Doppelklickerkennung,  wenn  zwei 
Events  gleichzeitig eintreffen (MU_BUTTON und MU_M2).  Das  liegt  an 
dem etwas "eigenwilligen" Verhalten von evnt_multi.

Ich  hab  nun versucht etwas dagegen zu  unternehmen,  indem  ich  den 
MU_M2-Event wieder durch einen MU_TIMER-Event ersetzt habe.

Nach  einem Einfachklick warte ich jetzt,  ob direkt darauf  noch  ein 
weiterer Klick folgt.  Wenn das der Fall ist,  fasse ich beide  Klicks 
zu  einem  Doppelklick zusammen.  Doppelklicks  werden  dadurch  jetzt 
wesentlich  besser  erkannt.  Als Nebeneffekt dauert  es  aber  leider 
manchmal  bis  zu einer halben Sekunde,  bis  auf  einen  Einfachklick 
reagiert  wird.  Das  passiert aber nur,  wenn es  ein  "verdchtiger" 
Einfachklick  ist (z.B.  wenn zwei Events gleichzeitig  gemeldet  wur-
den).


        3.1.3.1.7 "Pulldown Leerzeichen optimieren"

Da  GEM-Meneintrge  immer  mit zwei  Leerzeichen  beginnen  sollten, 
fhrt  Interface diese Optimierung jetzt immer durch,  ein  Abschalten 
dieser  Funktion ist nicht mehr mglich.  Daher entfllt dieser  Men-
punkt.


        3.1.3.1.9 "Parameter automatisch speichern"

Alle  Einstellungen von Interface sowie die meisten Daten der  aktuel-
len  Desktop-Konfiguration  werden beim Beenden  von  Interface  auto-
matisch  gespeichert,  wenn diese Option  eingeschaltet  ist.  Dadurch 
findet  man  Interface nach einem spteren Start  wieder  im  gleichen 
Zustand vor.

Gespeichert wird:

- Die Position aller Icons

- Die Gre,  Position und Sliderposition aller  Resourcedatei-Fenster     
  (dazu zhlt das Baumfenster, Formularfenster und Menfenster)

- Die Position der Baum- und Objekteboxen

- Die Gre, Position und Sliderposition des Desktopfensters

- Die Pfade aller geladenen Resourcedateien

- Die Position jedes geffneten Baumfensters.  Wenn man eine  Resource     
  ldt,  wird  das Fenster an der alten Position  geffnet.  Interface     
  verhlt sich damit hnlich wie der ATARI-Desktop.

Alle  Koordinaten werden bei einem Auflsungswechsel ntigenfalls  an-
gepat, damit immer noch alle Objekte erreicht werden knnen.


        3.1.3.1.10 "Sizebox"

Alle,  die  die  Vergerungsecke eines Objektes nie  finden  konnten, 
knnen sie jetzt mit dieser Option sichtbar machen.


        3.1.3.1.11 "Label-Prefix"

Wenn dieser Punkt selektiert ist,  stellt Interface jedem neu eingege-
benen  Label  eine  einstellbare Anzahl  von  Zeichen  des  Baumnamens 
voraus.  Ein Trennzeichen kann auch definiert werden.  Die  Buchstaben 
werden  nur dann vor das Label gehngt,  wenn das Objekt  bisher  noch 
keinen Namen besessen hat.

Ein Beispiel:  Ein neues Objekt im Baum "SETTINGS" soll den Namen "OK" 
bekommen.  Label-Prefix  ist auf 3 Zeichen gesetzt,  das  Trennzeichen 
ist "_". Dadurch bekommt das Objekt den Namen "SET_OK" zugewiesen.


        3.1.3.1.12 "Objekt-Popup"

Mit dieser Option lt sich das Popup ausschalten,  das ansonsten beim 
Selektieren  eines Objektes erscheint.  Alle darin  enthaltenen  Funk-
tionen  knnen  deshalb  auch ber die  Menleiste  im  Men  "Objekt" 
erreicht  werden.  Dadurch ist das Selektionsverfahren  von  Interface 
"kompatibler"  zu anderen Programmen (ein Klick auf ein Objekt  selek-
tiert es, anstatt das Popup erscheinen zu lassen).


        3.1.3.1.13 "Men-Tastaturkrzel anordnen"

Wenn dieser Punkt selektiert ist,  werden eventuell vorhandene  Tasta-
turkrzel  (z.B.  '^Q') in Meneintrgen automatisch rechtsbndig  an-
geordnet, so da alle Krzel untereinander stehen.


      3.1.3.2 Menpunkt "Raster..."

Das  XY-Raster  fr  Objektpositionen wird  jetzt  fr  jede  Resource 
getrennt  verwaltet.  Wenn man das HRD-Format benutzt,  wird  das  ak-
tuelle Raster mit der Resource abgespeichert.


      3.1.3.5 Menpunkt "Raster benutzen"

Mit diesem Punkt kann man das eingestellte Raster aller Resourcen  auf 
Pixelraster  umschalten.  Bei einer erneuten Anwahl werden  die  alten 
Rastereinstellungen restauriert.  Der Sinn ist eine schnelle  Umschal-
tung zwischen Buchstaben- und Pixelraster.


      3.1.3.6 Menpunkt "Objektnummern fest"

Durch  diesen Menpunkt kann man verhindern,  da  sich  Objektnummern 
bei  Aktionen verndern.  Statt dessen ndert Interface nur  die  Ver-
kettung der Objekte,  sowohl in Dialogen als auch in Menbumen.  Wenn 
diese  Option  selektiert ist,  ndert Interface auch nicht  mehr  die 
Position unsortierter Menbaumeintrge.

Wenn  ein neues Objekt in einen Baum eingefgt wird,  wird es  an  das 
Baumende  angehngt  und verndert daher nicht die  Objektnummern  an-
derer  Objekte  in  diesem Baum.  Das Sortieren  in  Bumen  ist  auch 
mglich.  Dabei wird nur die Objektverkettung umgehngt,  alle Objekte 
bleiben an ihrem Platz.

Wenn  dieser  Schalter gesetzt ist,  sollte es  leicht  mglich  sein, 
Resourcen fremder Programme zu ndern,  ohne da das Programm  dadurch 
nicht  mehr lauffhig ist.  Es kann nur zu Fehlern  kommen,  wenn  ein 
Programm  der Objektverkettung der eigenen Resource  folgt.  Aber  das 
drfte fast nie vorkommen.


    3.1.4 Das Men "Objekt"

Alle Eintrge dieses Mens entsprechen dem Objekte-Popup (s.  3.3.2.5) 
und dienen dazu,  diese Funktionen aufrufen zu knnen,  wenn das Popup 
ab geschaltet ist (s. 3.1.3.1.12).


    3.1.5 Das Men "Fenster"

In  diesem  Men  sind die ersten  10  geladenen  Resourcedateien  an-
whlbar.  Sinn  der  Aktion  ist,  da man  auch  mit  ausgeschaltetem 
Desktop  Fenster fr Resourcedateien ffnen kann.  Man kann es  natr-
lich auch benutzen,  um schnell das Fenster einer bestimmten Datei  zu 
toppen (bzw. zu ffnen).

Die  Resourcedateien 11 bis 15 sind weiterhin nur ber den  Interface- 
Desktop erreichbar.


  3.2 Der Desktop

Ein Tip fr alle,  die den Interface-Desktop abschalten wollen:  Desk-
top ins Fenster legen,  Parameter speichern,  Interface erneut  laden, 
Desktop  schlieen,  Parameter erneut speichern.  Bei  allen  weiteren 
Starts erscheint dann kein Desktop mehr.  Man kann den Desktop  wieder 
ffnen,  indem  man  die Copyright-Meldung anzeigen  lt  (etwas  ex-
travagant,  aber was soll man machen...),  oder indem man den  Desktop 
nicht mehr ins Fenster legt.

Empfehlenswerter  ist  es  aber,  den Desktop als  Fenster  soweit  zu 
verkleinern,  da nur noch der Papierkorb,  das Clipboard und ein  bis 
zwei Resourcedateien sichtbar sind.  Wenn der Desktop in einem Fenster 
liegt,  kann man unter MultiTOS auch Objekte anwhlen und verschieben, 
wenn der Desktop im Hintergrund liegt.  Das gleichzeitige Drcken  der 
rechten Maustaste ist dann nicht ntig.


    3.2.1 Die Funktionstasten F1 bis F10

F8: Umschalten  vom  eingestellten Raster auf das  Pixelraster  (1*1). 
    Entspricht Menpunkt "Raster benutzen" (Punkt 3.1.3.5).


    3.2.5 Das Clipboard

Das Interface-Clipboard wird fr Objekte aus Formular- und  Menbumen 
benutzt.  Objekte zieht man einfach auf das Clipboard,  bzw. zieht sie 
wieder  aus dem Clipboard auf ein Dialog- oder Menfenster.  Wenn  das 
Clipboard-Icon  verschoben werden soll,  mu man es  erst  selektieren 
(Mausklick  oder Rubberbox) und kann es dann verschieben.  Solange  es 
nicht selektiert ist, kann man den Inhalt "herausziehen".

Man  darf  selbstverstndlich auch mehrere Objekte  gleichzeitig  aufs 
Clipboard  kopieren.  Wenn  man  die Shift-Taste  beim  Loslassen  der 
Maustaste  gedrckt  hlt,  werden die Objekte auf das  Clipboard  ko-
piert. Im anderen Fall werden sie ins Clipboard verschoben.

Das hier beschriebene Clipboard ist nur Interface-Intern,  d.h. es hat 
nichts  mit einem eventuell vorhandenen Clipboard-Ordner zu  tun.  Da-
gegen  funktionieren  die weiter  oben  beschriebenen  Clipboard-Funk-
tionen  in  den  Textfeldern von  Dialogboxen  mit  dem  Standard-GEM-
Clipboard.  Alle  Funktionen des Clipboards lassen sich auch ber  die 
Menleiste mit "Ausschneiden", "Kopieren" und "Einfgen" ausfhren.


  3.3 Editieren einzelner Bume

Formularfenster  und  Menfenster werden relativ zum  Baumfenster  ge-
ffnet.  Das  soll  die bersicht etwas erhhen und drfte  vor  allem 
Grobildschirmbesitzer freuen.


    3.3.1 Editieren von Menbumen

Die  Shortcuts in Menbumen werden bei entsprechender Einstellung  im 
Optionen-Men automatisch rechtsbndig angeordnet.  Dabei beachtet In-
terface folgende Regeln zur Erkennung:

- Der Shortcut startet hinter dem ersten Leerzeichen,  das von  rechts 
  gefunden wird.

- Vor  der Tastenangabe mu mindestens ein Kontrollzeichen fr  Shift, 
  Control oder Alternate stehen,  oder es folgt sofort die Tastenanga-
  be; dann sind aber nur Sondertasten wie HELP, INSERT usw erlaubt.

- Nach dem oder den Kontrollzeichen mu eine 1 Zeichen lange Tastenan-
  gabe folgen, oder eine Angabe einer Sondertaste.

Wenn diese Bedingungen erfllt sind, werden die Shortcuts nach folgen-
den Regeln angeordnet:

- Vor jedem Shortcut mssen mindestens 2 Spaces stehen.

- Steht am Textende ein "..." (z.B.  in "ffnen..."),  dann reicht  in 
  dieser Zeile 1 Space vor dem Shortcut aus.

Die  erlaubten Zeichen fr die Kontrolltasten stehen in der  Interface 
Resource im Free String "SHORTCUT".  Die erlaubten Sondertasten stehen 
im  Free  String "SH_KEYWORDS".  Vor und hinter jeder  Sondertaste  in 
diesem Free String mu ein "/" stehen.

Dadurch  sind fast alle denkbaren Shortcuts von  Interface  erkennbar. 
Einzige Ausnahme ist ein einzelner Buchstabe,  vor dem kein  Kontroll-
tastenzeichen  steht.  Ich  habe diese  Mglichkeit  absichtlich  aus-
geklammert,  damit Interface nicht versehentlich ein Zeichen aus einem 
Meneintrag ohne Shortcut falsch anordnet (z.B. "Bild 1").

Meneintrge  werden  immer vollstndig  mit  Leerzeichen  aufgefllt, 
damit man unter MultiTOS Submens verwenden kann.

Man  kann  jetzt  auch in  Menbumen  einzelne  Objekte  selektieren. 
Dadurch kann man sie ber die Menleiste lschen,  und ist nicht  mehr 
auf den Papierkorb des Desktops angewiesen.  Es gibt jetzt  eigentlich 
keinen  Grund mehr,  den Interface-Desktop unter  einem  Multitasking- 
Betriebsystem einzuschalten.  Die einzige Einschrnkung in  Menbumen 
ist,  da man immer nur ein Objekt zur Zeit selektieren kann.
Wenn  man einen Mentitel ausschneidet,  wird das dazu gehrige  Pull-
down nicht mit ins Clipboard kopiert,  da es zu einer anderen  Objekt-
hierarchie gehrt.


    3.3.2 Editieren von Formularbumen

      3.3.2.2 Objekte ndern

Alle  erweiterten Flags lassen sich editieren.  Dazu gibt es in  allen 
Edit-Dialogboxen den Button "Extended Flags".

In  jeder  Dialogbox kann man durch den Button "Nchstes"  direkt  von 
einem Objekt zum nchsten gelangen.  Dabei werden erst alle Daten  der 
Dialogbox  bernommen,  bevor  darin die Daten  des  nchsten  Objekts 
angezeigt werden.

Der  Button "HELP" zeigt eine Hilfeseite an,  in der alle  erweiterten 
Objekttypen  der geladenen EXTOBFIX-Datei erlutert  werden.  Im  Box-
Text-Dialog  wird auerdem noch eine Hilfeseite ber  alle  te_pvalid- 
Platzhalter der TEDINFO-Struktur angezeigt.


        3.3.2.2.9 Maske

Im  Boxtext-Dialog sind fr te_pvalid die Zeichen "A"-"Z" und  "a"-"z" 
zugelassen,  damit  man  fr eigene  benutzerdefinierte  Objekte  neue 
Eingabetypen verwenden kann.  Der "HELP"-Button zeigt eine  Hilfeseite 
ber alle te_pvalid-Platzhalter an.


      3.3.2.3 Objekte kopieren/verschieben

Beim  Verschieben eines Objekts kann man das Objekt jetzt "unter"  ein 
anderes  Objekt  schieben.  Es wird dem Zielobjekt  nicht  mehr  auto-
matisch  als  Child zugeordnet,  wenn man auf die Alertbox  "Soll  die 
Objektstruktur  gendert  werden?  Abbruch/Nein/Ja"  mit  "Nein"  ant-
wortet.  Diese Alertbox erscheint nur, wenn das verschobene Objekt und 
das Zielobjekt ein gemeinsames Parent besitzen.  Dadurch soll  verhin-
dert werden, da ein Objekt auerhalb des Parents liegen kann.

Wenn man mehrerer Objekte innerhalb eines Fensters  verschiebt,  blei-
ben die Objekte auch nach der Verschiebeaktion selektiert,  damit  man 
sie  ggf  noch  weiter  verschieben kann und  nicht  wieder  alle  neu 
selektieren  mu.  Auerdem verndert Interface dabei nicht  mehr  die 
Objektreihenfolge, nur die Verkettung wird u.U. gendert.

Die  lstige  Alertbox  "Soll  das Objekt  wirklich  auf  sich  selbst 
kopiert werden?" gibt es nicht mehr.  Die Kopieraktion wird nicht mehr 
durchgefhrt, wenn das Objekt um keinen Pixel verschoben wurde.


      3.3.2.5 Zustzliche Funktionen im Popup

        3.3.2.5.2 Sortieren

Die Sortierrichtung lt sich invertieren.  Dadurch bauen sich Dialoge 
von  unten  nach oben bzw von rechts nach links auf.  Man  sollte  von 
dieser Mglichkeit aber so selten wie mglich Gebrauch machen,  da  es 
nicht  besonders  schn  aussieht,  wenn ein Dialog  auf  diese  Weise 
gezeichnet wird.

Manuelles Sortieren: Die zu sortierenden Objekte mssen in der Reihen-
folge angeklickt werden,  in der sie spter gezeichnet werden  sollen. 
Wenn alle Objekte "weggeklickt" wurden,  wird ein "Pling"  ausgegeben. 
Der Vorgang lt sich mit der rechten Maustaste abbrechen.


4 Der Iconeditor

In der Dialogbox,  die den Iconeditor aufruft, knnen Icons und Images 
durch  den  Button  "Minimale Gre" soweit  wie  mglich  verkleinert 
werden,  ohne  da Daten verloren gehen.  Dabei wird das Image  soweit 
nach links oben geschoben,  bis kein weier Rand mehr existiert.  Dann 
wird der rechte und untere Rand abgeschnitten.  Zuletzt wird das Image 
wieder zentriert.


  4.1 Die Menleiste

    4.1.1 Das Men "Datei"

      4.1.1.1 Menpunkt "Grafik ausschneiden"

Der  Menpunkt wurde zum besseren Verstndnis in die Menpunkte  "Gra-
fik  laden" und "Grafik ausschneiden" unterteilt.  Mit "Grafik  laden" 
kann  man  ein neues Bild laden.  An "Grafik  ausschneiden"  hat  sich 
nichts gendert.


    4.1.2 Das Men "Bearbeiten"

      4.1.2.4 Menpunkte "Ausschneiden", "Kopieren" und "Einfgen"

Der  Iconeditor untersttzt das GEM-Clipboard.  Alle Icons und  Images 
werden  im  IMG-  und  im  ICO-  (IconEdi)  Format  abgespeichert  und 
geladen.

Kopieren     (Control-C): Das  Icon/Image wird auf das  Clipboard  ko-
                          piert.

Ausschneiden (Control-X): Das  Icon/Image wird auf das  Clipboard  ko-
                          piert und danach gelscht. 
Einfgen     (Control-V): Das  Icon/Image des Clipboards wird  in  den 
                          Iconeditor bernommen.

      4.1.2.5 Menpunkt "Iconvorschau"

Mit  diesem Punkt kann man die obere Iconleiste  ausschalten.  Dadurch 
hat  man  jetzt auch bei greren Icons eine gengend  groe  Arbeits-
flche.  Die Einstellung von "Iconvorschau" wird mit "Parameter  sich-
ern" gespeichert.


5 Speicherformate

    5.2.4 Das ICO-Format

Interface  verwendet das ICO-Format,  wenn man im Iconeditor ein  Icon 
auf das GEM-Clipboard kopiert.  Das ICO-Format wurde von Stefan  Mnch 
in  seinem Programm "IconEdi" eingefhrt.  Ich zitiere jetzt  die  Er-
luterung des Formats aus der IconEdi-Anleitung:

<Zitat Anfang>
IconEdi  speichert Icons und Images in einem Format ab,  das  auf  den 
blichen  GEM-Strukturen beruht,  trotzdem aber sehr leicht  zu  hand-
haben und zu implementieren ist.

Dateien  dieses  Formats  haben einen  Kopf,  der  mit  einer  Kennung 
beginnt (einer 'magischen Zahl'),  ber Version und Kopflnge Auskunft 
gibt und auf einen Objektblock zeigt.  Ab dort ist dann  weiterverzei-
gert.  Die  Verzeigerung bezieht sich immer auf den  Dateianfang,  und 
die Adressen liegen im Motorola-Format vor.  Als Dateiextension sollte 
'ICO' gewhlt werden.

Der  Kopf  sieht  so aus (die Notation ist an die  im  Profibuch  ver-
wendete angelehnt):

Offset | Struktur                 |
       |                          |
       | typedef struct           |
       | {                        |
 0     |   char icon_magic[4];    | /* enthlt 'ICON'; $49434F4E    */
 4     |   int icon_version;      | /* Versionsnummer, wie beim TOS;*/
       |                          | /* Start bei $0000 (so wie hier */
       |                          | /* vorgestellt)                 */  
 6     |   int icon_headerlength; | /* Lnge des Headers in Words,  */
       |                          | /* Standard : 5                 */
 8     |   int *objectblock;      | /* Zeiger auf den Objektblock   */
       | } ICONHEADER;            |

Die Entscheidung,  was fr ein Objekt die Datei enthlt,  wird  anhand 
ob_type  getroffen und ob_spec zeigt auf eine entsprechende  Struktur. 
IconEdi untersttzt nur Icons und Images;  prinzipiell kann in  diesem 
Format aber jedes Objekt gespeichert werden.
<Zitat Ende>


6 Interface-Anpassung

  6.1 Die Objektebox

Man  kann  jetzt eigene Objekte in die Objektebox von  Interface  ein-
binden (FlyDial-Ecke,  OK-Button,  ...).  Dazu ldt man die Interface-
Resource und kopiert das gewnschte Objekt in den "OBJEKTE"-Baum.  Die 
Sortierreihenfolge  ist egal,  es kommt nur darauf an,  da  das  neue 
Objekt  in  der  inneren Box landet,  in der  sich  auch  die  anderen 
Objekte befinden.

Das  neue  Objekt  wird nach dem Start von  Interface  nicht  als  ein 
G_USERDEF-Objekt  angezeigt,  damit  nicht versehentlich von  der  An-
passungsroutine  Daten  verndert  werden  (z.B.  Objektgre,  Flags, 
...).


  6.2 Lattice C und die RSH-Sourcecodeausgabe...

Fr  alle Lattice C-Fans befindet sich in der  Interface-Resource  der 
Free String 'OBSPEC_CAST' mit dem Inhalt "(LONG)" fr die  Sourcecode-
ausgabe.  Da  Lattice  C mit (LONG) nicht  zurechtkommt,  sondern  vor 
ob_spec  zwingend  auf  (VOID *) besteht,  kann  man  es  jetzt  durch 
nderung der Interface-Resource umdefinieren.


  6.3 Modula 2 Ausgabe

Fast  alle  Strings der Modula-Headerausgabe liegen jetzt in  der  In-
terface Resource und sind dadurch frei definierbar.


  6.4 Alertboxen

Die  Default-Buttons und Abbruch-Buttons der Alertboxen sind  konfigu-
rierbar. Dazu ein Beispiel:
Beim  Verlassen des Programms fragt Interface,  ob die  genderte  Re-
source-Datei  gespeichert  werden soll.  In dieser  Alertbox  ist  der 
"Verlassen"-Button  immer selektiert,  d.h.  wenn Sie  Return  drcken 
wrden,  wird  die  Datei nicht gespeichert,  sondern  Interface  wird 
sofort beendet.
Wenn  Ihnen das zu gefhrlich sein sollte,  dann laden Sie  bitte  die 
Interface Resource ein,  und fgen Sie vor dem "Speichern"-Button  der 
Alertbox einen Punkt als erstes Zeichen ein.  Dadurch ignoriert Inter-
face  die  Grundeinstellung,  und  nimmt diesen  Button  als  Default-
Button.
Wenn  Sie  in der Alertbox den "Verlassen"-Button mit  der  UNDO-Taste 
bedienen  wollen,  dann  fgen Sie bitte als erstes  Zeichen  vor  dem 
"Verlassen"-Text einen Doppelpunkt ein.
Diese Konfigurationsmglichkeit ist mit allen Alertboxen machbar.

Nochmals kurz:
    "." Default Button (wird mit Return selektiert)
    ":" Abbruch Button (wird mit UNDO selektiert)


7 Programmierung eines EXTOBFIX-Programms

Interface  2.0  untersttzt eine Hilfeseite in  jeder  Extobfix-Datei. 
Diese  Hilfeseite kann in Interface in jedem  Objekt-Dialog  angezeigt 
werden.  Der Zeiger auf den Baum der Hilfeseite mu im  Funktionsarray 
an  letzter  Stelle definiert werden (siehe  neue  MyDial-Extobfix-Da-
tei).  Extobfix-Dateien  mit Hilfeseite erhalten den Magic  "06101965" 
statt "06101964".

Der  Baum  wird von Interface an  die  erweiterten  MyDial-Objekttypen 
angepat.  Die  ersten beiden Objekte (FlyDial-Ecke  und  berschrift) 
mssen  immer  die  Objektnummern 1  und  2  besitzen.  Alle  weiteren 
Objekte  sind frei definierbar,  die Anzahl der Objekte und die  Gre 
des Dialoges ist ebenfalls nicht vorgegeben.

Wenn  eine  Extobfix-Datei  mit Hilfeseite  geladen  wurde,  wird  von 
Interface  immer diese Seite angezeigt.  Ansonsten wird eine  Default- 
MyDial-Hilfeseite angezeigt.


9 Die Accessory-Pipeline

Da  sich  an der internen Verwaltung von  Interface  einiges  gendert 
hat,  ist  die  Beschreibung der ACC-Pipeline im Handbuch  auch  nicht 
mehr  in allen Punkten richtig.  Da aber meines Wissens nach noch  nie 
jemand  die  ACC-Pipeline  benutzt hat,  spare  ich  mir  eine  genaue 
Erluterung  der  nderungen.  Falls doch jemand  dafr  ein  Programm 
schreiben  mchte,  sollte er sich direkt an mich  wenden.  Ich  helfe 
dann gerne weiter.


10 Lange Resourcen benutzen

Auf  der Diskette finden sie die beiden Dateien XRSRC.C  und  XRSRC.H. 
Wenn  Sie diese Dateien in Ihr Programm aufnehmen,  knnen  Sie  damit 
(fast) beliebig lange Resourcen laden.
Sie  mssen dazu keine groen nderungen an Ihrem Programm  vornehmen. 
Die einzige nderung besteht darin,  da Sie vor einigen AES-Kommandos 
ein "x" einfgen. Folgende Kommandos mssen umbenannt werden:

rsrc_load  in xrsrc_load
rsrc_free  in xrsrc_free
rsrc_gaddr in xrsrc_gaddr
rsrc_saddr in xrsrc_saddr
rsrc_obfix in xrsrc_obfix

Alles andere bleibt beim alten.

Die vernderte RSHDR-Struktur ist in XRSRC.H definiert.

Die Routinen benutzen 3 globale Variablen,  die Sie in Ihrem  Programm 
definieren und initialisieren mssen:

gl_wbox = Breite eines Zeichens
gl_hbox = Hhe eines Zeichens
desk    = x,y,w,h-Struktur  mit  X-Position,  Y-Position,  Breite  und 
          Hhe des Desktops

An gl_wbox und gl_hbox kommt man mit folgendem Aufruf:
graf_handle (&gl_wbox, &gl_hbox, &gl_wattr, &gl_hattr);

desk erhlt man mit:
wind_get (DESK, WF_WXYWH, &desk.g_x, &desk.g_y, &desk.g_w, &desk.g_h);

desk  ist eine Struktur aus 4 Integern,  die z.B.  in AES.H als  GRECT 
deklariert ist.

Leider  behersche  ich nur die Sprache C,  daher liegen  die  Routinen 
auch  nur  im C Source bei.  Wenn irgend jemand die Routinen  in  eine 
andere  Sprache  bersetzen mcht,  helfe ich  ihm  gerne  dabei.  Die 
bersetzten  Routinen  werde  ich dann auch  mit  auf  die  Interface-
Diskette packen.

Falls  jemand  die Routinen in einer anderen Sprache  brauchen  sollte 
und  sie nicht selbst bersetzen kann,  sollte er bei der Firma  Shift 
oder  bei mir anfragen,  ob es inzwischen fr die  gewnschte  Sprache 
eine Version gibt.


11 C-Source Resourcen

  11.1 Initialisierung der Resource

Da  die  Resource bereits weitestgehend  von  Interface  initialisiert 
wurde,  entfllt  die ganze komplizierte Anpassung aller  Zeiger.  Man 
mu  die  Resource  nur noch mit folgender  Routine  an  die  aktuelle 
Auflsung anpassen:

for (i = 0; i < NUM_OBS; i++)
   rsrc_obfix (&rs_object[i], 0);

NUM_OBS ist in der *.RH Datei definiert,  die zustzlich zu der  *.RSH 
Datei abgespeichert wird.


  11.2 Resourcen in CPX-Modulen

Da die Interface C-Sourcecodeausgabe bereits optimiert  wurde,  stimmt 
sie nicht mehr mit der Ausgabe des alten Atari RCS berein.  Besondere 
Probleme gibt es bei der CPX-Programmierung,  da die CPX Routinen  nur 
das  alte Format akzeptieren.  Die Lsung besteht darin,  da man  den 
CPX-Aufruf  zur Initialisierung der CPX-Resource nicht  benutzt,  son-
dern statt dessen folgende Routine ausfhrt:

if (!xcpb->SkipRshFix)
{
   for (i = 0; i < NUM_OBS; i++)
      (*xcpb->rsh_obfix) (&rs_object[i], 0);
}

Die  Variablennamen  halten  sich an  die  Schreibweise  des  CPX-Ent-
wicklungspakets von Atari. In dieser Routine werden nur alle Objektpo-
sitionen der Resource angepat.  Alle weiteren Anpassungen  entfallen, 
da  die entsprechenden Variablen bereits von  Interface  initialisiert 
wurden.


12 Das AV-Protokoll

Das AV-Protokoll ist ein Standard fr Nachrichten zwischen  Accessorys 
und einer Shell.  Gedacht war es fr die Kommunikation zwischen Gemini 
und Accessorys.

Interface  untersttzte  schon immer Teile des AV-Protokolls  von  Ge-
mini.  Leider  ist  das bei der letzten Anleitung  nicht  dokumentiert 
worden  (ich habs vergessen...).  Deshalb folgt jetzt eine kurze  Auf-
listung der von Interface untersttzten AV-Kommandos:

AV_PROTOKOLL    : Interface meldet, da es das Protokoll versteht.

AV_SENDKEY      : Accessorys  knnen nicht ausgewertete Tasten an  In-
                  terface weitermelden.

AV_OPENWIND     : Ein Accessory kann Interface bitten,  ein bestimmtes 
                  Laufwerksfenster zu ffnen (z.B. Treeview).

AV_ACCWINDOPEN  :
AV_ACCWINDCLOSE : Accessorys  melden Interface,  da sie  ein  Fenster 
                  geffnet  haben.  Dadurch kann Interface diese  Fen-
                  ster  in der eigenen Liste verwalten,  und bei  Con-
                  trol-W auf das richtige Fenster umschalten.

AV_STARTPROG    : Ein  Accessory  bergibt Interface  einen  Pfad  mit 
                  einem  Filenamen (z.B.  FSearch).  Wenn dieser  Name 
                  die  Endung  "RSC"  besitzt,  ldt  Interface  auto-
                  matisch diese Resourcedatei ein.

Wenn  man ein Recourcedatei-Icon von Interface auf das  Fenster  eines 
Accessorys  schiebt,  sendet Interface diesem Accessory die  Nachricht 
VA_DRAGACCWIND  mit dem Pfad des Icons,  und bittet damit  das  Acces-
sory, ein Fenster mit diesem Pfad zu ffnen (z.B. Treeview).


13 Tips und Tricks

  13.1 Objektlibrary durch Default-Resource

Da  sich  Interface  jetzt alle geladenen  Resourcedateien  merkt  und 
diese  auch  beim nchsten Start wieder an den  alten  Positionen  er-
scheinen,  knnte  man in eine Resourcedatei alle  hufig  gebrauchten 
Elemente wie z.B.  Slider kopieren, und diese Datei immer mit einladen 
lassen.  Dadurch  kann  man  sich leicht eine  Objektlibrary  fr  die 
persnlichen Bedrfnisse erstellen.

