/*
 *  Source machine generated by GadToolsBox V2.0b
 *  which is (c) Copyright 1991-1993 Jaba Development
 *
 *  GUI Designed by : Jens Weyer
 */

#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <clib/diskfont_protos.h>

#include <pragmas/exec_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include <pragmas/gadtools_pragmas.h>
#include <pragmas/graphics_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragma/diskfont_lib.h>
#include <pragma/dos_lib.h>

#include <my/EasyReq.h>

#include <wbstartup.h>

#include "Do5extPrefs11.h"

int EasyReq(struct Window *, char *, char *, char *);
/*int CheckOpusVersion(void);*/
void LoadENVars(void);
int SwapState(int,int);
void SwapPUD(int);
void SwapCheck(int,int);
int GetEnv(char *);
void SetEnv(char *, int);

static unsigned char *version = "$VER:DO5extPrefs 1.1  ("__DATE__") by Jens Weyer for DOpus 5.65+";

struct Library     *GadToolsBase;
int                        NoNoLabel = 0;
int                        DLook = 0;
int                        NoCustomDrag = 0;
int                        PopUpDelay = 0;
int                        ShowUseDTFirst = 0;
int                        UseWBInfo = 0;
int                        WBTitle = 0;
int                        QuickIconDrag = 0;
int                        PopTime = 10;
int                        NoMUFS = 0;
int                        Benefy = 0;

struct Screen         *Scr = NULL;
UBYTE                 *PubScreenName = "Workbench";
APTR                   VisualInfo = NULL;
struct Window         *Project0Wnd = NULL;
struct Gadget         *Project0GList = NULL;
struct Menu           *Project0Menus = NULL;
struct IntuiMessage    Project0Msg;
struct Gadget         *Project0Gadgets[13];
UWORD                  Project0Left = 10;
UWORD                  Project0Top = 15;
UWORD                  Project0Width = 334;
UWORD                  Project0Height = 145;
UBYTE                 *Project0Wdt = (UBYTE *)"DO5extPrefs v1.1";
struct TextAttr       *Font, Attr;
UWORD                  FontX, FontY;
UWORD                  OffX, OffY;
struct TextFont       *Project0Font = NULL;

struct NewMenu Project0NewMenu[] = {
	NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
	NM_ITEM, (STRPTR)"About...", (STRPTR)"?", 0, 0L, (APTR)Project0About,
	NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
	NM_ITEM, (STRPTR)"Use", (STRPTR)"U", 0, 0L, (APTR)Project0Use,
	NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
	NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, (APTR)Project0Save,
	NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
	NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)Project0Quit,
	NM_END, NULL, NULL, 0, 0L, NULL };

UWORD Project0GTypes[] = {
	BUTTON_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND,
	INTEGER_KIND,
	BUTTON_KIND,
	CHECKBOX_KIND,
	CHECKBOX_KIND
};

struct NewGadget Project0NGad[] = {
	5, 123, 147, 16, (UBYTE *)"_Save", NULL, GD_Save, PLACETEXT_IN, NULL, (APTR)SaveClicked,
	121, 7, 26, 11, (UBYTE *)"_NoNoLabel", NULL, GD_Label, PLACETEXT_LEFT, NULL, (APTR)LabelClicked,
	121, 24, 26, 11, (UBYTE *)"No_CustomDrag", NULL, GD_NoCustomDrag, PLACETEXT_LEFT, NULL, (APTR)NoCustomDragClicked,
	121, 42, 26, 11, (UBYTE *)"_WorkbenchTitle", NULL, GD_WBTitle, PLACETEXT_LEFT, NULL, (APTR)WBTitleClicked,
	121, 61, 26, 11, (UBYTE *)"_QuickIconDrag", NULL, GD_QuickIconDrag, PLACETEXT_LEFT, NULL, (APTR)QuickIconDragClicked,
	121, 100, 26, 11, (UBYTE *)"_PopUpDelay", NULL, GD_PopUpDelay, PLACETEXT_LEFT, NULL, (APTR)PopUpDelayClicked,
	161, 7, 26, 11, (UBYTE *)"_UseWBInfo", NULL, GD_UseWBInfo, PLACETEXT_RIGHT, NULL, (APTR)UseWBInfoClicked,
	161, 24, 26, 11, (UBYTE *)"Sh_owUseDatatypesFirst", NULL, GD_DTF, PLACETEXT_RIGHT, NULL, (APTR)DTFClicked,
	161, 42, 26, 11, (UBYTE *)"3D_Look", NULL, GD_3DLook, PLACETEXT_RIGHT, NULL, (APTR)DLookClicked,
	162, 98, 53, 15, (UBYTE *)"in 1/50 secs.", NULL, GD_TimePopUpDelay, PLACETEXT_RIGHT, NULL, (APTR)TimePopUpDelayClicked,
	182, 123, 147, 16, (UBYTE *)"Us_e", NULL, GD_Use, PLACETEXT_IN, NULL, (APTR)UseClicked,
	161, 61, 26, 11, (UBYTE *)"No_MultiUser", NULL, GD_NoMUFS, PLACETEXT_RIGHT, NULL, (APTR)NoMUFSClicked,
	121, 80, 26, 11, (UBYTE *)"_Benefy", NULL, GD_Benefy, PLACETEXT_LEFT, NULL, (APTR)BenefyClicked
};

ULONG Project0GTags[] = {
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GA_TabCycle), FALSE, (GTIN_Number), 10, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (GA_Disabled), TRUE, (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE),
	(GT_Underscore), '_', (TAG_DONE)
};

static UWORD ComputeX( UWORD value )
{
	return(( UWORD )((( FontX * value ) + 3 ) / 6 ));
}

static UWORD ComputeY( UWORD value )
{
	return(( UWORD )((( FontY * value ) + 5 ) / 11 ));
}

static void ComputeFont( UWORD width, UWORD height )
{
	Forbid();
	Font = &Attr;
	Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
	Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
	FontX = GfxBase->DefaultFont->tf_XSize;
	Permit();

	OffX = Scr->WBorLeft;
	OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;

	if ( width && height ) {
		if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
			goto UseTopaz;
		if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
			goto UseTopaz;
	}
	return;

UseTopaz:
	Font->ta_Name = (STRPTR)"topaz.font";
	FontX = FontY = Font->ta_YSize = 8;
}

int SetupScreen( void )
{
	if ( ! ( Scr = LockPubScreen( PubScreenName )))
		return( 1L );

	ComputeFont( 0, 0 );

	if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
		return( 2L );

	return( 0L );
}

void CloseDownScreen( void )
{
	if ( VisualInfo ) {
		FreeVisualInfo( VisualInfo );
		VisualInfo = NULL;
	}

	if ( Scr        ) {
		UnlockPubScreen( NULL, Scr );
		Scr = NULL;
	}
}

void Project0Render( void )
{
	ComputeFont( Project0Width, Project0Height );

	DrawBevelBox( Project0Wnd->RPort, OffX + ComputeX( 5 ),
					OffY + ComputeY( 4 ),
					ComputeX( 323 ),
					ComputeY( 116 ),
					GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE );
	DrawBevelBox( Project0Wnd->RPort, OffX + ComputeX( 2 ),
					OffY + ComputeY( 1 ),
					ComputeX( 330 ),
					ComputeY( 142 ),
					GT_VisualInfo, VisualInfo, TAG_DONE );
}

int HandleProject0IDCMP( void )
{
	struct IntuiMessage	*m;
	struct MenuItem		*n;
	int			(*func)();
	BOOL			running = TRUE;

	while( m = GT_GetIMsg( Project0Wnd->UserPort )) {

		CopyMem(( char * )m, ( char * )&Project0Msg, (long)sizeof( struct IntuiMessage ));

		GT_ReplyIMsg( m );

		switch ( Project0Msg.Class ) {

			case	IDCMP_REFRESHWINDOW:
				GT_BeginRefresh( Project0Wnd );
				Project0Render();
				GT_EndRefresh( Project0Wnd, TRUE );
				break;

			case	IDCMP_CLOSEWINDOW:
				running = Project0CloseWindow();
				break;

			case	IDCMP_VANILLAKEY:
				running = Project0VanillaKey();
				break;

			case	IDCMP_GADGETUP:
			case	IDCMP_GADGETDOWN:
				func = ( void * )(( struct Gadget * )Project0Msg.IAddress )->UserData;
				running = func();
				break;

			case	IDCMP_MENUPICK:
				while( Project0Msg.Code != MENUNULL ) {
					n = ItemAddress( Project0Menus, Project0Msg.Code );
					func = (void *)(GTMENUITEM_USERDATA( n ));
					running = func();
					Project0Msg.Code = n->NextSelect;
				}
				break;
		}
	}
	return( running );
}

int OpenProject0Window( void )
{
	struct NewGadget	ng;
	struct Gadget	*g;
	UWORD		lc, tc;
	UWORD		wleft = Project0Left, wtop = Project0Top, ww, wh;

	ComputeFont( Project0Width, Project0Height );

	ww = ComputeX( Project0Width );
	wh = ComputeY( Project0Height );

	if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
	if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;

	if ( ! ( Project0Font = OpenDiskFont( Font )))
		return( 5L );

	if ( ! ( g = CreateContext( &Project0GList )))
		return( 1L );

	for( lc = 0, tc = 0; lc < Project0_CNT; lc++ ) {

		CopyMem((char * )&Project0NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));

		ng.ng_VisualInfo = VisualInfo;
		ng.ng_TextAttr   = Font;
		ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
		ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
		ng.ng_Width      = ComputeX( ng.ng_Width );
		ng.ng_Height     = ComputeY( ng.ng_Height);

		Project0Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project0GTypes[ lc ], g, &ng, ( struct TagItem * )&Project0GTags[ tc ] );

		while( Project0GTags[ tc ] ) tc += 2;
		tc++;

		if ( NOT g )
			return( 2L );
	}

	if ( ! ( Project0Menus = CreateMenus( Project0NewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
		return( 3L );

	LayoutMenus( Project0Menus, VisualInfo, TAG_DONE );

	if ( ! ( Project0Wnd = OpenWindowTags( NULL,
				 WA_Left, ((Scr->Width) / 2) - (Project0Width / 2),
				 WA_Top, ((Scr->Height) / 2) - (Project0Height / 2),
				WA_Width,	ww + OffX + Scr->WBorRight,
				WA_Height,	wh + OffY + Scr->WBorBottom,
				WA_IDCMP,	BUTTONIDCMP|CHECKBOXIDCMP|INTEGERIDCMP|IDCMP_GADGETDOWN|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
				WA_Flags,	WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
				WA_Gadgets,	Project0GList,
				WA_Title,	Project0Wdt,
				WA_ScreenTitle,	"extended Preferences for DOpus5 - (c)1997-98 by Jens Weyer",
				TAG_DONE )))
	return( 4L );

	SetMenuStrip( Project0Wnd, Project0Menus );
	GT_RefreshWindow( Project0Wnd, NULL );

	Project0Render();

	return( 0L );
}

void CloseProject0Window( void )
{
	if ( Project0Menus      ) {
		ClearMenuStrip( Project0Wnd );
		FreeMenus( Project0Menus );
		Project0Menus = NULL;	}

	if ( Project0Wnd        ) {
		CloseWindow( Project0Wnd );
		Project0Wnd = NULL;
	}

	if ( Project0GList      ) {
		FreeGadgets( Project0GList );
		Project0GList = NULL;
	}

	if ( Project0Font ) {
		CloseFont( Project0Font );
		Project0Font = NULL;
	}
}

void main(void)
{
  BOOL running = TRUE;
  GadToolsBase = OpenLibrary("gadtools.library",39L);
  if (GadToolsBase)
  {
/*    running = CheckOpusVersion();
    if (running)
    {*/
      SetupScreen();
      OpenProject0Window();
      LoadENVars();
      while(running == TRUE)
      {
        WaitPort(Project0Wnd->UserPort);
        running = HandleProject0IDCMP();
      }
      CloseProject0Window();
      CloseDownScreen();
/*    }
    else
    {
      CloseLibrary(GadToolsBase);
      exit(30);
    }*/
    CloseLibrary(GadToolsBase);
  }
  else
  {
    exit(40);
  }
}

/*int CheckOpusVersion(void)
{
  FILE *f;
  double Tes;
  char Exe[100];
  int Test;
  int Ret = 0;
  strcpy(Exe,"C:Version DOpus5:DirectoryOpus >T:DOVersion");
  Execute(Exe,0,0);
  memset(Exe,99,0);
  f = fopen("T:DOVersion","r");
  if (f)
  {
    Test = fscanf(f,"%s",Exe);
    Test = fscanf(f,"%ld",Tes);
    fclose(f);
  }
  DeleteFile("T:DOVersion");
  if (Tes >= 5.65)
  {
    Ret = 1;
  }
  return(Ret);
}
*/
/* This file contains empty template routines that
 * the IDCMP handler will call uppon. Fill out these
 * routines with your code or use them as a reference
 * to create your program.
 */

int SaveClicked( void )
{
	/* routine when gadget "_Save" is clicked. */
  if (PopUpDelay == 0)
  {
    PopTime = 10;
  }
  SetEnv("ENVARC:DOpus/3DLook",DLook);
  SetEnv("ENVARC:DOpus/NoNoLabel",NoNoLabel);
  SetEnv("ENVARC:DOpus/NoCustomDrag",NoCustomDrag);
  SetEnv("ENVARC:DOpus/QuickIconDrag",QuickIconDrag);
  SetEnv("ENVARC:DOpus/PopUpDelay",PopTime);
  SetEnv("ENVARC:DOpus/ShowUseDatatypesFirst",ShowUseDTFirst);
  SetEnv("ENVARC:DOpus/WorkbenchTitle",WBTitle);
  SetEnv("ENVARC:DOpus/UseWBInfo",UseWBInfo);
  SetEnv("ENVARC:DOpus/NoMUFS",NoMUFS);
  SetEnv("ENVARC:DOpus/Benefy",Benefy);
  UseClicked();
  return(TRUE);
}

int LabelClicked( void )
{
	/* routine when gadget "_NoNoLabel" is clicked. */
  NoNoLabel = Project0Msg.Code;
  return(TRUE);
}

int NoCustomDragClicked( void )
{
	/* routine when gadget "_NoCustomDrag" is clicked. */
  NoCustomDrag = Project0Msg.Code;
  return(TRUE);
}

int WBTitleClicked( void )
{
	/* routine when gadget "_WorkbenchTitle" is clicked. */

  WBTitle = Project0Msg.Code;
  return(TRUE);
}

int QuickIconDragClicked( void )
{
	/* routine when gadget "_QuickIconDrag" is clicked. */
  QuickIconDrag = Project0Msg.Code;
  return(TRUE);
}

int PopUpDelayClicked( void )
{
	/* routine when gadget "_PopUpDelay" is clicked. */
  PopUpDelay = Project0Msg.Code;
  SwapPUD(PopUpDelay);
  return(TRUE);
}

int UseWBInfoClicked( void )
{
	/* routine when gadget "_UseWBInfo" is clicked. */
  UseWBInfo = Project0Msg.Code;
  return(TRUE);
}

int DTFClicked( void )
{
	/* routine when gadget "Sh_owUseDatatypesFirst" is clicked. */
  ShowUseDTFirst = Project0Msg.Code;
  return(TRUE);
}

int DLookClicked( void )
{
	/* routine when gadget "3D_Look" is clicked. */
  DLook = Project0Msg.Code;
  return(TRUE);
}

int TimePopUpDelayClicked( void )
{
	/* routine when gadget "in 1/50 secs." is clicked. */
  GT_GetGadgetAttrs(Project0Gadgets[9],Project0Wnd,NULL,
                                    GTIN_Number, &PopTime,
                                     TAG_DONE);
  return(TRUE);
}

int UseClicked( void )
{
	/* routine when gadget "Us_e" is clicked. */
  SetEnv("ENV:DOpus/3DLook",DLook);
  SetEnv("ENV:DOpus/NoNoLabel",NoNoLabel);
  SetEnv("ENV:DOpus/NoCustomDrag",NoCustomDrag);
  SetEnv("ENV:DOpus/QuickIconDrag",QuickIconDrag);
  SetEnv("ENV:DOpus/PopUpDelay",PopTime);
  SetEnv("ENV:DOpus/ShowUseDatatypesFirst",ShowUseDTFirst);
  SetEnv("ENV:DOpus/WorkbenchTitle",WBTitle);
  SetEnv("ENV:DOpus/UseWBInfo",UseWBInfo);
  SetEnv("ENV:DOpus/NoMUFS",NoMUFS);
  SetEnv("ENV:DOpus/Benefy",Benefy);
  return(TRUE);
}

int NoMUFSClicked( void )
{
	/* routine when gadget "No_MultiUser" is clicked. */
  NoMUFS = Project0Msg.Code;
  return(TRUE);
}

int BenefyClicked( void )
{
	/* routine when gadget "_Benefy" is clicked. */
  Benefy = Project0Msg.Code;
  return(TRUE);
}

int Project0About( void )
{
	/* routine when (sub)item "About..." is selected. */
  EasyReq(Project0Wnd,"About DO5extPrefs","DO5extPrefs v1.1\nCopyright (c)1997-98 by Jens Weyer.\nFREEWARE\n\nENV - Var editor for DOpus5 Magellan +.\n\nDOpus Magellan + is Copyright (c)\nJonathan Potter & GPSoftware.","Ok");
  return(TRUE);
}

int Project0Save( void )
{
	/* routine when (sub)item "Save" is selected. */
  SaveClicked();
  return(TRUE);
}

int Project0Use( void )
{
	/* routine when (sub)item "Use" is selected. */
  UseClicked();
  return(TRUE);
}

int Project0Quit( void )
{
	/* routine when (sub)item "Quit" is selected. */
  return(FALSE);
}


int Project0CloseWindow( void )
{
	/* routine for "IDCMP_CLOSEWINDOW". */
  return(Project0Quit());
}

int Project0VanillaKey( void )
{
	/* routine for "IDCMP_VANILLAKEY". */
  switch(Project0Msg.Code)
  {
    case 's':
    case 'S':
                   SaveClicked();
                   break;
    case 'e':
    case 'E':
                   UseClicked();
                   break;
    case 'n':
    case 'N':
                   NoNoLabel = SwapState(NoNoLabel,1);
                   break;
    case 'c':
    case 'C':
                   NoCustomDrag = SwapState(NoCustomDrag,2);
                   break;
    case 'w':
    case 'W':
                    WBTitle = SwapState(WBTitle,3);
                    break;
    case 'q':
    case 'Q':
                   QuickIconDrag = SwapState(QuickIconDrag,4);
                   break;
    case 'p':
    case 'P':
                   PopUpDelay = SwapState(PopUpDelay,5);
                   SwapPUD(PopUpDelay);
                   break;
    case 'u':
    case 'U':
                  UseWBInfo = SwapState(UseWBInfo,6);
                  break;
    case 'o':
    case 'O':
                   ShowUseDTFirst = SwapState(ShowUseDTFirst,7);
                   break;
    case 'l':
    case 'L':
                  DLook = SwapState(DLook,8);
                  break;
    case 'm':
    case 'M':
                  NoMUFS = SwapState(NoMUFS,11);
                  break;
    case 'b':
    case 'B':
                  Benefy = SwapState(Benefy,12);
                  break;
  }
  return(TRUE);
}

int SwapState(int State, int Gad)
{
  if (State)
  {
    GT_SetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
                                     GTCB_Checked, 0,
                                     TAG_DONE);
    State = 0;
  }
  else
  {
    GT_SetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
                                     GTCB_Checked, 1,
                                     TAG_DONE);
    State = 1;
  }
  return(State);
}

void SwapPUD(int State)
{
  if (State)
  {
    GT_SetGadgetAttrs(Project0Gadgets[5],Project0Wnd,NULL,
                                     GA_Disabled, FALSE,
                                     TAG_DONE);
    GT_SetGadgetAttrs(Project0Gadgets[9],Project0Wnd,NULL,
                                     GA_Disabled, FALSE,
                                     TAG_DONE);
  }
  else
  {
    GT_SetGadgetAttrs(Project0Gadgets[5],Project0Wnd,NULL,
                                     GA_Disabled, PopUpDelay,
                                     TAG_DONE);
    GT_SetGadgetAttrs(Project0Gadgets[9],Project0Wnd,NULL,
                                     GA_Disabled, TRUE,
                                     TAG_DONE);
  }
  return;
}

void LoadENVars(void)
{
  DLook = GetEnv("ENV:DOpus/3DLook");
  NoNoLabel = GetEnv("ENV:DOpus/NoNoLabel");
  NoCustomDrag = GetEnv("ENV:DOpus/NoCustomDrag");
  QuickIconDrag = GetEnv("ENV:DOpus/QuickIconDrag");
  PopTime = GetEnv("ENV:DOpus/PopUpDelay");
  if (PopTime && PopTime != 10)
  {
    PopUpDelay = 1;
  }
  else
  {
    PopUpDelay = 0;
  }
  ShowUseDTFirst = GetEnv("ENV:DOpus/ShowUseDatatypesFirst");
  WBTitle = GetEnv("ENV:DOpus/WorkbenchTitle");
  UseWBInfo = GetEnv("ENV:DOpus/UseWBInfo");
  NoMUFS = GetEnv("ENV:DOpus/NoMUFS");
  Benefy = GetEnv("ENV:DOpus/Benefy");
  SwapCheck(NoNoLabel,1);
  SwapCheck(NoCustomDrag,2);
  SwapCheck(WBTitle,3);
  SwapCheck(QuickIconDrag,4);
  SwapCheck(PopUpDelay,5);
  SwapCheck(UseWBInfo,6);
  SwapCheck(ShowUseDTFirst,7);
  SwapCheck(DLook,8);
  SwapCheck(NoMUFS,11);
  SwapCheck(Benefy,12);
  if (PopUpDelay)
  {
    SwapPUD(PopUpDelay);
    GT_SetGadgetAttrs(Project0Gadgets[9],Project0Wnd,NULL,
                                     GTIN_Number, PopTime,
                                     TAG_DONE);
  }
  return;
}

void SwapCheck(int State, int Gad)
{
  if (State)
  {
    GT_SetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
                                     GTCB_Checked, 1,
                                     TAG_DONE);
  }
  return;
}

int GetEnv(char *File)
{
  FILE *f;
  int Value = 0;
  f = fopen(File,"r");
  if (f)
  {
    fscanf(f,"%2ld",&Value);
    fclose(f);
  }
  return(Value);
}

void SetEnv(char *File, int Value)
{
  FILE *f;
  f = fopen(File,"w");
  if (f)
  {
    fprintf(f,"%ld\n",Value);
    fclose(f);
  }
  return;
}

