Atari ST - 1994
EnhancedGEM

- Genre
- Programming - Aids / Routines / Tools
- Year
- 1994
- Language
- Compiled C
- Publisher
- [no publisher]
- Controls
- Keyboard / Mouse
- Distributor
- —
- Resolution
- Medium / High / VGA
- Developer
- [n/a]
- ST Type
- ST, STe, TT, Falcon030 / 0.5MB
- Licensed from
- —
- Programmer(s)
- Grunenberg, Christian
- Country

- MIDI
- —
- Software
- German
- Version
- 1.35
- Box/Instructions
- German
- Number of Disks
- 1 / Double Sided / HD Installable
- License
- PD / Freeware / Shareware
- Dump
- Download
- Serial
- —
- Dump format
- MSA
- Protection
- —
INSTRUCTIONS
Version 1.00:
- erste öffentliche Version
Version 1.01:
- SLINFO-Struktur für Echtzeit-Schieberfunktionen
- BUTTON-Struktur für Userdef-Buttons (Radio,Check usw.)
- Absturz in Funktion cycle_image() beseitigt
- Fehler bei der Anpassung der Dialoge an System-Font-Größe
beseitigt sowie Anpassung verbessert
- rc_scr_copy sowie rc_clear in rc_sc_copy und rc_sc_clear umbenannt
Version 1.02:
- POPUP-Struktur für Popup-Menus (Popup())
- Infotext/Cyclebutton wurden nach dem Beenden eines Popups nicht
mehr deselektiert
- bei menu_enable() wird vor dem Neuzeichnen/Löschen des Menus
unter MultiTOS die Applikation ermittelt, der die Menüleiste
gehört
Version 1.10:
- compiliert mit Pure C 1.1
- Userdef-Objekte hoffentlich unabhängig von der Größe des Systemfonts
- Beispiel-Programm für Verwendung der Library
- neue Funktion rc_sc_invert() (invertiert Bildschirmbereiche)
- zusätzlicher Parameter bei dial_opt() -> Niceline funktioniert
jetzt auch bei Popup-Menüs (Funktion menu_tune() entfällt)
- Fehler bei abhängigen Default-Objekt beseitigt (fehlerhafte
Initialisierung)
- einige Fehler in der Popup-Funktion beseitigt
- Popup-Menüs können an Popup-Button ausgerichtet werden
- Cycle-Buttons können über Shift-Alternate-Taste bedient werden
- Mauszeiger wird jetzt nach der Initialisierung auf Arrow gesetzt
- Fehler in ob_set_text/ob_get_text bei G_BOXTEXT beseitigt
- die ASCII-Tabelle (aufrufbar über Shift-Insert) liegt jetzt in
einem modalen Fensterdialog (falls aktiver Dialog in einem Fenster
liegt),der Hintergrund ist weiß und ein Fehler bei der Cursorbe-
handlung wurde beseitigt
- Editcursor-Positionierung per Maus verbessert
- AC_OPEN wurde falsch ausgewertet bzw. teilweise ignoriert
- ACC-Eintrag als neuer Parameter bei init_gem() sowie open_rsc()
- neue globale Variablen menu_id (= ID des ACC-Eintrages) sowie
menu (= Objekt-Baum des Pull-Down-Menüs)
- Pull-Down-Menü wird bei modalen Dialogen automatisch disabled
(sofern die Variable menu gesetzt ist)
- neue Funktion menu_dropped() (testet,ob ein Pull-Down-Menü
heruntergeklappt ist), wodurch viele Probleme mit Tastendrücken
bei heruntergeklappten Pull-Down-Menü beseitigt werden konnten
- DIAINFO-Struktur um di_title (= Adresse des Dialog-Titels)
erweitert
- menu_enable() restaurierte Menüleiste bzw. DISABLED-Flag nicht
mehr korrekt sowie Probleme mit Screenmanager behoben
- WM_TOPPED-Nachricht bei modalen Dialogen wird jetzt korrekt
ausgewertet
- Flag für Objekte, die nur in modalen Dialogen erscheinen sollen
- Fehler in interner is_hidden()-Funktion behoben
- Funktion dial_opt() hat zwei neue Parameter bekommen :
- RETURN betätigt Default-Button oder springt in Dialogen mit
Edit-Feldern in die nächste Zeile
- Hintergrundbedienung von Fensterdialogen an-/ausschalten
- Text mit Attributen beachtet jetzt die im RCS eingestellte Textfarbe
und wird bei kleiner Schrift vertikal korrekt positioniert
- Fehler in ob_xywh beseitigt
- rc_intersect von Joergen von Bargen optimiert
Version 1.11:
- Fehler in rc_intersect behoben
- Rechtecke (GRECT) werden in rc_sc_copy und den damit zusammen-
hängenden Funktionen nicht mehr zerstört
- Fehler im Resource-File des Beispielprogramms beseitigt
Version 1.12:
- Mauszeiger blieb beim Verlassen eines Dialoges als Textcursor ein-
gestellt, wenn er sich über einem Edit-Objekt befand
- Es werden nur noch die Tastendrücke von X_Form_Do durchgelassen,
die nicht im aktiven Dialog vorkommen. Dadurch können jetzt in Menü-
leisten die gleichen Tastenkombinationen wie in Dialogen vorkommen.
- Fehler in get_cookie und remove_cookie beseitigt, die zu Abstürzen
oder Fehlfunktionen führen konnten
- Funktion xdialog() hat zwei neue Parameter erhalten, nämlich
int (*init)(EVENT *) und int (*call_func)(EVENT *) (s. X_Form_Do)
- Fehlerhafter Redraw von Applikations-Fenstern bzw. fehlerhafte Nach-
richtenauswertung bei geöffneter ASCII-Box bzw. modalen Fenster-
Dialogen beseitigt
- einige Funktionen umbenannt:
count_size() -> mfdb_size()
dial_opt() -> dial_options()
dial_col() -> dial_colors()
title_opt() -> title_options()
graf_rt_slide_box -> graf_rt_slidebox()
- über das Makro __MINT_LIB__ kann jetzt die MiNT-Library ab Patch-
level 30 benutzt werden (s. E_GEM.TXT)
- absolute Pfade und andere potentielle Probleme bei der Übersetzung
der Library (z.B. erweiterte PORTAB.H-Datei) aus den Sourcen/Projekt-
dateien entfernt
- rc_copy() liefert einen Wert zurück (int)
- Funktion popup() hat einen neuen Parameter, mit dem der aktuell selek-
tierte Eintrag übergeben werden kann
- Hintergrundbedienung von Fenstern an Falcon-AES angepaßt sowie Fehler
bei Falcon-AES sowie Multi-AES behoben
- Buttons mit Unterstrich für Tastaturbedienung werden bei Bedarf um
2 Pixel vergrößert
- Wurde bei geöffneten Fenster-Dialogen eines Accessories ein Programm
aus einem anderen Programm (nicht dem Desktop) gestartet, so hatte das
System einen Hänger
- Tippfehler im Namen von ob_undoflag behoben
- die automatische Umschaltung von Fensterdialogen auf fliegende Dialoge
bei keinem verfügbaren Fenster mehr funktionierte nicht
- nicht selektierbare (=disabled) Editobjekte konnten angewählt werden
- Redraw bei POPUP_SELECT-Popups war fehlerhaft
Version 1.13:
- Hintergrundbedienung von Fensterdialogen verbessert sowie standard-
mäßig deaktiviert (kompatibler)
- alle internen modulübergreifenden Variablen und Funktionen umbenannt,
so daß keine Überschneidungen mit Anwender-Variablen/Funktionen mehr
vorkommen sollten
- Tippfehler in Deklaration von ob_undoflag endgültig behoben
- Popup-Funktion überarbeitet:
- opt. Positionierung des aktuellen Eintrags über Popup-Button (OBJPOS)
- neue Modi (POPUP_BTN,POPUP_CYCLE,POPUP_BTN_CHK,POPUP_CYCLE_CHK)
- Vorgabe des selektierten Eintrages über den Parameter 'select' funk-
tionierte nicht korrekt bei höherem Objekt-Index als dem aktuellen
- Probleme mit versteckten Objekten behoben
- neue globale Variable 'colors': Anzahl aller verfügbaren Farben
- Probleme mit den Dateifunktionen der MiNT-Lib aufgrund fehlerhafter
Definitionen behoben
- absolute Aufrufe von Funktionen im Projekt-File
- die Funktionen exit_gem() und close_rsc() schließen jetzt evtl. noch
geöffnete Dialoge selbständig und geben somit Speicher/Fenster frei
- die Funktion open_rsc() gibt jetzt den Return-Wert FAIL zurück, wenn
die Resource-Datei nicht geladen werden konnte, und den Wert FALSE,
wenn die Initialsierung über init_gem() nicht funktionierte
- die Funktion init_gem() gibt den Return-Wert FAIL zurück, wenn keine
Workstation geöffnet werden konnte, und den Wert FALSE, wenn die An-
meldung beim AES über appl_init() fehlschlug
- Clipboard-Funktionen in Edit-Feldern verbessert
- Funktion strmfp() erzeugte fehlerhafte Zugriffspfade, wenn der über-
gebene Pfade keinen abschließenden Backslash hatte (z.B. Nullstring)
- Mauszeiger blieb als Textcursor eingestellt, wenn er sich über einem
Edit-Objekt befand und ein neuer Dialog mit Edit-Objekten geöffnet
wurde
- die Clipboard-Funktionen werten jetzt auch die Environment-Variable
SCRAPDIR aus
Version 1.20:
- die Library läßt sich jetzt auch unter GNU-C und Lattice C einsetzen
(dank Markus Kilbinger @ AC), wobei die MiNT-Libraries ab Patchlevel 33
Voraussetzung sind
- ausführliches und kommentiertes Beispielprogramm
- Popup-Menüs können wie normale Dialoge über Hotkeys bedient werden,
wobei die Alternate-Taste nicht gedrückt werden muß
- neue Funktionen:
= ascii_box() -> Aufruf der bisher internen Asciizeichen-Eingabebox
= ob_set_hotkey() -> Ändern des Hotkey-Buchstabens eines Objekts
= ob_get_hotkey() -> Hotkey-Buchstaben eines Objekts abfragen
= graf_busy_mouse() -> rotierende Scheibe als Mauszeiger
= graf_set_slider() -> Initialisierung der Slider-Elemente
Bedeutung des letzten Parameters (=Modus):
-> GRAF_SET_ARROWS initialisiert die Slider-Pfeile
-> GRAF_SET_SIZE_POS setzt Größe und Position des Sliders
-> GRAF_SET entspricht GRAF_SET_ARROWS und GRAF_SET_SIZE_POS
-> GRAF_DRAW_SLIDER zeichnet die geänderte Slider-Elemente
-> GRAF_DRAW entspricht GRAF_SET und GRAF_DRAW_SLIDER
= save_clipping() -> aktuelle Clipping-Area sichern
= restore_clipping() -> Clipping-Area wiederherstellen
= rc_array_to_grect() -> Koordinaten-Array wird in Rechteck (GRECT)
umgewandelt
- Slider-Struktur SLINFO erweitert:
= sl_pos (int) -> aktueller Wert
= sl_max (int) -> maximaler Wert
= sl_page (int) -> Seitenlänge
-> automatische Verwaltung der Slider-Werte
- Popup-Struktur POPUP erweitert:
= p_set (boolean) -> Popup-Button-Text automatisch setzen
- neue globale Variable 'redraw' enthält einen Wert ungleich Null, wenn
gerade Teile von Fensterdialogen aufgrund von Redraw-Nachrichten neu-
gezeichnet werden
- bei einem fehlerhaften Aufbau des Resource-Files werden jetzt ent-
sprechende Warnungen ausgegeben
- Flugecke wird jetzt an die Rahmendicke des Elternobjekts angepaßt
- Assembler-Routinen an Resource-Files > 32 Kb angepaßt
- Fliegen mit nicht-selektierbaren/editierbaren Objekten default-mäßig
deaktiviert (kann über zusätzlichen Parameter der Funktion dial_options()
aktiviert werden)
- Probleme mit Mausform bei springenden Dialogen sowie Popups behoben
- Doppelklick auf Exit-Objekte funktionierte nicht
- Probleme mit Alternate-Tastenkombinationen in Pull-Down-Menüs bei aktivem
Dialog mit Edit-Feldern behoben
- Index-Rückgabe der Popupfunktion war fehlerhaft
- Darstellung von Text mit VDI-Attributen war in seltenen Fällen fehler-
haft, u.a. wird jetzt auch die Ausrichtung von G_TEXT beachtet
- die Funktionen ob_set_text/ob_get_text arbeiten jetzt auch bei Text mit
VDI-Attributen korrekt
- Probleme bei gleichzeitig aktiven fliegenden Dialogen und Fenster-
dialogen behoben
- Positionierung von Hotkeys verbessert
- einige interne Vorgänge optimiert (auch in Hinblick auf Flexibilität der
Resource-Struktur), so daß u.a. die Ereignisauswertungs-Funktion, welche
als Zeiger an die Funktionen xdialog/X_Form_Do/ascii_box übergeben werden
kann, keinen Wert mehr zurückgeben muß ((void)(*call_func)(int))
Version 1.30:
- Unterstützung von Winx >=2.10 und Mag!X >= 2.00
- kleinere Fehler in der Anpassung an Lattice C und GNU-C behoben
- neue Funktionen:
= appl_getfontinfo(int ap_gtype,int *height,int *id,int *type)
-> Informationen (Größe, Font-ID, Typ) über Systemzeichensätze
= xalert(int default,int icn,BITBLK *usr_icn,char *title,char *txt,
char *btns,int (*foo1)(EVENT*),void (*foo2)(EVENT *))
-> Alert-Funktion mit 18 verschiendenen Icons (auch benutzerde-
finierte Icons beliebiger Größe), beliebig lange Zeilen/Buttons,
maximal 10 Zeilen/5 Buttons, Buttons per Hotkey anwählbar
(auch ohne Alternate-Taste)
= ob_draw_lst(DIAINFO *info,int *list,GRECT *area)
-> Zeichnet eine Liste von Objekten (letztes Element <=0) im an-
gegebenen Bildschirmausschnitt
- neue globale Variablen:
= (int) small_font_id,ibm_font_id:
-> Fond-Identifikationsnummern des kleinen/normalen System-Fonts
= (int) fonts_loaded:
-> Anzahl der geladenen GDOS-Fonts bzw. Null
= (DIAINFO *) dinfo
-> Zeiger auf die DIAINFO-Struktur des obersten Dialogs
= (int) winx:
-> Winx >= 2.10 vorhanden ?
= (int) magx:
-> Mag!X >= 2.00 vorhanden ?
- Anpassung an verschiedene System-Zeichensätze verbessert
- Funktion graf_busy_mouse() war aufgrund einer Vertrauschung von Daten
und Maske des Mauszeigers fehlerhaft
- Funktion ob_set_hotkey() kann jetzt auch Hotkeys entfernen, wenn man
als Hotkeyzeichen '\0' übergibt
- die Funktion Popup() liefert jetzt in Bit 15 zurück, ob der Eintrag
per Doppelklick bzw. mit gedrückter Shift-Taste angewählt wurde
- Nachricht OBJC_EDITED wird an Hauptprogramm weitergegeben, wenn
ein Editfeld verändert wurde
- Bildschirmausgabe über ob_draw_chg() war bei Objekten, welche sich
am linken Bildschirmrand befanden, fehlerhaft, sofern kein Ausgabe-
rechteck angegeben wurde
- Redraw-Fehler unter Winx 2.1 beseitigt
- Radio- und Check-Buttons konnten nicht gleichzeitig DISABLED und
SELECTED sein
- EXIT-Objekte ohne SELECTABLE-Status wurden wie TOUCHEXIT-Objekte be-
handelt
- Editcursor wurde beim Öffnen eines Dialogs manchmal auf Editfelder mit
DISABLED-Status gesetzt
- Probleme mit unterschiedlicher Deklaration der vq_gdos()-Funktion be-
hoben
- fehlerhafte Resource-Struktur in Pull-Down-Menüs bei manchen Resource-
Construction-Sets wird abgefangen
Version 1.35:
- neue Funktionen:
void redraw_dialog(DIAINFO *info,GRECT *area)
=> Bereich 'area' des Dialogs 'info' neuzeichnen
void move_dialog(DIAINFO *info,GRECT *area)
=> Dialog 'info' zu neuer Position 'area' verschieben
void redraw_iconified(int handle,OBJECT *icon,GRECT *area)
=> Ikonifiziertes Fenster neuzeichnen
=> neue globale Variable: (OBJECT *) iconified
= Zeiger auf Objektbaum zur Darstellung von Fensterdialogen
im ikonifizierten Zustand
int ob_get_parent(OBJECT *tree,int obj)
=> Elternobjekt eines Objekts suchen
- neuer erweiterter Objekttyp:
Undo-Button (19)
=> dieser Typ kann jedem beliebigen normalem Objekt gegeben werden,
wobei die Undo-Funktion in Edit-Feldern dann deaktiviert ist
- Iconifizierung von Fensterdialogen unter MTOS (abschaltbar durch
NO_ICONIFY im Dialogtyp)
- neuer Parameter 'undo' bei der Funktion xalert(), um gegebenenfalls
einen Undo-Button zu definieren
- neue Parameter 'keys' und 't_small' bei der Funktion dial_options():
=> 'keys': bei Bedarf werden alle nicht ausgewerteten Tastendrücke
an die Applikation weitergeleitet (auch bei modalen
Dialogen)
=> 't_small': Überschriften in Dialogen mit kleiner Schrift
- neuer Parameter 'all' bei der Funktion scrap_clear(), um das komplette
Clipboard und nicht nur Scrap-Dateien zu löschen
- die Variablen 'magx' und 'winx' enthalten die Versionsnummern von Winx
(>= 2.10) sowie Mag!X (>= 2.00)
- Anpassung an unterschiedliche Größen des System-Fonts verbessert
- Probleme mit modalen Fenster-Dialogen im Zusammenspiel mit Anwendungs-
fenstern behoben
- Probleme mit Editcursor sowie Mauszeiger bei Fenster wechseln oder
verschieben behoben
- Probleme mit der Menüleiste bei Alert-Boxen über modalen Fenster-
dialogen behoben
- Checkboxen und Radio-Buttons wurden in Farbauflösungen teilweise
falsch konvertiert (halbe Höhe) bzw. positioniert
- bei modalen Dialogen im Vordergrund können keine Hintergrunddialoge
mehr geschlossen werden
- Fehler in remove_cookie() behoben
- die Funktionen xalert() bzw. xdialog() stürzten teilweise ab
- Anpassungen an GNU-C und Lattice C, u.a. appl_getinfo implementiert
- Funktion 'typetest()' im Modul 'rc_ob_c.c()' funktionierte nicht bei
erweiterten Objekten
- Identifikations-String der Library im Modul 'dial.c'
- eigene Timer-Funktion funktionierte nicht bei Timer-Werten>32767
- Clipping bei Echtzeit-Slidern in Hintergrundfenstern war fehlerhaft
- Drag & Drop - Nachrichten werden an die Applikation bei aktiven
Dialogen weitergeleitet
- kleinere Anpassungen an 3D-Look unter MTOS bzw. Falcon-TOS
- Alert-Boxen sind ab dieser Version system-modal (vorher applikations-
modal
