home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / c / egem / example / help.c < prev   
Encoding:
C/C++ Source or Header  |  1994-09-22  |  6.6 KB  |  234 lines

  1.  
  2. #include <e_gem.h>
  3. #include "example.h"
  4.  
  5. char *help[] =
  6. {
  7. "",
  8. " Fähigkeiten der EnhancedGEM-Library:",
  9. "======================================",
  10. "- läßt sich mit GNU-C,Pure C (Pure-C-",
  11. "  Libraries als auch MiNT-Libraries) und",
  12. "  Lattice C einsetzen",
  13. "  (dank Markus Kilbinger @ AC)","",
  14. "- beliebig viele Fensterdialoge und",
  15. "  fliegende Dialoge gleichzeitig","",
  16. "- fliegende Dialoge springen zur Maus-",
  17. "  position bei Mausklick außerhalb des",
  18. "  Dialogs","",
  19. "- Rechtsklick auf Objekt im Vorder-",
  20. "  grund-Dialog simuliert Doppelklick","",
  21. "- Fensterdialoge optional auch (!) vor",
  22. "  MTOS/Falcon-TOS ohne zusätzlich ge-",
  23. "  drückte rechte Maustaste im Hinter-",
  24. "  grund bedienbar (funktioniert teil-",
  25. "  weise nicht einwandfrei bei aktivem",
  26. "  ArrowFix von Martin Osieka)","",
  27. "- unmodale/modale Fensterdialoge","",
  28. "- erweiterte Alert-Funktion:",
  29. "  --------------------------",
  30. "   - 18 vordefinierte Icons",
  31. "   - benutzerdefinierte Icons mit be-",
  32. "     liebiger Größe",
  33. "   - beliebig langen Zeilen und Buttons",
  34. "   - maximal 10 Zeilen sowie 5 Buttons",
  35. "   - Buttons über Hotkey anwählbar",
  36. "     (ohne Alternate-Taste)","",
  37. "- Tastaturbedienung der Dialoge, wobei",
  38. "  in Dialogen mit Eingabe-Feldern zusätz-",
  39. "  lich die Alternate-Taste gedrückt werden",
  40. "  muß (Doppelklick durch zusätzlich ge-",
  41. "  drückte Shift-Taste)","",
  42. "- erweiterte Eingabemöglichkeiten:",
  43. "  --------------------------------",
  44. "   - exakte Cursorpositionierung per Maus",
  45. "   - Mauscursor wird über Eingabefeldern",
  46. "     zum Textcursor",
  47. "   - erstes/letzes Eingabefeld",
  48. "     (Home/Shift-Home)",
  49. "   - Wort vor/zurück (Ctrl-Left/Right)",
  50. "   - Anfang/Ende des Eingabesfeldes",
  51. "     (Shift-Left/Right)",
  52. "   - nächstes Eingabefeld",
  53. "     (Tab/(Shift-) Enter/Return",
  54. "   - Eingabefeld löschen (Esc)",
  55. "   - Eingabefeld rechts von Cursor",
  56. "     löschen (Shift-Del)",
  57. "   - Eingabebox für alle Ascii-Zeichen",
  58. "     (Shift-Insert)",
  59. "   - Undo, sofern kein Undo-Button",
  60. "     definiert ist",
  61. "   - History ((Shift-) Ctrl-Up/Down)",
  62. "   - Clipboardunterstützung (Ctrl-X/C/V)",
  63. "     (mit Shift -> Anhängen an Eingabefeld",
  64. "      bzw. Clipboard)","",
  65. "- Cookie-/Scrap-/Rsrc- und",
  66. "  Environment-Library","",
  67. "- erweiterte Rectangle- & Object-Library",
  68. "  von PC-GEM 2.0","",
  69. "- viele erweiterte Objekte:",
  70. "  -------------------------",
  71. "   - Radio-Buttons",
  72. "   - Check-Buttons",
  73. "   - Cycle-Buttons für Popups",
  74. "   - Help-Button",
  75. "   - Undo-Button",
  76. "   - Text mit Attributen",
  77. "     - unterstrichen",
  78. "     - kursiv",
  79. "     - umrandet",
  80. "     - schattiert",
  81. "     - fett",
  82. "     - hell",
  83. "     - normaler/kleiner Font",
  84. "   - Rahmen mit Titel",
  85. "   - Titel (=unterstrichener Text)",
  86. "     - beliebige Strichdicke",
  87. "     - optional doppelt unterstrichen",
  88. "   - Flugecke",
  89. "   - Slider-Arrows",
  90. "   - Niceline",
  91. "   - opt. von Eingabenfeldern abhängiges",
  92. "     DEFAULT-Objekt",
  93. "   - modale Objekte, d.h. das Objekt kommt",
  94. "     nur in modalen Dialogen vor",
  95. "   - usw.","",
  96. "- Echtzeitgummiband/-schieber mit",
  97. "  automatischer Verwaltung bzw.",
  98. "  Ereignisauswertung","",
  99. "- variable Popup-Menüs:",
  100. "  --------------------",
  101. "   - vollständig tastaturbedienbar",
  102. "     - Cursor up/down/left/right",
  103. "     - Home/Shift-Home (Anfang/Ende)",
  104. "     - Esc/Undo (=Abbruch)",
  105. "     - Space/Return (=Selektion)",
  106. "     - Hotkeys",
  107. "   - frei positionierbar sowie an Eltern-",
  108. "     objekt ausrichtbar","",
  109. "- variierbare Dialogoptik:",
  110. "  ------------------------",
  111. "   - Hintergrundbox (Muster,Farbe,Rahmen)",
  112. "   - Flugecke wird an Hintergrundbox",
  113. "     angepaßt",
  114. "   - Rahmen:",
  115. "     - Titel optional einfach oder doppelt",
  116. "       umrandet",
  117. "     - normaler/kleiner Font",
  118. "   - Titel-Unterstrich:",
  119. "     - Länge",
  120. "     - Dicke",
  121. "     - optional doppelt unterstrichen",
  122. "   - Farben der erweiterten Objekte",
  123. "   - viele Varianten der Radio-/Check/",
  124. "     Cycle-Buttons sowie der Sliderpfeile",
  125. "   - usw.","",
  126. "- sauber programmiert, d.h. unabhängig von",
  127. "   - Computer (ST/TT/Falcon/Emulator)",
  128. "   - Auflösung und Anzahl der Farben",
  129. "   - (Multi) TOS-Version",
  130. "   - VDI/GDOS-Treiber",
  131. "   - Größe des System-Fonts","",
  132. "- an MultiTOS, Mag!X und Winx 2 angepaßt","",
  133. "- usw.",
  134. ""
  135. };
  136.  
  137. int cdecl draw_help(PARMBLK *);
  138. void do_help(OBJECT *,int,int,int);
  139.  
  140. extern DIAINFO help_info;
  141. extern boolean scroll_help;
  142.  
  143. SLINFO sl_help ={&help_info,HELPPAR,HELPSLID,HELPUP,HELPDOWN,0,0,0,
  144.                 VERT_SLIDER,SL_LINEAR,200,0,do_help};
  145.  
  146. static int old_line,first_line;
  147.  
  148. int line_help_h,view_help_lines;
  149. int help_lines = (int) sizeof(help)>>2;
  150.  
  151. USERBLK    helpblk = {draw_help,0};
  152.  
  153. /* Zeichnen des Ausschnitts des Hilfe-Textes (optimiert) */
  154.  
  155. int cdecl draw_help(PARMBLK *pb)
  156. {
  157.     reg int cnt_lines,start_line = first_line,delta_lines = (first_line>old_line) ? (first_line - old_line) : (old_line - first_line);
  158.     reg int x = pb->pb_x,y = pb->pb_y;
  159.  
  160.     v_set_text(small_font_id,small_font,-1,NULL);
  161.     if (!scroll_help || (pb->pb_y+pb->pb_h)>max_h || delta_lines>=(view_help_lines-3) || delta_lines<=0)
  162.         cnt_lines = view_help_lines;
  163.     else
  164.     {
  165.         reg GRECT source;
  166.         reg int dy = delta_lines*line_help_h;
  167.  
  168.         source.g_x = x;
  169.         source.g_y = y;
  170.         source.g_w = pb->pb_w;
  171.         source.g_h = pb->pb_h - dy;
  172.  
  173.         if (first_line>old_line)
  174.         {
  175.             source.g_y += dy;
  176.             rc_sc_copy(&source,x,y,3);
  177.             if (pb->pb_hc>pb->pb_h)
  178.                 start_line += view_help_lines - delta_lines;
  179.             else
  180.             {
  181.                 start_line += ((pb->pb_yc + pb->pb_hc - y)/line_help_h)-delta_lines;
  182.                 delta_lines++;
  183.             }
  184.         }
  185.         else
  186.         {
  187.             rc_sc_copy(&source,x,y + dy,3);
  188.             if (pb->pb_hc<=pb->pb_h)
  189.             {
  190.                 start_line += (pb->pb_yc - y)/line_help_h;
  191.                 delta_lines++;
  192.             }
  193.         }
  194.  
  195.         start_line = max(start_line,first_line);
  196.         cnt_lines = min(delta_lines,help_lines-start_line);
  197.  
  198.         if (start_line-first_line+cnt_lines>view_help_lines)
  199.             cnt_lines = view_help_lines-start_line+first_line;
  200.     }
  201.  
  202.     {
  203.         reg GRECT clear;
  204.         reg int index;
  205.  
  206.         y += (start_line-first_line)*line_help_h;
  207.  
  208.         clear.g_x = x;
  209.         clear.g_y = y;
  210.         clear.g_w = pb->pb_w;
  211.         clear.g_h = cnt_lines*line_help_h;
  212.         rc_intersect((GRECT *) &pb->pb_x,&clear);
  213.         rc_sc_clear(&clear);
  214.  
  215.         y += gr_sh>>1;
  216.         for (index=cnt_lines;--index>=0;y += line_help_h)
  217.             v_gtext(x_handle,x,y,help[start_line++]);
  218.     }
  219.  
  220.     return(0);
  221. }
  222.  
  223. /* Funktion wird von graf_rt_slider() aufgerufen, sobald sich die Slider-
  224.    position geändert hat. Dadurch können entsprechende Objekte neu
  225.    gezeichnet oder gesetzt werden */
  226.  
  227. void do_help(OBJECT *obj,int pos,int prev,int max_pos)
  228. {
  229.     old_line = prev;
  230.     first_line = pos;
  231.  
  232.     ob_draw_chg(&help_info,HELPVIEW,NULL,FAIL,FALSE);
  233. }
  234.