/*
***************************************************************************
*
* Datei:
*    RSysGlobal.c
*
* Inhalt:
*
* Bemerkungen:
*    Globale Daten für RSys (Flags, Menus etc.)
*
* Erstellungsdatum:
*    07-Jul-93    Rolf Böhme
*
* Änderungen:
*    07-Jul-93    Rolf Böhme    Erstellung
*
***************************************************************************
*/

#include "RSysFunc.h"

struct Library *DiskfontBase           = NULL;
struct Library *AslBase                = NULL;
struct Library *GadToolsBase           = NULL;
struct Library *UtilityBase            = NULL;
struct Library *CxBase                 = NULL;
struct Library *IFFParseBase           = NULL;
struct Library *IconBase               = NULL;

struct WorkbenchBase *WorkbenchBase    = NULL;
struct IntuitionBase *IntuitionBase    = NULL;
struct GfxBase *GfxBase                = NULL;
struct ExpansionBase *ExpansionBase    = NULL;
struct AmigaGuideBase *AmigaGuideBase  = NULL;

struct ExecBase *SysBase;

UBYTE namebuffer[MAXPUBSCREENNAME + 1] = (UBYTE *) "Workbench",
      autocon[MAXFULLNAME];

char _fullpath[MAXFULLNAME];

struct List ListeLVList;

struct Screen *Scr = NULL;
APTR  VisualInfo = NULL;
struct Window *SysWnd = NULL;
struct Gadget *SysGList = NULL;
struct Menu *SysMenus = NULL;
UWORD SysZoom[4];
struct Gadget *SysGadgets[19];
UWORD SysLeft = 153;
UWORD SysTop = 30;
UWORD SysWidth = 391;
UWORD SysHeight = 173;
UBYTE *SysWdt = (UBYTE *) NAME " " VERSION " (" DATE ", " TIME ")";
struct TextAttr *Font;
UWORD FontX,
      FontY;
UWORD OffX,
      OffY;
struct TextAttr Topaz80 =
{
   (STRPTR) "topaz.font", TOPAZ_EIGHTY, FS_NORMAL, FPF_ROMFONT
};

/* ----------------------------------------------------------- *
#include <clib/keymap_protos.h>
struct Library *KeymapBase = NULL;
void
test(void)
{
   int a = 1, b = 0;

   a = a / b;

   MapANSI((STRPTR)"huhu",4L,(STRPTR)"huhu",4L, NULL);

}
/* ----------------------------------------------------------- */


struct NewMenu SysNewMenu[]=
{
   /* 00 */ {NM_TITLE, (UBYTE *) "Project", NULL, 0, 0, NULL,},

   /* 01 */ {NM_ITEM, (UBYTE *) "Iconify, <ESC>", (UBYTE *) "I", 0, 0, Iconify,},
   /* 02 */ {NM_ITEM, (UBYTE *) "Help", (UBYTE *) "H", 0, 0, Help,},
   /* 03 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
   /* 04 */ {NM_ITEM, (UBYTE *) "Reload action file", 0, 0, 0, BuildActionList,},
   /* 05 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
   /* 06 */ {NM_ITEM, (UBYTE *) "About...", NULL, 0, 0, About,},
   /* 07 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},
   /* 08 */ {NM_ITEM, (UBYTE *) "Quit " NAME "...", (UBYTE *) "Q", 0, 0, quit,},


   /* 09 */ {NM_TITLE, (UBYTE *) "Other Lists", NULL, 0, 0, NULL,},

   /* 10 */ {NM_ITEM, (UBYTE *) "Exec",       NULL, 0, 0, NULL,},

   /* 11 */ {NM_SUB,  (UBYTE *) "Software Devices",   (STRPTR)"1", 0, 0, SysSoftDeviceList,},
   /* 12 */ {NM_SUB,  (UBYTE *) "Vectors",            (STRPTR)"2", 0, 0, SysVectorList,},
   /* 13 */ {NM_SUB,  (UBYTE *) "CLI processes",      NULL, 0, 0, SysCLIList,},
   /* 14 */ {NM_SUB,  (UBYTE *) "Resident programs",  NULL, 0, 0, SysResidentProg,},
   /* 15 */ {NM_SUB,  (UBYTE *) "Semaphores",         NULL, 0, 0, SysSemaphoreList,},

   /* 16 */ {NM_ITEM, (UBYTE *) "DOS",        NULL, 0, 0, NULL,},

   /* 17 */ {NM_SUB,  (UBYTE *) "Volume locks",       (STRPTR)"3", 0, 0, RSysLockList,},
   /* 18 */ {NM_SUB,  (UBYTE *) "Physical Devices",   NULL, 0, 0, SysResidentList,},

   /* 19 */ {NM_ITEM, (UBYTE *) "Graphics",   NULL, 0, 0, NULL,},

   /* 20 */ {NM_SUB,  (UBYTE *) "Display modes",      (STRPTR)"4", 0, 0, RSysGetDisplayModes,},
   /* 21 */ {NM_SUB,  (UBYTE *) "Blitter Wait Queue", NULL, 0, 0, SysBlitterWaitList,},
   /* 22 */ {NM_SUB,  (UBYTE *) "TOF Wait Queue",     NULL, 0, 0, SysTOFWaitList,},

   /* 23 */ {NM_ITEM, (UBYTE *) "Diskfont",   NULL, 0, 0, NULL,},

   /* 24 */ {NM_SUB,  (UBYTE *) "Fonts in FONTS:",    (STRPTR)"5", 0, 0, SysAvailFontsList,},

   /* 25 */ {NM_ITEM, (UBYTE *) "Intuition",  NULL, 0, 0, NULL,},

   /* 26 */ {NM_SUB,  (UBYTE *) "Public Screens",     (STRPTR)"6", 0, 0, SysPubScreenList,},
   /* 27 */ {NM_SUB,  (UBYTE *) "Gadgets",            NULL, 0, 0, RSysGadgetList,},

   /* 28 */ {NM_ITEM, (UBYTE *) NM_BARLABEL, NULL, 0, NULL, NULL,},

   /* 29 */ {NM_ITEM, (UBYTE *) "Preferences",        NULL, 0, 0, NULL,},

   /* 30 */ {NM_SUB,  (UBYTE *) "Preferences Data",   (STRPTR)"7", 0, 0, SysPrefList,},
   /* 31 */ {NM_SUB,  (UBYTE *) "Printer data",       NULL, 0, 0, SysExtPrinterData,},
   /* 32 */ {NM_SUB,  (UBYTE *) "ENV-Variables",      NULL, 0, 0, SysEnvList,},

   /* 33 */ {NM_ITEM, (UBYTE *) "Other libraries",    NULL, 0, 0, NULL,},

   /* 34 */ {NM_SUB,  (UBYTE *) "Commodities",        (STRPTR)"8", 0, 0, SysBrokerList,},
   /* 35 */ {NM_SUB,  (UBYTE *) "Amigaguide XRef",    (STRPTR)"9", 0, 0, RSysAmigaGuideRefList,},


   /* 36 */ {NM_TITLE, (UBYTE *) "Actions",   NULL, 0, 0, NULL,},

   /* 37 */ {NM_ITEM, (UBYTE *) "CRC Check...",       NULL, 0, 0, CRCSum,},
   /* 38 */ {NM_ITEM, (UBYTE *) "Crypt File...",      NULL, 0, 0, CryptFile,},
   /* 39 */ {NM_ITEM, (UBYTE *) "List Hunks...",      NULL, 0, 0, HunkStruct,},
   /* 40 */ {NM_ITEM, (UBYTE *) "Find File...",       NULL, 0, 0, FindFile,},
   /* 41 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 42 */ {NM_ITEM, (UBYTE *) "Format Disk...",     NULL, 0, 0, FormatDisk,},
   /* 43 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 44 */ {NM_ITEM, (UBYTE *) "Save windows...",    NULL, 0, 0, SaveWindows,},
   /* 45 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 46 */ {NM_ITEM, (UBYTE *) "Check Libraries",    NULL, 0, 0, SysCheckOffs,},


   /* 47 */ {NM_TITLE, (UBYTE *) "Internal List",     NULL, 0, 0, NULL,},

   /* 48 */ {NM_ITEM, (UBYTE *) "Save current list",  (UBYTE *) "S", 0, 0, SaveCurrentList},
   /* 49 */ {NM_ITEM, (UBYTE *) "Restore saved list", (UBYTE *) "R", 0, 0, RestoreList},
   /* 50 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 51 */ {NM_ITEM, (UBYTE *) "Kill saved list",    NULL, 0, 0, KillList},


   /* 52 */ {NM_TITLE, (UBYTE *) "Flushing",          NULL, 0, 0, NULL,},

   /* 53 */ {NM_ITEM, (UBYTE *) "Flush libraries",    NULL, 0, 0, RSysFlushAllLibraries},
   /* 54 */ {NM_ITEM, (UBYTE *) "Flush fonts",        NULL, 0, 0, RSysFlushAllFonts},
   /* 55 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 56 */ {NM_ITEM, (UBYTE *) "Flush all libraries and fonts", NULL, 0, 0, RSysFlushAll},


   /* 57 */ {NM_TITLE, (UBYTE *) "Clip",         NULL, 0, 0, NULL,},

   /* 58 */ {NM_ITEM, (UBYTE *) "Clip entry...",         (UBYTE *)"C", 0, 0, RSysEntryToClip,},
   /* 59 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 60 */ {NM_ITEM, (UBYTE *) "Clip list",          NULL, 0, 0, RSysListToClip,},


   /* 61 */ {NM_TITLE, (UBYTE *) "Flags",             NULL, 0, 0, NULL,},

   /* 62 */ {NM_ITEM, (UBYTE *) "Fast Mode",          (UBYTE *) "F", CHECKIT | CHECKED | MENUTOGGLE, 0, ToggleFastMode},
   /* 63 */ {NM_ITEM, (UBYTE *) "Sorting",            (UBYTE *) "O", CHECKIT | CHECKED | MENUTOGGLE, 0, ToggleSortMode},
   /* 64 */ {NM_ITEM, (UBYTE *) "Working bar",        (UBYTE *) "B", CHECKIT | MENUTOGGLE, 0, ToggleWorkingBar},
   /* 65 */ {NM_ITEM, (UBYTE *) "Auto front window",  (UBYTE *) "Z", CHECKIT | MENUTOGGLE, 0, ToggleAutoFront},
   /* 66 */ {NM_ITEM, (UBYTE *) "Mouse window",       (UBYTE *) "M", CHECKIT | MENUTOGGLE, 0, ToggleMouseWindow},
   /* 67 */ {NM_ITEM, (UBYTE *) "Topaz Font",         (UBYTE *) "T", CHECKIT | MENUTOGGLE, 0, ToggleTopazFont},
   /* 68 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 69 */ {NM_ITEM, (UBYTE *) "Speaking",           (UBYTE *) "N", CHECKIT | MENUTOGGLE, 0, ToggleSpeakMode},
   /* 70 */ {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   /* 71 */ {NM_ITEM, (UBYTE *) "Save asking",        NULL, CHECKIT | CHECKED | MENUTOGGLE, 0, ToggleAskingMode},

/* ----------------------------------------------------------- *
   {NM_ITEM, (UBYTE *) NM_BARLABEL,          NULL, 0, NULL, NULL,},
   {NM_ITEM, (UBYTE *) "Trap handler test (for betas only!)",        NULL, 0, NULL, test},
/* ----------------------------------------------------------- */

   /* 71 */ {NM_END, NULL,                            NULL, 0, NULL, NULL}

};

struct MsgPort *SysIdPort;

ScrollEntry *Entries = NULL;

EntryAttribute EntryAttr[]=
{
   /* 00 */ {"Task",                    "Taskname            Typ  Pri Stack Stat Cli",  "%-18.18s %4.4s %4ld %5ld %4.4s %3.3s",     MakeTaskList,           1   },
   /* 01 */ {"Library",                 "Libraryname               Version OpenCnt O",  "%-24s %4ld.%-3ld %7ld %lc",                MakeLibList,            1   },
   /* 02 */ {"Memory",                  "Memory address     Size    Type",              "%08lx     %10ld %s",                       MakeMemoryList,         0   },
   /* 03 */ {"Port",                    "Portname               Signal-Task      Pri",  "%-22s %-15s %4ld",                         MakePortList,           1   },
   /* 04 */ {"Volume",                  "Volumename   K-Free K-Used %Used F Sta Typ",   "%-12.12s %6ld %6ld %4ld%% %lc %3.3s %4.4s",MakeVolumeList,         1   },
   /* 05 */ {"Assign",                  "Assign        Directory",                      "%-13.13s %-29.29s",                        MakeAssignList,         1   },
   /* 06 */ {"Font",                    "Fontname             Typ    Y   X Low Upp",    "%-20s %-4s %3ld %3ld %3ld %3ld",           MakeFontList,           1   },
   /* 07 */ {"Resource",                "Resourcename                Version OpenCnt",  "%-26.26s %4ld.%-3ld %6ld",                 MakeResList,            1   },
   /* 08 */ {"Interrupt",               "Interruptname         Pri   Data     Code",    "%-20.20s %4ld %08lx %08lx",                MakeIntrList,           1   },
   /* 09 */ {"Window",                  "Windowtitle         H   W   X   Y Screen",     "%-17.17s %3ld %3ld %3ld %3ld %-10.10s",    MakeWindowList,         1   },
   /* 10 */ {"Screen",                  "Screentitle               H   W   X   Y Typ",  "%-23.23s %3ld %3ld %3ld %3ld %3.3s",       MakeScreenList,         1   },
   /* 11 */ {"Input Handler",           "Inputhandler name     Pri   Data     Code",    "%-20.20s %4ld %08lx %08lx",                MakeHandlerList,        1   },
   /* 12 */ {"System Infos",            "                  Systeminfo",                 NULL,                                       MakeSystemList,         0   },
   /* 13 */ {"Hardware Infos",          "               Hardware/Expansion",            NULL,                                       MakeHardwareList,       0   },
   /* 14 */ {"Online Help",             "                  Online Help",                NULL,                                       NULL,                   0   },
   /* 15 */ {"Preferences",             "                  Preferences",                NULL,                                       SysPrefList,            0   },
   /* 16 */ {"Devices/Handler",         "Device name   Driver/Handler",                 "%-13.13s %-28.28s",                        SysResidentList,        1   },
   /* 17 */ {"Diskfonts",               "Font name            Type   Y Style",          "%-20.20s %-4.4s %3ld %10.10s",             SysAvailFontsList,      1   },
   /* 18 */ {"ENV:-List",                "ENV-Variable  Content",                        "%-13.13s %-28.28s",                        SysEnvList,             1   },
   /* 19 */ {"CLI-List",                "CLI nr. Name             Pri  Stack",          "CLI %-3ld %-15.15s %4ld %6ld",             SysCLIList,             1   },
   /* 20 */ {"Resident Program",       "Resident name    UseCount  Type",              "%-20.20s %4ld %-14.14s",                   SysResidentProg,        1   },
   /* 21 */ {"Semaphore",               "Semaphore name          Pri Ownertask",        "%-22.22s %4ld %-12.12s",                   SysSemaphoreList,       1   },
   /* 22 */ {"System vector",           "               System Vectors",                NULL,                                       SysVectorList,          0   },
   /* 23 */ {"Software Device",         "Devicename                  Version OpenCnt",  "%-26.26s %4ld.%-3ld %6ld",                 SysSoftDeviceList,      1   },
   /* 24 */ {"Public Screen",           "Address  Name              VCnt SigTask",      "%08lx %-18.18s %3ld %-9.9s",               SysPubScreenList,       1   },
   /* 25 */ {"Blitter Waiter",          "Name                 Prio",                    "%-20.20s %3ld",                            SysBlitterWaitList,     1   },
   /* 26 */ {"TOF Waiter",              "Name                 Prio",                    "%-20.20s %3ld",                            SysTOFWaitList,         1   },
   /* 27 */ {"Commodity",               "Commodity name      Prio",                     "%-20.20s %3ld",                            SysBrokerList,          1   },
   /* 28 */ {"Printer data",            "                 Printer data",                 NULL,                                      SysExtPrinterData,      0   },
   /* 29 */ {"Library offsets",          "           Library/Devices offsets",            NULL,                                       SysCheckOffs,          0   },
   /* 30 */ {"Available Display Modes", "Name              Depth   MinR      MaxR",     "%-17.17s  %3ld  %4ld,%-4ld %4ld,%-4ld",    RSysGetDisplayModes,    1   },
   /* 31 */ {"Volume locks",            "File                                Access ",  "%-35.35s  %-5s",                           RSysLockList,           1   },
   /* 32 */ {"Amigaguide XRef",         "XRef keyword   Type File           Line",      "%-14.14s %4.4s %-15.15s %4ld",             RSysAmigaGuideRefList,  1   },
   /* 33 */ {"Gadgets",                 "Gadget text    Typ    PosX PosY    W    H",    "%-14.14s %6.6s %4ld %4ld %4ld %4ld",       RSysGadgetList,         0   },
};

struct _flags Flags =
{
   1, 1, 0, 0, 0, 0, 0, 1, 1,

/* RSys private */
   1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

int   countentries;
int   topentry;

int   LastID = SYSTEMINFO;

int ReopenWindow = FALSE;

const char *field[] = {
   "-",
   "<no id>",
   "<no flags>",
   "<no task>",
   "<no node>",
   "<wrong type: %ld>",
   "<??>",
   "<no title>",
   "<no baudrate>",
   "<no parity>",
   "<no handshk>",
   "<no handler>",
   "<no file>",
   "<no lock>",
   " "
};
