home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / egem_200.lzh / EGEM.2_0 / EXAMPLE / HELP.C < prev   
Encoding:
C/C++ Source or Header  |  1994-08-25  |  7.9 KB  |  206 lines

  1.  
  2. #include <e_gem.h>
  3.  
  4. char *help[] =
  5. {
  6. "",
  7. " Fähigkeiten der EnhancedGEM-Library:",
  8. "======================================",
  9. " - läßt sich mit GNU-C, Pure C und Lattice C einsetzen",
  10. " - an MultiTOS, Mag!X ab V2.0 sowie Winx ab V2.1 angepaßt",
  11. " - Definitionen der Protokolle XAcc2, AV, Menü, Clipboard",
  12. "   und Drag&Drop",
  13. " - XAcc2-, AV- und Clipboard-Protokoll werden automatisch unterstützt",
  14. " - verbesserte Ereignis-Verwaltung mit 4 Rechteck-, 2 Button- und",
  15. "   2 Timer-Events",
  16. " - beliebig viele Fenster-/fliegende Dialoge gleichzeitig",
  17. " - fliegende Dialoge springen zur Mausposition bei Mausklick",
  18. "   außerhalb des Dialogs",
  19. " - Rechtsklick auf Objekt im Vordergrund-Dialog (bei aktiver Hinter-",
  20. "   grundbedienung auch im Hintergrund-Dialog) simuliert Doppelklick",
  21. " - Fensterdialoge durch zusätzlich gedrückte rechte Maustaste im",
  22. "   Hintergrund bedienbar (optional auch ohne rechte Maustaste)",
  23. " - Fenster wechseln/schließen (Hotkeys und Menüpunkte definierbar)",
  24. " - unmodale/modale Fensterdialoge",
  25. " - Tastaturbedienung der Dialoge, wobei in Dialogen mit Edit-Feldern",
  26. "   zusätzlich die Alternate-Taste gedrückt werden muß",
  27. "   (Doppelklick-Simulation durch zusätzlich gedrückte Shift-Taste)",
  28. " - Tastendrücke optional zum Dialog unter dem Mauszeiger",
  29. " - unter MTOS (ab AES 4.1) sowie MagiC 3.0 oder bei vorhandenem ICFS",
  30. "   können Fenster bzw. Fensterdialoge ikonifiziert werden",
  31. "   (Hotkey: Ctrl-'*' (Ziffernblock), nur bei ICFS)","",
  32. " - erweiterte Alert-Funktion:",
  33. "   - 18 vordefinierten Icons",
  34. "   - benutzerdefinierte Icons beliebiger Größe",
  35. "   - beliebig langen Zeilen und Buttons",
  36. "   - maximal 10 Zeilen sowie 5 Buttons",
  37. "   - Buttons über Hotkey anwählbar (auch ohne Alternate-Teste)","",
  38. " - erweiterte Möglichkeiten in Eingabe-Feldern",
  39. "   - exakte Cursorpositionierung per Maus",
  40. "   - Mauscursor wird über Eingabefeldern zum Textcursor",
  41. "   - erstes/letzes Eingabefeld (Home/Shift-Home, Shift-Up/Down)",
  42. "   - Wort vor/zurück (Ctrl-Left/Right)",
  43. "   - Anfang/Ende des Eingabesfeldes (Shift-Left/Right)",
  44. "   - vorheriges Eingabesfeld (Up,Shift-Tab/Enter/Return)",
  45. "   - nächstes Eingabefeld (Down/Tab/Enter)",
  46. "   - Cursor ein Zeichen nach links/rechts (Left/Right)",
  47. "   - Eingabefeld löschen (Esc)",
  48. "   - Eingabefeld ab Cursor löschen (Shift-Del)",
  49. "   - Eingabefeld bis Cursor löschen (Shift-Backspace)",
  50. "   - Eingabebox für alle Ascii-Zeichen (Shift-Insert)",
  51. "   - Sonderzeicheneingabe durch Eingabe des dezimalen ASCII-Wertes",
  52. "     bei gedrückter Alternate-Taste auf dem Ziffernblock",
  53. "      => sofern der ASCII-Wert nicht eindeutig ist (ASCII<=25), müssen",
  54. "         alle drei Stellen (evtl. mit führenden Nullen) eingegeben",
  55. "         werden",
  56. "   - Undo (Undo bzw. Shift-Undo, sofern Undo-Button vorhanden)",
  57. "   - History-Funktion der letzten eingegebenen Texte (Ctrl-Up/Down)",
  58. "      => mit Shift-Taste: Text in History suchen",
  59. "   - Clipboardunterstützung:",
  60. "      => mit Shift-Taste: Text an Clipboard/Eingabe-Feld anhängen",
  61. "      -> Ctrl-X: Text ausschneiden und in Clipboard ablegen",
  62. "      -> Ctrl-C: Text in Clipboard ablegen",
  63. "      -> Ctrl-V: Text in Eingabefeld einfügen",
  64. "   - Einfüge-/Überschreibenmodus (Insert)",
  65. "      => Strich-/Block-Cursor",
  66. "   - neue zusätzliche Gültigkeitsmasken in Eingabefeldern:",
  67. "      \'c\',\'C\': Ziffern \"0-9\", Komma \".,\", Rechenzeichen \"+-*/^\",",
  68. "               Klammern \"(){}[]\"",
  69. "      \'l\',\'L\': LED-Ziffern \"0-9\"",
  70. "      \'<Ziffer>\': Ziffer=\'0\'-\'9\'",
  71. "               alle Ziffern von \'0\' bis <Ziffer>, z.B.",
  72. "               \'1\': Binärziffern",
  73. "               \'7\': Oktalziffernn",
  74. "               \'9\': Dezimalziffern",
  75. "      \'h\',\'H\': Hexadezimalziffern \"0-9A-F\",",
  76. "               Umwandlung in Klein/Großbuchstaben",
  77. "      \'u\',\'U\': ASCII 32-127, Umwandlung in Klein-/Großbuchstaben",
  78. "      \'v\',\'V\': ASCII 32-255, Umwandlung in Klein-/Großbuchstaben",
  79. "      \'w\',\'W\': ASCII 32-127",
  80. "      \'y\',\'Y\': ASCII 32-255",
  81. "   - größtenteils automatische Anpassung (sofern möglich) der",
  82. "     eingegeben Zeichen an Gültigkeitsmaske",
  83. "   - kleiner/großer System-Font können in Eingabefeldern benutzt",
  84. "     werden"
  85. "   - Bedeutung von Return wahlweise",
  86. "      -> Return selektiert DEFAULT-Objekt",
  87. "      -> Return springt zum nächsten Eingabefeld (zyklisch)",
  88. "      -> Return selektiert beim letzten Eingabefeld das DEFAULT-Objekt","",
  89. " - Cookie-/Scrap-/Resource- u. Environment-Library",
  90. " - erweiterte Rectangle- & Object-Library von PC-GEM 2.0","",
  91. " - viele erweiterte Objekte:",
  92. "   - Radio-Buttons",
  93. "   - Check-Buttons",
  94. "   - Cycle-Buttons für Popups",
  95. "   - Help-Button",
  96. "   - Undo-Button",
  97. "   - Text mit Attributen",
  98. "     -> unterstrichen,kursiv,umrandet,schattiert,fett,hell,klein/groß",
  99. "   - Rahmen mit Titel",
  100. "   - Titel (= unterstrichener Text)",
  101. "     -> beliebige Strichdicke, optional doppelt unterstrichen",
  102. "   - Flugecke",
  103. "   - Slider-Arrows (optional umrandet)",
  104. "   - Niceline",
  105. "   - opt. von Eingabefeldern abhängiges DEFAULT-Objekt",
  106. "   - unmodale und modale Objekte, d.h. die Objekte kommen nur in",
  107. "     (un-) modalen Dialogen vor",
  108. "   - usw.","",
  109. " - Echtzeitgummiband/-schieber mit halb- oder vollautomatischer Ver-",
  110. "   waltung bzw. Ereignisauswertung sowie optionaler Tastaturbedienung",
  111. " - variable Popup-Menüs (vollständig tastaturbedienbar (Hotkeys),",
  112. "   frei positionierbar)","",
  113. " - Dialogoptik in weiten Grenzen variierbar:",
  114. "   - Hintergrundbox (Muster,Farbe,Rahmen)",
  115. "   - Flugecke wird an Hintergrundbox angepaßt",
  116. "   - Rahmen (Schrift einfach/doppelt umrandet,Schriftgröße)",
  117. "   - Titel-Unterstrich (Länge,Dicke,einfach/doppelt unterstrichen)",
  118. "   - Farben der erweiterten Objekte",
  119. "   - viele Varianten der Radio-/Check/Cycle-Buttons sowie Sliderpfeile",
  120. "   - usw.","",
  121. " - sauber programmiert, d.h. unabhängig von",
  122. "   - Computer (ST/STE/TT/Falcon/Emulator)",
  123. "   - Auflösung und Anzahl der Farben",
  124. "   - Betriebsystem (TOS,MTOS,MagiC,Geneva,MultiGEM)",
  125. "   - VDI/GDOS-Treiber",
  126. "   - Größe des System-Fonts",
  127. "   - usw.",""
  128. };
  129.  
  130. int cdecl draw_help(PARMBLK *);
  131.  
  132. int old_line,first_line,scroll_help;
  133. int line_help_h,view_help_lines;
  134. int help_lines = (int) sizeof(help)>>2;
  135.  
  136. USERBLK    helpblk = {draw_help,0};
  137.  
  138. /* Zeichnen des Ausschnitts des Hilfe-Textes (optimiert) */
  139.  
  140. int cdecl draw_help(PARMBLK *pb)
  141. {
  142.     reg int cnt_lines,start_line = first_line,delta_lines = (first_line>old_line) ? (first_line - old_line) : (old_line - first_line);
  143.     reg int x = pb->pb_x,y = pb->pb_y;
  144.  
  145.     v_set_text(small_font_id,small_font,-1,NULL);
  146.     if (!scroll_help || (pb->pb_y+pb->pb_h)>max_h || delta_lines>=(view_help_lines-3) || delta_lines<=0)
  147.         cnt_lines = view_help_lines;
  148.     else
  149.     {
  150.         reg GRECT source;
  151.         reg int dy = delta_lines*line_help_h;
  152.  
  153.         source.g_x = x;
  154.         source.g_y = y;
  155.         source.g_w = pb->pb_w;
  156.         source.g_h = pb->pb_h - dy;
  157.  
  158.         if (first_line>old_line)
  159.         {
  160.             source.g_y += dy;
  161.             rc_sc_copy(&source,x,y,3);
  162.             if (pb->pb_hc>pb->pb_h)
  163.                 start_line += view_help_lines - delta_lines;
  164.             else
  165.             {
  166.                 start_line += ((pb->pb_yc + pb->pb_hc - y)/line_help_h)-delta_lines;
  167.                 delta_lines++;
  168.             }
  169.         }
  170.         else
  171.         {
  172.             rc_sc_copy(&source,x,y + dy,3);
  173.             if (pb->pb_hc<=pb->pb_h)
  174.             {
  175.                 start_line += (pb->pb_yc - y)/line_help_h;
  176.                 delta_lines++;
  177.             }
  178.         }
  179.  
  180.         start_line = max(start_line,first_line);
  181.         cnt_lines = min(delta_lines,help_lines-start_line);
  182.  
  183.         if (start_line-first_line+cnt_lines>view_help_lines)
  184.             cnt_lines = view_help_lines-start_line+first_line;
  185.     }
  186.  
  187.     {
  188.         reg GRECT clear;
  189.         reg int index;
  190.  
  191.         y += (start_line-first_line)*line_help_h;
  192.  
  193.         clear.g_x = x;
  194.         clear.g_y = y;
  195.         clear.g_w = pb->pb_w;
  196.         clear.g_h = cnt_lines*line_help_h;
  197.         rc_intersect((GRECT *) &pb->pb_x,&clear);
  198.         rc_sc_clear(&clear);
  199.  
  200.         for (index=cnt_lines;--index>=0;y += line_help_h)
  201.             v_gtext(x_handle,x,y,help[start_line++]);
  202.     }
  203.  
  204.     return(0);
  205. }
  206.