
/* MenuMgr_defs.c */

#include <stdio.h>
#include <ctype.h>
#include <X10/Xlib.h>

#define	MAKEDEFS
#include "MenuMgr.h"

/* Routines for setting display defaults */

char *	set_def_str();
int	set_def_int(), set_def_color();

int
init_defs( def_env )

	char *	def_env;
{
int	style;
DefsPtr	d;

	d = &mm_Defs;

	d->fontbase = set_def_str( def_env, "MM_Font", DEF_FONT );
	d->fontsize = set_def_int( def_env, "MM_FontSize", DEF_SIZE );

	style =  set_def_int( def_env, "MM_OnStyle", DEF_ONSTYLE );
	if( style==styleNormal || style==styleBold || style==styleItalic )
		d->onstyle = style;
	else
		d->onstyle = DEF_ONSTYLE;

	style =  set_def_int( def_env, "MM_OffStyle", DEF_OFFSTYLE );
	if( style==styleNormal || style==styleBold || style==styleItalic )
		d->offstyle = style;
	else
		d->offstyle = DEF_OFFSTYLE;
		
	d->fgcolor = set_def_color( def_env, "MM_Foreground",DEF_FGCOLOR);
	d->bgcolor = set_def_color( def_env, "MM_Background",DEF_BGCOLOR);
	d->fgpixmap = XMakeTile( d->fgcolor );
	d->bgpixmap = XMakeTile( d->bgcolor );
	d->mousefg = set_def_color( def_env, "MM_MouseFG",DEF_MOUSEFG);
	d->mousebg = set_def_color( def_env, "MM_MouseBG",DEF_MOUSEBG);

	d->intIborder = set_def_int(def_env,"MM_IntIBorder",DEF_INT_IBORDER);
	d->intNborder = set_def_int(def_env,"MM_IntNBorder",DEF_INT_NBORDER);
	d->extNborder = set_def_int(def_env,"MM_ExtNBorder",DEF_EXT_NBORDER);
	d->intMborder = set_def_int(def_env,"MM_IntMBorder",DEF_INT_MBORDER);
	d->extMborder = set_def_int(def_env,"MM_ExtMBorder",DEF_EXT_MBORDER);

	d->xoff = set_def_int(def_env,"MM_Xoff",DEF_XOFF);
	d->yoff = set_def_int(def_env,"MM_Yoff",DEF_YOFF);

	d->flashtimes = set_def_int(def_env,"MM_FlashTimes",DEF_FLASHTIMES);
	d->flashmsecs = set_def_int(def_env,"MM_FlashMsecs",DEF_FLASHMSECS);
	return 0;
}

int 
set_def_color( def_env, def_name, def_color )

	char *	def_env; 
	char *	def_name;
	int 	def_color;
{
char *	def_val;
Color 	color_def;

	def_val = XGetDefault( def_env, def_name );
	if( def_val != NULL )
	{
		if( DisplayCells() > 2 )
		{
			if( XParseColor( def_val, &color_def )
			  && XGetHardwareColor( &color_def ) )
				def_color = color_def.pixel;
		}
		else if (strcmp (def_val, "black") == 0) 
			def_color = BlackPixel;
		else if (strcmp (def_val, "white") == 0) 
			def_color = WhitePixel;
	}

	return def_color;
}

int 
set_def_int( def_env, def_name, def_int )

	char *	def_env;
	char * 	def_name;
	int 	def_int;
{
char *	def_val;

	def_val = XGetDefault( def_env, def_name );
	if( def_val != NULL )
		def_int = atoi( def_val );

	return def_int;
}

char *
set_def_str( def_env, def_name, def_str )

	char *	def_env;
	char * 	def_name;
	char * 	def_str;
{
char *	def_val;

	def_val = XGetDefault( def_env, def_name );
	if( def_val != NULL )
		def_str = def_val;

	return def_str;
}

	
