AtarimaniaAtarimania

Atari ST - 1994

EnhancedGEM

EnhancedGEM — screenshot 1
1 / 4
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
Germany
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