/* PowerWindows: Prefs.c */

#include <exec/memory.h>
#include <exec/interrupts.h>
#include <dos/dos.h>
#include <graphics/gfx.h>
#include <intuition/intuition.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <utility/utility.h>

#include <pragma/exec_lib.h>
#include <pragma/dos_lib.h>
#include <pragma/utility_lib.h>
#include <pragma/intuition_lib.h>
#include <pragma/graphics_lib.h>
#include <pragma/timer_lib.h>
#include <clib/alib_protos.h>

#pragma header

#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "config.h"
#include "PowerWindows.h"
#include "PWDevelopper.h"


static void LoadScanner(void)
{
	struct Ext_Header *ext;

	LONG err;
	
	PrefsScanner_Seg=NewLoadSeg("PowerWindows.prefsscanner",0);

	if (!PrefsScanner_Seg)
	{
		err=IoErr();
		Fault(err,"Prefs-Scanner?\n\nDOS-Error",s,255);
		Hinweis(s);
	} else {
		ext=(struct Ext_Header *)BADDR(PrefsScanner_Seg);
		if (ext->Recognition != EXT_PREFSSCANNER)
		{
			sprintf(s2,"Illegal Prefs-Scanner (\"%s\")!?",s);
			Hinweis(s2);
			UnLoadSeg(PrefsScanner_Seg);PrefsScanner_Seg=0;

		} else {
			PrefsScanner=(void *)(struct ConfigMsg *)ext->Routine;
		}
	}
}

void ScanPreferences(WORD numpatches)
{
	struct ConfigMsg cm =
	{
		(struct Library *)DOSBase,
		IntuitionBase,
		(struct Library *)DiskfontBase,
		&MyConfig,
		ExtConfigFile,
		OS_Version,
		numpatches
	};

	LoadScanner();

	if (PrefsScanner_Seg)
	{
		MyConfig.NoIcons=!Icons;
		
		(*PrefsScanner)(&cm);

		MustLockLayer=(MyConfig.MarkerTyp!=MARKER_NONE);
		Icons= !MyConfig.NoIcons;
		ExtIconRenderer=MyConfig.IconRenderer!=0;
		IO_Int.is_Node.ln_Pri=MyConfig.InputPri;
		
		UnLoadSeg(PrefsScanner_Seg);PrefsScanner_Seg=0;
	}
}


