/***********************************************
* Preferences                                  *
* Autor: Andreas Krämer                        *
* Copyright KICKSTART 2.88                     *
* Erstellt auf dem Lattice C Compiler          *
************************************************
* Prefmaus                                     *
***********************************************/

/* Zwei Dateien werden eingebunden */

#include <exec/types.h>
#include <intuition/intuition.h>

/* Zuweisung von verschiedenen Strukturen mit  *
*  einem Zeiger. Die Zeiger werden später im   *
*  Hauptprogramm benötigt.                    */

struct IntuitionBase *IntuitionBase;
struct IntuiMessage *Nachricht;
struct Window *Window;

/* Die Preference Struktur */

struct Preferences Pref;

/* Integer */

int i;

/* Definition von einigen Variablen */

ULONG NachrichtenArt;
USHORT code;

/* Array fuer die alte Maus */

USHORT Altemaus[POINTERSIZE];

/* Die neuen Mausdaten */

USHORT Neuemaus[] =
{
 0x0000,0x0000,0x0180,0x0000,
 0x0000,0x0000,0xb2cb,0x0000,
 0xe7ae,0x0000,0xcd0c,0x0000,
 0xc90c,0x0000,0xe1ae,0x0000,
 0xb0cb,0x0000,0x0000,0x0000,
 0x0000,0x7cbf,0x0000,0x89aa,
 0x0000,0xc9b2,0x0000,0x2aaa,
 0x0000,0xcaaa,0x0000,0x0000,
 0x0000,0x0000,0x0000,0x0000
};

/* Die NewWindow Struktur */

struct NewWindow Fenster =
{
 10, 10,
 50, 20,
 0, 1,
 CLOSEWINDOW,
 WINDOWCLOSE,
 NULL, NULL, 0, NULL, NULL,
 0, 0, 0, 0,
 WBENCHSCREEN
};

/************************************************
* Beginn des Hauptprogrammes                    *
************************************************/

main()
{
/* Zusätzlicher Zeiger auf eine Struktur */

struct Message *GetMsg();

/* Öffnen der Intuition Library */

IntuitionBase=(struct IntuitionBase *)
     OpenLibrary("intuition.library",0);
if(IntuitionBase==NULL)exit(FALSE);

/* Öffnen des Fensters */

if((Window=(struct Window *)
     OpenWindow(&Fenster))==NULL)
exit(FALSE);

/************************************************
* List die Werte der momentan eingestellten     *
* Preferences                                   *
************************************************/

GetPrefs(&Pref,sizeof(struct Preferences));

/* Die alten Mausdaten werden gespeichert */

for(i=0;i<POINTERSIZE;i++)
        Altemaus[i]=Pref.PointerMatrix[i];

/* Die neuen Mausdaten werden gelesen */

for(i=0;i<POINTERSIZE;i++)
        Pref.PointerMatrix[i]=Neuemaus[i];

/* Setzen der neuen Maus */

SetPrefs(&Pref,sizeof(struct Preferences),FALSE);

/************************************************
* Endlosschleife - fragt Ereignisse ab          *
************************************************/

for(;;)
{

   if(Nachricht=(struct IntuiMessage *)
     GetMsg(Window->UserPort))
   {
    NachrichtenArt=Nachricht ->Class;
    code=Nachricht->Code;
    ReplyMsg(Nachricht);
    switch (NachrichtenArt)
       {
        /* Sprung in das Unterprogramm *
         * Reaktion, wenn das Gadget   *
         * angewaehlt wird.           */ 
        case CLOSEWINDOW : Ende();
                           break;
       } /* switch */
    } /* if */
 } /* Ende for */
 return(0);
} /* Ende main */

/************************************************
* Unterprogramm zum Schliessen aller            *
* Einrichtungen.                                *
************************************************/

Ende()
{
/* Setzen der alten Maus */
for(i=0;i<POINTERSIZE;i++)
               Pref.PointerMatrix[i]=Altemaus[i];
SetPrefs(&Pref,sizeof(struct Preferences),FALSE);

/* Schliessen des Fensters und der Library */

  CloseWindow(Window);
  CloseLibrary(IntuitionBase);
  exit(TRUE);
 return (0);
} /* Programmende */


