home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / monitors / rsys / rsyssrc.lha / RSysInit.c < prev    next >
C/C++ Source or Header  |  1993-09-25  |  19KB  |  517 lines

  1. /*
  2. ***************************************************************************
  3. *
  4. * Datei:
  5. *      RSysInit.c
  6. *
  7. * Inhalt:
  8. *
  9. *      --- Globale Routinen ---
  10. *
  11. *    int OpenSysWindow ( void );
  12. *    long CreateMainGadgets ( void );
  13. *    void ResizeWindowRefresh ( void );
  14. *
  15. *      --- Lokale  Routinen ---
  16. *
  17. *    static void AdjustLVLines ( void );
  18. *    static void ReCalcLVHeight ( struct Screen *Scr );
  19. *
  20. * Bemerkungen:
  21. *      Initialisierung des Hauptfensters von RSys.
  22. *
  23. * Erstellungsdatum:
  24. *      07-Jul-93     Rolf Böhme
  25. *
  26. * Änderungen:
  27. *      07-Jul-93     Rolf Böhme      Erstellung
  28. *
  29. ***************************************************************************
  30. */
  31.  
  32. #include "RSys.h"
  33.  
  34. static UWORD SysGTypes[] = {
  35.     BUTTON_KIND,
  36.     BUTTON_KIND,
  37.     BUTTON_KIND,
  38.     BUTTON_KIND,
  39.     BUTTON_KIND,
  40.     BUTTON_KIND,
  41.     BUTTON_KIND,
  42.     BUTTON_KIND,
  43.     BUTTON_KIND,
  44.     BUTTON_KIND,
  45.     BUTTON_KIND,
  46.     BUTTON_KIND,
  47.     BUTTON_KIND,
  48.     BUTTON_KIND,
  49.     BUTTON_KIND,
  50.     BUTTON_KIND,
  51.     LISTVIEW_KIND,
  52.     TEXT_KIND,
  53.     TEXT_KIND,
  54.     BUTTON_KIND
  55. };
  56.  
  57. static int tops[20] =
  58. {
  59.    117, 117, 117, 117,
  60.    131, 131, 131, 131,
  61.    145, 145, 145, 145,
  62.    159, 159, 159, 159,
  63.    16,
  64.    2,
  65.    102, 102
  66. };
  67.  
  68. int LVH = 85, WndH = 183, SysMinH = 132;
  69.  
  70. static struct NewGadget SysNGad[] = {
  71.     {5  ,117,93+NEWLEN,12,  (UBYTE *)"_Tasks",NULL,GD_TasksGad,PLACETEXT_IN,NULL,NULL},
  72.     {125,117,93+NEWLEN,12,(UBYTE *)"_Libraries",NULL,GD_LibrariesGad,PLACETEXT_IN,NULL,NULL},
  73.     {245,117,93+NEWLEN,12,(UBYTE *)"_Memory",NULL,GD_MemoryGad,PLACETEXT_IN,NULL,NULL},
  74.     {365,117,93+NEWLEN,12,(UBYTE *)"_Ports",NULL,GD_PortsGad,PLACETEXT_IN,NULL,NULL},
  75.  
  76.     {5  ,131,93+NEWLEN,12,  (UBYTE *)"_Volumes",NULL,GD_VolumesGad,PLACETEXT_IN,NULL,NULL},
  77.     {125,131,93+NEWLEN,12,(UBYTE *)"_Assigns",NULL,GD_AssignsGad,PLACETEXT_IN,NULL,NULL},
  78.     {245,131,93+NEWLEN,12,(UBYTE *)"_Fonts",NULL,GD_FontsGad,PLACETEXT_IN,NULL,NULL},
  79.     {365,131,93+NEWLEN,12,(UBYTE *)"_Ressources",NULL,GD_ResourcesGad,PLACETEXT_IN,NULL,NULL},
  80.  
  81.     {5  ,145,93+NEWLEN,12,  (UBYTE *)"_Interrupts",NULL,GD_InterruptsGad,PLACETEXT_IN,NULL,NULL},
  82.     {125,145,93+NEWLEN,12,(UBYTE *)"_Windows",NULL,GD_WindowsGad,PLACETEXT_IN,NULL,NULL},
  83.     {245,145,93+NEWLEN,12,(UBYTE *)"_Screens",NULL,GD_ScreensGad,PLACETEXT_IN,NULL,NULL},
  84.     {365,145,93+NEWLEN,12,(UBYTE *)"_HandlerInp",NULL,GD_HandlerInpGad,PLACETEXT_IN,NULL,NULL},
  85.  
  86.     {5  ,159,93+NEWLEN,12,  (UBYTE *)"S_ystem",NULL,GD_SystemGad,PLACETEXT_IN,NULL,NULL},
  87.     {125,159,93+NEWLEN,12,(UBYTE *)"Har_dware",NULL,GD_HardwareGad,PLACETEXT_IN,NULL,NULL},
  88.     {245,159,93+NEWLEN,12,(UBYTE *)"Save List",NULL,GD_SaveListGad,PLACETEXT_IN,NULL,NULL},
  89.     {365,159,93+NEWLEN,12,(UBYTE *)"_Jump",NULL,GD_JumpGad,PLACETEXT_IN,NULL,NULL},
  90.  
  91.     {5,16,477,85,  (UBYTE *)NULL,NULL,GD_ListeLV,0,NULL,NULL},
  92.  
  93.    {5,2,477,12,   (UBYTE *)NULL,NULL,GD_TextHeader,0,NULL,NULL},
  94.  
  95.     {5,102,438,13, (UBYTE *)NULL,NULL,GD_InfoMsgGad,0,NULL,NULL},
  96.  
  97.     {446,102,35,13,(UBYTE *)"_New",NULL,GD_NewGad,PLACETEXT_IN,NULL,NULL}
  98. };
  99.  
  100. extern struct List ListeLVList;
  101. int newlvh;
  102.  
  103. static const ULONG *SysGTags[] = {
  104.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  105.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  106.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  107.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  108.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  109.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  110.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  111.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  112.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  113.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  114.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  115.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  116.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  117.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  118.     (ULONG *)(TAG_DONE),
  119.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  120.  
  121.     (ULONG *)(GTLV_Labels), (ULONG *)&ListeLVList, (ULONG *)(TAG_DONE),
  122.     (ULONG *)(GTTX_Text), (ULONG *)NULL,(ULONG *)(GTTX_Border), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
  123.     (ULONG *)(GTTX_Text), (ULONG *)NULL,(ULONG *)(GTTX_Border), (ULONG *)TRUE,(ULONG *)(TAG_DONE),
  124.     (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
  125. };
  126.  
  127. /* -----------------------------------------------------------
  128. struct Library *KeymapBase = NULL;
  129. void
  130. test(void)
  131. {
  132.     int a = 1, b = 0;
  133.  
  134.     a = a / b;
  135.  
  136. /*    MapANSI((STRPTR)"huhu",4L,(STRPTR)"huhu",4L, NULL);
  137.  
  138. }
  139. /* ----------------------------------------------------------- */
  140.  
  141. struct NewMenu SysNewMenu[]=
  142. {
  143.    /* 00 */ {NM_TITLE, (UBYTE *) "Project", NULL, 0, 0, NULL,},
  144.  
  145.    /* 01 */ {NM_ITEM, (UBYTE *) "Iconify, <ESC>", (UBYTE *) "I", 0, 0, Iconify,},
  146.    /* 02 */ {NM_ITEM, (UBYTE *) "Help", (UBYTE *) "H", CHECKIT | MENUTOGGLE, 0, Help,},
  147.    /* 03 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  148.    /* 04 */ {NM_ITEM, (UBYTE *) "Status", NULL, 0, 0, ShowStatus,},
  149.    /* 05 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  150.    /* 06 */ {NM_ITEM, (UBYTE *) "Save Configuration", NULL, 0, 0, SaveConfig,},
  151.    /* 07 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  152.    /* 08 */ {NM_ITEM, (UBYTE *) "About...", (UBYTE *) "A", 0, 0, About,},
  153.    /* 09 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  154.    /* 10 */ {NM_ITEM, (UBYTE *) "Quit " NAME "...", (UBYTE *) "Q", 0, 0, quit,},
  155.  
  156.  
  157.    /* 11 */ {NM_TITLE, (UBYTE *) "Other Lists", NULL, 0, 0, NULL,},
  158.  
  159.    /* 12 */ {NM_ITEM, (UBYTE *) "Exec",       NULL, 0, 0, NULL,},
  160.  
  161.    /* 13 */ {NM_SUB,  (UBYTE *) "Software Devices",   (STRPTR)"1", 0, 0, SysSoftDeviceList,},
  162.    /* 14 */ {NM_SUB,  (UBYTE *) "Vectors",            (STRPTR)"2", 0, 0, SysVectorList,},
  163.    /* 15 */ {NM_SUB,  (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  164.    /* 16 */ {NM_SUB,  (UBYTE *) "CLI processes",      NULL, 0, 0, SysCLIList,},
  165.    /* 17 */ {NM_SUB,  (UBYTE *) "Semaphores",         NULL, 0, 0, SysSemaphoreList,},
  166.    /* 18 */ {NM_SUB,  (UBYTE *) "Memory areas",       NULL, 0, 0, RSysMemoryAreaList,},
  167.  
  168.    /* 19 */ {NM_ITEM, (UBYTE *) "DOS",        NULL, 0, 0, NULL,},
  169.  
  170.    /* 20 */ {NM_SUB,  (UBYTE *) "Volume locks",       (STRPTR)"3", 0, 0, RSysLockList,},
  171.    /* 21 */ {NM_SUB,  (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  172.    /* 22 */ {NM_SUB,  (UBYTE *) "Resident programs",  NULL, 0, 0, SysResidentProg,},
  173.    /* 23 */ {NM_SUB,  (UBYTE *) "Physical Devices",   NULL, 0, 0, SysResidentList,},
  174.    /* 24 */ {NM_SUB,  (UBYTE *) "Fault messages",     NULL, 0, 0, RSysFaultMessages,},
  175.  
  176.    /* 25 */ {NM_ITEM, (UBYTE *) "Graphics",   NULL, 0, 0, NULL,},
  177.  
  178.    /* 26 */ {NM_SUB,  (UBYTE *) "Display modes",      (STRPTR)"4", 0, 0, RSysGetDisplayModes,},
  179.    /* 27 */ {NM_SUB,  (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  180.    /* 28 */ {NM_SUB,  (UBYTE *) "Blitter Wait Queue", NULL, 0, 0, SysBlitterWaitList,},
  181.    /* 29 */ {NM_SUB,  (UBYTE *) "TOF Wait Queue",     NULL, 0, 0, SysTOFWaitList,},
  182.  
  183.    /* 30 */ {NM_ITEM, (UBYTE *) "Diskfont",   NULL, 0, 0, NULL,},
  184.  
  185.    /* 31 */ {NM_SUB,  (UBYTE *) "Fonts in FONTS:",    (STRPTR)"5", 0, 0, SysAvailFontsList,},
  186.  
  187.    /* 32 */ {NM_ITEM, (UBYTE *) "Intuition",  NULL, 0, 0, NULL,},
  188.  
  189.    /* 33 */ {NM_SUB,  (UBYTE *) "Public Screens",     (STRPTR)"6", 0, 0, SysPubScreenList,},
  190.    /* 34 */ {NM_SUB,  (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  191.    /* 35 */ {NM_SUB,  (UBYTE *) "Gadgets",            NULL, 0, 0, RSysGadgetList,},
  192.  
  193.    /* 36 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  194.  
  195.    /* 37 */ {NM_ITEM, (UBYTE *) "Preferences",        NULL, 0, 0, NULL,},
  196.  
  197.    /* 38 */ {NM_SUB,  (UBYTE *) "Preferences Data",   (STRPTR)"7", 0, 0, SysPrefList,},
  198.    /* 39 */ {NM_SUB,  (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
  199.    /* 40 */ {NM_SUB,  (UBYTE *) "Printer data",       NULL, 0, 0, SysExtPrinterData,},
  200.    /* 41 */ {NM_SUB,  (UBYTE *) "ENV-Variables",      NULL, 0, 0, SysEnvList,},
  201.  
  202.    /* 42 */ {NM_ITEM, (UBYTE *) "Other libraries",    NULL, 0, 0, NULL,},
  203.  
  204.    /* 43 */ {NM_SUB,  (UBYTE *) "Commodities",        (STRPTR)"8", 0, 0, SysBrokerList,},
  205.    /* 44 */ {NM_SUB,  (UBYTE *) "Amigaguide XRef",    (STRPTR)"9", 0, 0, RSysAmigaGuideRefList,},
  206.  
  207.  
  208.    /* 45 */ {NM_TITLE, (UBYTE *) "Actions",   NULL, 0, 0, NULL,},
  209.  
  210.    /* 46 */ {NM_ITEM, (UBYTE *) "CRC Check...",       NULL, 0, 0, CRCSum,},
  211.    /* 47 */ {NM_ITEM, (UBYTE *) "Crypt File...",      NULL, 0, 0, CryptFile,},
  212.    /* 48 */ {NM_ITEM, (UBYTE *) "List Hunks...",      NULL, 0, 0, HunkStruct,},
  213.    /* 49 */ {NM_ITEM, (UBYTE *) "Find File...",       NULL, 0, 0, FindFile,},
  214.    /* 50 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  215.    /* 51 */ {NM_ITEM, (UBYTE *) "Format Disk...",     NULL, 0, 0, FormatDisk,},
  216.    /* 52 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  217.    /* 53 */ {NM_ITEM, (UBYTE *) "Save windows...",    NULL, 0, 0, SaveWindows,},
  218.    /* 54 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  219.    /* 55 */ {NM_ITEM, (UBYTE *) "Check Libraries",    NULL, 0, 0, SysCheckOffs,},
  220.  
  221.  
  222.    /* 56 */ {NM_TITLE, (UBYTE *) "Internal List",     NULL, 0, 0, NULL,},
  223.  
  224.    /* 57 */ {NM_ITEM, (UBYTE *) "Save current list",  (UBYTE *) "L", 0, 0, SaveCurrentList,},
  225.    /* 58 */ {NM_ITEM, (UBYTE *) "Restore saved list", (UBYTE *) "R", 0, 0, RestoreList,},
  226.    /* 59 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  227.    /* 60 */ {NM_ITEM, (UBYTE *) "Kill saved list",    NULL, 0, 0, KillList,},
  228.  
  229.  
  230.    /* 61 */ {NM_TITLE, (UBYTE *) "Flushing",          NULL, 0, 0, NULL,},
  231.  
  232.    /* 62 */ {NM_ITEM, (UBYTE *) "Flush libraries",    NULL, 0, 0, RSysFlushAllLibraries,},
  233.    /* 63 */ {NM_ITEM, (UBYTE *) "Flush fonts",        NULL, 0, 0, RSysFlushAllFonts,},
  234.    /* 64 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  235.    /* 65 */ {NM_ITEM, (UBYTE *) "Flush all libraries and fonts", NULL, 0, 0, RSysFlushAll,},
  236.  
  237.  
  238.    /* 66 */ {NM_TITLE, (UBYTE *) "Clip",         NULL, 0, 0, NULL,},
  239.  
  240.    /* 67 */ {NM_ITEM, (UBYTE *) "Clip entry...",         (UBYTE *)"C", 0, 0, RSysEntryToClip,},
  241.    /* 68 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  242.    /* 69 */ {NM_ITEM, (UBYTE *) "Clip list",          NULL, 0, 0, RSysListToClip,},
  243.  
  244.  
  245.    /* 70 */ {NM_TITLE, (UBYTE *) "Flags",             NULL, 0, 0, NULL,},
  246.  
  247.    /* 71 */ {NM_ITEM, (UBYTE *) "Fast Mode",          (UBYTE *) "F", CHECKIT | CHECKED | MENUTOGGLE, 0, ToggleFastMode,},
  248.    /* 72 */ {NM_ITEM, (UBYTE *) "Sorting",            (UBYTE *) "O", CHECKIT | CHECKED | MENUTOGGLE, 0, ToggleSortMode,},
  249.    /* 73 */ {NM_ITEM, (UBYTE *) "Working bar",        (UBYTE *) "B", CHECKIT | MENUTOGGLE, 0, ToggleWorkingBar,},
  250.    /* 74 */ {NM_ITEM, (UBYTE *) "Auto front window",  (UBYTE *) "Z", CHECKIT | MENUTOGGLE, 0, ToggleAutoFront,},
  251.    /* 75 */ {NM_ITEM, (UBYTE *) "Mouse window",       (UBYTE *) "M", CHECKIT | MENUTOGGLE, 0, ToggleMouseWindow,},
  252.    /* 76 */ {NM_ITEM, (UBYTE *) "Topaz Font",         (UBYTE *) "T", CHECKIT | MENUTOGGLE, 0, ToggleTopazFont,},
  253.    /* 77 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  254.    /* 78 */ {NM_ITEM, (UBYTE *) "Speaking",           NULL, CHECKIT | MENUTOGGLE, 0, ToggleSpeakMode,},
  255.    /* 79 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  256.    /* 80 */ {NM_ITEM, (UBYTE *) "Save asking",        NULL, CHECKIT | CHECKED | MENUTOGGLE, 0, ToggleAskingMode,},
  257.    /* 81 */ {NM_ITEM, (UBYTE *) "Text formatter",     NULL, CHECKIT | CHECKED | MENUTOGGLE, 0, ToggleTextFormatter,},
  258.  
  259.  
  260.    /* 82 */ {NM_TITLE, (UBYTE *) "Ext. Data",          NULL, 0, 0, NULL,},
  261.  
  262.    /* 83 */ {NM_ITEM, (UBYTE *) "Reload action file...", 0, 0, 0, BuildActionList,},
  263.    /* 84 */ {NM_ITEM, (UBYTE *) "Reload hardware datas...", 0, 0, 0, BuildHardwareList,},
  264.    /* 85 */ {NM_ITEM, (UBYTE *) "Reload library offsets...", 0, 0, 0, BuildLibOffsetList,},
  265.    /* 86 */ {NM_ITEM, (UBYTE *) "Reload AGuide context nodes...", 0, 0, 0, BuildHelpList,},
  266.  
  267.    /* 87 */ {NM_TITLE, (UBYTE *) "Search",          NULL, 0, 0, NULL,},
  268.  
  269.    /* 88 */ {NM_ITEM, (UBYTE *) "Find next",          (UBYTE *) "N", 0, 0, RSysFindNext,},
  270.    /* 89 */ {NM_ITEM, (UBYTE *) "Find previous",      (UBYTE *) "P", 0, 0, RSysFindPrev,},
  271.    /* 90 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
  272.    /* 91 */ {NM_ITEM, (UBYTE *) "Search string...",   (UBYTE *) "S", 0, 0, RSysSearch,},
  273.  
  274. /* -----------------------------------------------------------
  275.    {NM_TITLE, (UBYTE *) "Log File",          NULL, 0, 0, NULL,},
  276.  
  277.    {NM_ITEM, (UBYTE *) "Open Log file",      NULL, 0, 0, OpenErrorLogFile,},
  278.    {NM_ITEM, (UBYTE *) "Close Log File",     NULL, 0, 0, CloseErrorLogFile,},
  279.  
  280.     {NM_ITEM, (UBYTE *) NM_BARLABEL,             NULL, 0, NULL, NULL,},
  281.     {NM_ITEM, (UBYTE *) "Trap handler test (for betas only!)",            NULL, 0, NULL, test},
  282. /* ----------------------------------------------------------- */
  283.  
  284.     /* 71 */ {NM_END, NULL,                                     NULL, 0, NULL, NULL}
  285. };
  286.  
  287.  
  288. static void
  289. ReCalcLVHeight(struct Screen *Scr)
  290. {
  291.    int i, j = 0;
  292.  
  293.    newlvh = ((SysWnd->Height - (SysWnd->BorderBottom + SysWnd->BorderTop + 3) -
  294.              ComputeY((UWORD)(WndH - LVH))) / FontY) + 1;
  295.  
  296.    for(i = 0; i <= Sys_CNT; i++)
  297.       if(i <= 15 || i == 18 || i == 19) SysNGad[i].ng_TopEdge = tops[i] + (newlvh - 10) * 8;
  298.  
  299.    SysNGad[16].ng_Height = LVH + (newlvh - 10) * 8;
  300.  
  301.    return;
  302. }
  303.  
  304. long
  305. CreateMainGadgets(void)
  306. {
  307.    struct Gadget *g;
  308.     struct NewGadget ng;
  309.     UWORD     lc, tc;
  310.  
  311.     if (NOT(g = CreateContext(&SysGList))) return 1L;
  312.  
  313.     SysGTags[50] = (ULONG *)&EntryAttr[LastID].ea_header[0];
  314.  
  315.     for( lc = 0, tc = 0; lc <= Sys_CNT; lc++ )
  316.    {
  317.         CopyMem(&SysNGad[ lc ], &ng, sizeof( struct NewGadget ));
  318.  
  319.         ng.ng_VisualInfo = VisualInfo;
  320.         ng.ng_TextAttr   = Font;
  321.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  322.         ng.ng_TopEdge      = OffY + ComputeY( ng.ng_TopEdge);
  323.         ng.ng_Width       = ComputeX( ng.ng_Width );
  324.         ng.ng_Height      = ComputeY( ng.ng_Height);
  325.  
  326.         SysGadgets[ lc ] = g = CreateGadgetA((ULONG)SysGTypes[ lc ], g, &ng, ( struct TagItem * )&SysGTags[ tc ] );
  327.  
  328.         while( SysGTags[ tc ] ) tc += 2;
  329.  
  330.         tc++;
  331.  
  332.         if ( NOT g ) return 2L;
  333.     }
  334.  
  335.    return 0L;
  336. }
  337.  
  338.  
  339. void
  340. ResizeWindowRefresh(void)
  341. {
  342.    extern void MakePattern(struct Window *);
  343.  
  344.     InitListView(SysWnd,SysGadgets[GD_ListeLV],NULL,0);
  345.  
  346.    RemoveGList(SysWnd, SysGList, (-1));
  347.  
  348.     if (SysGList)
  349.     {
  350.         FreeGadgets(SysGList);
  351.         SysGList = NULL;
  352.     }
  353.  
  354.    ReCalcLVHeight(Scr);
  355.  
  356.    if(CreateMainGadgets()) ErrorHandle("CreateMainGadgets()", GADGET_ERR, CREATE_FAIL, KILL);
  357.  
  358.    AddGList(SysWnd, SysGList, -1, (-1), NULL);
  359.  
  360.    MakePattern(SysWnd);
  361.  
  362.     RefreshMainWindowPattern();
  363.  
  364.     RefreshListView();
  365.  
  366.    PrintStatistics();
  367.  
  368.    ClearIntuiMsgPort(SysWnd);
  369.  
  370.    SysHeight = FULL * (SysWnd->Height - OffY - Scr->WBorBottom) / (FRAC * FontY);
  371.  
  372.    return;
  373. }
  374.  
  375. static void
  376. AdjustLVLines(void)
  377. {
  378.    ComputeFont(Scr, (UWORD)0, (UWORD)0);
  379.  
  380.    if ((ComputeY(SysHeight) + OffY + Scr->WBorBottom) > Scr->Height)
  381.       do
  382.       {
  383.          newlvh--;
  384.          SysHeight -= 8;
  385.       } while(newlvh > 3 &&
  386.               (ComputeY(SysHeight) + OffY + Scr->WBorBottom) > Scr->Height);
  387.  
  388.    return;
  389. }
  390.  
  391.     /*
  392.      * OpenSysWindow() öffnet das Hauptfenster von RSys
  393.      */
  394. int
  395. OpenSysWindow(void)
  396. {
  397.     UWORD wleft = SysLeft,
  398.             wtop = SysTop,
  399.             ww,
  400.             wh, smh;
  401.    int i = 0;
  402.    long gads_not_ok;
  403.     extern int winddetail,windblock,menudetail;
  404.     int gl[] = {GD_ListeLV, GD_TextHeader, GD_InfoMsgGad};
  405.  
  406.     DPOS;
  407.  
  408.    AdjustLVLines();
  409.  
  410.    AdjustWindowDimensions(Scr, SysLeft, SysTop, SysWidth, SysHeight,
  411.                                &wleft, &wtop, &ww, &wh);
  412.  
  413.     smh = compute((UWORD) 0, FontY, (int)SysMinH);
  414.     smh = compute((UWORD) (OffY + Scr->WBorBottom), FontY, (int)SysMinH);
  415.  
  416.     SysNewMenu[2].nm_Flags      = (Flags.helpmode ? (CHECKIT | CHECKED | MENUTOGGLE) :
  417.                                         (CHECKIT | MENUTOGGLE)) ;
  418. #define FFLAG 71
  419.  
  420.     SysNewMenu[FFLAG].nm_Flags  = (Flags.fastmode ? (CHECKIT | CHECKED | MENUTOGGLE) :
  421.                                         (CHECKIT | MENUTOGGLE)) ;
  422.     SysNewMenu[FFLAG+1].nm_Flags = (Flags.sortmode ? (CHECKIT | CHECKED | MENUTOGGLE) :
  423.                                         (CHECKIT | MENUTOGGLE)) ;
  424.     SysNewMenu[FFLAG+2].nm_Flags = (Flags.workingbar ? (CHECKIT | CHECKED | MENUTOGGLE) :
  425.                                         (CHECKIT | MENUTOGGLE)) ;
  426.     SysNewMenu[FFLAG+3].nm_Flags = (Flags.autofront ? (CHECKIT | CHECKED | MENUTOGGLE) :
  427.                                         (CHECKIT | MENUTOGGLE)) ;
  428.     SysNewMenu[FFLAG+4].nm_Flags = (Flags.mousewindow ? (CHECKIT | CHECKED | MENUTOGGLE) :
  429.                                         (CHECKIT | MENUTOGGLE)) ;
  430.     SysNewMenu[FFLAG+5].nm_Flags = (Flags.sysfont ? (CHECKIT | CHECKED | MENUTOGGLE) :
  431.                                         (CHECKIT | MENUTOGGLE));
  432.     SysNewMenu[FFLAG+7].nm_Flags = (Flags.speakmode ? (CHECKIT | CHECKED | MENUTOGGLE) :
  433.                                         (CHECKIT | MENUTOGGLE));
  434.     SysNewMenu[FFLAG+9].nm_Flags = (Flags.saveasking ? (CHECKIT | CHECKED | MENUTOGGLE) :
  435.                                         (CHECKIT | MENUTOGGLE));
  436.     SysNewMenu[FFLAG+10].nm_Flags = (Flags.textformat ? (CHECKIT | CHECKED | MENUTOGGLE) :
  437.                                         (CHECKIT | MENUTOGGLE));
  438.  
  439.     if (NOT(SysMenus = CreateMenus(SysNewMenu, GTMN_FrontPen, menudetail, TAG_DONE)))
  440.         return 3L;
  441.  
  442.     LayoutMenus(SysMenus, VisualInfo, GTMN_NewLookMenus, TRUE, GTMN_TextAttr, Font, TAG_DONE);
  443.  
  444.     SysZoom[0] = 300;
  445.     SysZoom[1] = 0;
  446.     SysZoom[2] = compute((UWORD) (OffX + Scr->WBorRight), FontX, 158);
  447.     SysZoom[3] = OffY;
  448.  
  449.     if (NOT(SysWnd = OpenWindowTags(NULL,
  450.                                               WA_Left, wleft,
  451.                                               WA_Top, wtop,
  452.                                               WA_Width, ww,
  453.                                               WA_MinWidth, ww,
  454.                                               WA_MaxWidth, ww,
  455.                                               WA_Height, wh,
  456.                                               WA_MinHeight, smh,
  457.                                               WA_MaxHeight, -1,
  458.                                               WA_DetailPen, winddetail,
  459.                                               WA_BlockPen, windblock,
  460.                                               WA_IDCMP, BUTTONIDCMP |
  461.                                                        LISTVIEWIDCMP |
  462.                                                        IDCMP_MOUSEBUTTONS |
  463.                                                        IDCMP_MOUSEMOVE |
  464.                                                        IDCMP_CLOSEWINDOW |
  465.                                                        IDCMP_ACTIVEWINDOW |
  466.                                                        IDCMP_INACTIVEWINDOW |
  467.                                                        IDCMP_SIZEVERIFY |
  468.                                                        IDCMP_NEWSIZE |
  469.                                                        IDCMP_RAWKEY |
  470.                                                        IDCMP_VANILLAKEY |
  471.                                                        IDCMP_CHANGEWINDOW |
  472.                                                        IDCMP_DISKREMOVED |
  473.                                                        IDCMP_DISKINSERTED |
  474.                                                        IDCMP_MENUPICK,
  475.                                               WA_DragBar,           TRUE,
  476.                                               WA_DepthGadget,       TRUE,
  477.                                               WA_CloseGadget,       TRUE,
  478.                                               WA_SmartRefresh,      TRUE,
  479.                                               WA_NoCareRefresh,     TRUE,
  480.                                               WA_SizeGadget,        TRUE,
  481.                                    WA_SizeBBottom,       TRUE,
  482.                                               WA_Zoom,              SysZoom,
  483.                                               WA_PubScreenName,     (LONG) namebuffer,
  484.                                               WA_PubScreenFallBack, TRUE,
  485.                                               WA_PubScreen,         Scr,
  486.                                               WA_Title,             SysWdt,
  487.                                    WA_Dummy + 0x30,      1L,
  488.                                               TAG_DONE)))
  489.         return 4L;
  490.  
  491.     SysZoom[0] = SysWnd->LeftEdge;
  492.     SysZoom[1] = SysWnd->TopEdge;
  493.     SysZoom[2] = SysWnd->Width;
  494.     SysZoom[3] = SysWnd->Height;
  495.  
  496.     SetMenuStrip(SysWnd, SysMenus);
  497.  
  498.     if(NOT(Flags.wb_start))
  499.    {
  500.       OffMenu(SysWnd, FULLMENUNUM(0,0,0));
  501.       OffMenu(SysWnd, FULLMENUNUM(0,1,0));
  502.       OffMenu(SysWnd, FULLMENUNUM(7,0,0));
  503.       OffMenu(SysWnd, FULLMENUNUM(7,3,0));
  504.    }
  505.  
  506.     if(Flags.nohelp) OffMenu(SysWnd, FULLMENUNUM(0,1,0));
  507.  
  508.    ReCalcLVHeight(Scr);
  509.  
  510.    if(gads_not_ok = CreateMainGadgets()) return gads_not_ok;
  511.  
  512.     RefreshRastPort(SysWnd, SysGadgets, gl, 3, FALSE, SysGList);
  513.  
  514.     return NULL;
  515. }
  516.  
  517.