home *** CD-ROM | disk | FTP | other *** search
-
- #include <e_gem.h>
- #include "example.h"
-
- char *help[] =
- {
- "",
- " Fähigkeiten der EnhancedGEM-Library:",
- "======================================",
- "- läßt sich mit GNU-C,Pure C (Pure-C-",
- " Libraries als auch MiNT-Libraries) und",
- " Lattice C einsetzen",
- " (dank Markus Kilbinger @ AC)","",
- "- beliebig viele Fensterdialoge und",
- " fliegende Dialoge gleichzeitig","",
- "- fliegende Dialoge springen zur Maus-",
- " position bei Mausklick außerhalb des",
- " Dialogs","",
- "- Rechtsklick auf Objekt im Vorder-",
- " grund-Dialog simuliert Doppelklick","",
- "- Fensterdialoge optional auch (!) vor",
- " MTOS/Falcon-TOS ohne zusätzlich ge-",
- " drückte rechte Maustaste im Hinter-",
- " grund bedienbar (funktioniert teil-",
- " weise nicht einwandfrei bei aktivem",
- " ArrowFix von Martin Osieka)","",
- "- unmodale/modale Fensterdialoge","",
- "- erweiterte Alert-Funktion:",
- " --------------------------",
- " - 18 vordefinierte Icons",
- " - benutzerdefinierte Icons mit be-",
- " liebiger Größe",
- " - beliebig langen Zeilen und Buttons",
- " - maximal 10 Zeilen sowie 5 Buttons",
- " - Buttons über Hotkey anwählbar",
- " (ohne Alternate-Taste)","",
- "- Tastaturbedienung der Dialoge, wobei",
- " in Dialogen mit Eingabe-Feldern zusätz-",
- " lich die Alternate-Taste gedrückt werden",
- " muß (Doppelklick durch zusätzlich ge-",
- " drückte Shift-Taste)","",
- "- erweiterte Eingabemöglichkeiten:",
- " --------------------------------",
- " - exakte Cursorpositionierung per Maus",
- " - Mauscursor wird über Eingabefeldern",
- " zum Textcursor",
- " - erstes/letzes Eingabefeld",
- " (Home/Shift-Home)",
- " - Wort vor/zurück (Ctrl-Left/Right)",
- " - Anfang/Ende des Eingabesfeldes",
- " (Shift-Left/Right)",
- " - nächstes Eingabefeld",
- " (Tab/(Shift-) Enter/Return",
- " - Eingabefeld löschen (Esc)",
- " - Eingabefeld rechts von Cursor",
- " löschen (Shift-Del)",
- " - Eingabebox für alle Ascii-Zeichen",
- " (Shift-Insert)",
- " - Undo, sofern kein Undo-Button",
- " definiert ist",
- " - History ((Shift-) Ctrl-Up/Down)",
- " - Clipboardunterstützung (Ctrl-X/C/V)",
- " (mit Shift -> Anhängen an Eingabefeld",
- " bzw. Clipboard)","",
- "- Cookie-/Scrap-/Rsrc- und",
- " Environment-Library","",
- "- erweiterte Rectangle- & Object-Library",
- " von PC-GEM 2.0","",
- "- viele erweiterte Objekte:",
- " -------------------------",
- " - Radio-Buttons",
- " - Check-Buttons",
- " - Cycle-Buttons für Popups",
- " - Help-Button",
- " - Undo-Button",
- " - Text mit Attributen",
- " - unterstrichen",
- " - kursiv",
- " - umrandet",
- " - schattiert",
- " - fett",
- " - hell",
- " - normaler/kleiner Font",
- " - Rahmen mit Titel",
- " - Titel (=unterstrichener Text)",
- " - beliebige Strichdicke",
- " - optional doppelt unterstrichen",
- " - Flugecke",
- " - Slider-Arrows",
- " - Niceline",
- " - opt. von Eingabenfeldern abhängiges",
- " DEFAULT-Objekt",
- " - modale Objekte, d.h. das Objekt kommt",
- " nur in modalen Dialogen vor",
- " - usw.","",
- "- Echtzeitgummiband/-schieber mit",
- " automatischer Verwaltung bzw.",
- " Ereignisauswertung","",
- "- variable Popup-Menüs:",
- " --------------------",
- " - vollständig tastaturbedienbar",
- " - Cursor up/down/left/right",
- " - Home/Shift-Home (Anfang/Ende)",
- " - Esc/Undo (=Abbruch)",
- " - Space/Return (=Selektion)",
- " - Hotkeys",
- " - frei positionierbar sowie an Eltern-",
- " objekt ausrichtbar","",
- "- variierbare Dialogoptik:",
- " ------------------------",
- " - Hintergrundbox (Muster,Farbe,Rahmen)",
- " - Flugecke wird an Hintergrundbox",
- " angepaßt",
- " - Rahmen:",
- " - Titel optional einfach oder doppelt",
- " umrandet",
- " - normaler/kleiner Font",
- " - Titel-Unterstrich:",
- " - Länge",
- " - Dicke",
- " - optional doppelt unterstrichen",
- " - Farben der erweiterten Objekte",
- " - viele Varianten der Radio-/Check/",
- " Cycle-Buttons sowie der Sliderpfeile",
- " - usw.","",
- "- sauber programmiert, d.h. unabhängig von",
- " - Computer (ST/TT/Falcon/Emulator)",
- " - Auflösung und Anzahl der Farben",
- " - (Multi) TOS-Version",
- " - VDI/GDOS-Treiber",
- " - Größe des System-Fonts","",
- "- an MultiTOS, Mag!X und Winx 2 angepaßt","",
- "- usw.",
- ""
- };
-
- int cdecl draw_help(PARMBLK *);
- void do_help(OBJECT *,int,int,int);
-
- extern DIAINFO help_info;
- extern boolean scroll_help;
-
- SLINFO sl_help ={&help_info,HELPPAR,HELPSLID,HELPUP,HELPDOWN,0,0,0,
- VERT_SLIDER,SL_LINEAR,200,0,do_help};
-
- static int old_line,first_line;
-
- int line_help_h,view_help_lines;
- int help_lines = (int) sizeof(help)>>2;
-
- USERBLK helpblk = {draw_help,0};
-
- /* Zeichnen des Ausschnitts des Hilfe-Textes (optimiert) */
-
- int cdecl draw_help(PARMBLK *pb)
- {
- reg int cnt_lines,start_line = first_line,delta_lines = (first_line>old_line) ? (first_line - old_line) : (old_line - first_line);
- reg int x = pb->pb_x,y = pb->pb_y;
-
- v_set_text(small_font_id,small_font,-1,NULL);
- if (!scroll_help || (pb->pb_y+pb->pb_h)>max_h || delta_lines>=(view_help_lines-3) || delta_lines<=0)
- cnt_lines = view_help_lines;
- else
- {
- reg GRECT source;
- reg int dy = delta_lines*line_help_h;
-
- source.g_x = x;
- source.g_y = y;
- source.g_w = pb->pb_w;
- source.g_h = pb->pb_h - dy;
-
- if (first_line>old_line)
- {
- source.g_y += dy;
- rc_sc_copy(&source,x,y,3);
- if (pb->pb_hc>pb->pb_h)
- start_line += view_help_lines - delta_lines;
- else
- {
- start_line += ((pb->pb_yc + pb->pb_hc - y)/line_help_h)-delta_lines;
- delta_lines++;
- }
- }
- else
- {
- rc_sc_copy(&source,x,y + dy,3);
- if (pb->pb_hc<=pb->pb_h)
- {
- start_line += (pb->pb_yc - y)/line_help_h;
- delta_lines++;
- }
- }
-
- start_line = max(start_line,first_line);
- cnt_lines = min(delta_lines,help_lines-start_line);
-
- if (start_line-first_line+cnt_lines>view_help_lines)
- cnt_lines = view_help_lines-start_line+first_line;
- }
-
- {
- reg GRECT clear;
- reg int index;
-
- y += (start_line-first_line)*line_help_h;
-
- clear.g_x = x;
- clear.g_y = y;
- clear.g_w = pb->pb_w;
- clear.g_h = cnt_lines*line_help_h;
- rc_intersect((GRECT *) &pb->pb_x,&clear);
- rc_sc_clear(&clear);
-
- y += gr_sh>>1;
- for (index=cnt_lines;--index>=0;y += line_help_h)
- v_gtext(x_handle,x,y,help[start_line++]);
- }
-
- return(0);
- }
-
- /* Funktion wird von graf_rt_slider() aufgerufen, sobald sich die Slider-
- position geändert hat. Dadurch können entsprechende Objekte neu
- gezeichnet oder gesetzt werden */
-
- void do_help(OBJECT *obj,int pos,int prev,int max_pos)
- {
- old_line = prev;
- first_line = pos;
-
- ob_draw_chg(&help_info,HELPVIEW,NULL,FAIL,FALSE);
- }
-