•  Back 
  •  Titel 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File15.13.3.1.3  Das User-Popup                                        TOS

Für das benutzerdefinierte Popup (kurz User-Popup) existieren die fol- 
genden Felder in der xFSL_PAR-Struktur:

 poptext       Zeiger auf einen Text, der vor dem Popup erscheinen 
               soll oder 0L. Dem Fontselektor steht es frei, diesen 
               Text zu ignorieren.

 num_entries   Anzahl Einträge (d.h. Zeilen) im Popup. Steht hier eine 
               Null, so wird kein Popup angezeigt. Es sollten nicht 
               mehr als 16 Einträge verwendet werden, auch wenn ein- 
               zelne Fontselektoren u.U. auch mehr Einträge unter- 
               stützen.

 sel_entry     Der selektierte Eintrag im Popup (gezählt wird ab 0). 
               Der Fontselektor legt hier die Nummer des angewählten 
               Popup-Eintrags ab und liest den Wert bei jedem Aufruf 
               von xfsl_event wieder neu aus. Somit können Sie den 
               Fontselektor z.B. auch zwingen, statt dem angewählten 
               Eintrag Nummer 3 den mit der Nummer 5 zu aktivieren 
               (bei xFS_POPUP meldet der Fontselektor nur, welcher 
               Eintrag angewählt wurde, aktiviert wird dieser erst 
               beim Rücksprung in den Fontselektor).

 popup         Dies ist ein Zeiger auf ein Array von xFSL_PENTRY- 
               Elementen. An der angegebenen Adresse müssen genau so 
               viele Elemente stehen, wie in `num_entries' angegeben 
               wurden.

Ein Eintrag im Popup ist wie folgt aufgebaut:

     typedef struct
     {
      char         *entry;      /* Text des Popup-Eintrags       */
      PFONTINFO    *fontinfo;   /* Zeiger auf Fontinfo-Struktur  */
      unsigned int  fontflags;  /* erlaubte Fontarten            */
      long          funcflags;  /* Funktionsflags, nur für HuGo! */
     } xFSL_PENTRY;

Die Bedeutung der Elemente dieser Struktur sollte nach den vorangegan- 
genen Ausführungen klar sein. Die Funktionsflags entsprechen den 
Kontrollflags, bis auf die Flags, die das globale Verhalten des 
Fontselektors beeinflußen (CC_WINDOW etc.). Diese werden hier 
ignoriert.

Wichtig: Der Zeiger auf die PFONTINFO-Struktur darf nicht Null sein!

Wenn der Text eines Eintrags mit einem `-' beginnt, wird der ent- 
sprechende Eintrag disabled (in heller Schrift und nicht anwählbar) 
dargestellt. Dies ist in erster Linie für Trennlinien zwischen den 
Einträgen gedacht.


Verwendung

Im Prinzip kann man drei Einsatzgebiete für das User-Popup sehen:

  1. Jeder Popup-Eintrag stellt den Font für einen bestimmten 
     Programmteil ein. Beispielsweise könnte man in einem bestimmten 
     Fenster eines Programms nur nicht-proportionale Fonts zulassen 
     wollen, in einem anderen keine Vektorfonts, in einem dritten alle 
     Fonts.

  2. Jeder Eintrag stellt eine gewisse Gruppe von Fonts zur Verfügung. 
     Braucht man beispielsweise oft Vektorfonts, könnte ein Popup mit 
     den Einträgen "nur Vektorfonts" und "alle Fonts" konstruiert 
     werden.

  3. Das Popup kann aber auch für etwas ganz anderes verwendet werden. 
     Man könnte hier noch eine Information unterbringen, die zwar 
     nichts mit Fonts, aber mit dem Fenster zu tun hat, für das man 
     einen Font einstellen will. Beispielsweise könnte für ein 
     Consolen-Fenster die Art, wie inverse Zeichen darzustellen sind, 
     in Form eines Popups mit den Einträgen "invers", "fett", "unter- 
     strichen" zur Auswahl angeboten werden.

     Will man das Popup so zweckentfremden, so muß man bei der Meldung 
     xFS_POPUP den geänderten Font (der sich am gesetzten FF_CHANGED- 
     Flag erkennen läßt) in alle anderen Popup-Einträge übertragen, da 
     sich sonst der im Fontselektor angezeigte Font ändern würde!