aboutsummaryrefslogtreecommitdiff
path: root/lib/gui/eskin_register.cpp
blob: a212449b08eeddf134414eb38a7adaefdda3d039 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <lib/gui/eskin_register.h>
#include <lib/gui/eskin.h>
#include <lib/gdi/gfbdc.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
#include <lib/base/econfig.h>

#define DEFAULTSKIN "stone.esml"

class eSkinInit
{
	eSkin default_skin;
public:
	eSkinInit()
	{
		if (default_skin.load( CONFIGDIR "/enigma/skins/default.esml"))
			if (default_skin.load( DATADIR "/enigma/skins/default.esml"))
				eFatal("skin load failed (" DATADIR "/enigma/skins/default.esml)");

		eString skinfile=DEFAULTSKIN;

		char *temp=0;
		if (!eConfig::getInstance()->getKey("/ezap/ui/skin", temp))
		{
			skinfile=temp;
			free(temp);
		}

		if (default_skin.load(skinfile.c_str()))
		{
			eWarning("failed to load user defined skin %s, falling back to " DEFAULTSKIN, skinfile.c_str());
			if (default_skin.load(CONFIGDIR "/enigma/skins/" DEFAULTSKIN))
				if (default_skin.load(DATADIR "/enigma/skins/" DEFAULTSKIN))
					eFatal("couldn't load fallback skin " DATADIR "/enigma/skins/" DEFAULTSKIN);
		}

		default_skin.parseSkins();

		default_skin.setPalette(gFBDC::getInstance());
		default_skin.makeActive();
	}
};

eAutoInitP0<eSkinInit> init_skin(eAutoInitNumbers::skin, "skin subsystem");