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!