157 lines
4.1 KiB
Python
157 lines
4.1 KiB
Python
import os
|
|
|
|
from appdirs import user_data_dir
|
|
from configobj import ConfigObj, flatten_errors, Section
|
|
from validate import Validator
|
|
|
|
# from utils import get_pygame_keydict, get_keys
|
|
|
|
CFGSPEC = """ResolutionX = integer(default=1024)
|
|
ResolutionY = integer(default=768)
|
|
FullScreen = boolean(default=False)
|
|
Font = string(default='microsoftsansserif')
|
|
FontSize = integer(default=13)
|
|
QuitKeyPresses = integer(min=1,default=3)
|
|
ScanLines = boolean(default=True)
|
|
Key_Up = list(default=list('K_UP'))
|
|
Key_Down = list(default=list('K_DOWN'))
|
|
Key_PgUp = list(default=list('K_LEFT','K_PAGEUP'))
|
|
Key_PgDn = list(default=list('K_RIGHT','K_PAGEDOWN'))
|
|
Key_Home = list(default=list('K_HOME'))
|
|
Key_End = list(default=list('K_END'))
|
|
Key_Select = list(default=list('K_RETURN','K_1'))
|
|
Key_GameInfo = list(default=list('K_5'))
|
|
Key_GameHistoryxP = list(default=list('K_6'))
|
|
Key_Popup = list(default=list('K_2'))
|
|
Key_ShowArtwork = list(default=list())
|
|
AlwaysChangeSnap = boolean(default=True)
|
|
Emulator = string()
|
|
FPS = integer(default=60)
|
|
[__many__]
|
|
EXE = string()
|
|
Version = string(default=None)
|
|
ShowClones = boolean(default=True)
|
|
Category = string(default='All Games')
|
|
GameAtTop = integer(min=0,default=0)
|
|
CurrentGame = integer(min=0,default=0)
|
|
EmulatorType = option('MAME','MESS','CSV',default='MAME')
|
|
StatusFilter = list(default=list())
|
|
Sort = option('Name Asc','Name Dec','Year Asc','Year Dec',default='Name Asc')
|
|
SnapDir = string(default=None)
|
|
CSVFile = string(default=None)
|
|
ArtworkDirs = list(default=list())
|
|
ShowVideoSnaps = boolean(default=True)
|
|
HideMature = boolean(default=True)
|
|
"""
|
|
|
|
appname = "MFE6"
|
|
appauthor = "RMJ"
|
|
|
|
debug = True
|
|
|
|
datadir = user_data_dir(appname, appauthor)
|
|
|
|
if debug:
|
|
datadir = os.getcwd()
|
|
|
|
if not os.path.isdir(datadir):
|
|
os.makedirs(datadir)
|
|
|
|
spec = CFGSPEC.split("\n")
|
|
cfg = ConfigObj(os.path.join(datadir, "mfe.ini"), configspec=spec, encoding="UTF8")
|
|
cfg.write()
|
|
|
|
validator = Validator()
|
|
result = cfg.validate(validator, copy=True, preserve_errors=True)
|
|
|
|
errored = False
|
|
|
|
for entry in flatten_errors(cfg, result):
|
|
section_list, key, error = entry
|
|
if key is not None:
|
|
section_list.append(key)
|
|
else:
|
|
section_list.append("[missing section]")
|
|
section_string = ", ".join(section_list)
|
|
if error is False:
|
|
error = "Missing value or section."
|
|
print(section_string, " = ", error)
|
|
errored = True
|
|
|
|
if errored:
|
|
print("Error in INI file")
|
|
exit()
|
|
|
|
cfg.write()
|
|
|
|
cfg["datadir"] = datadir
|
|
|
|
if not os.path.isfile(os.path.join(datadir, "mame_exclude.txt")):
|
|
from exclude import MAME_EXCLUDE
|
|
|
|
with open(os.path.join(datadir, "mame_exclude.txt"), "wt") as f:
|
|
f.write(MAME_EXCLUDE)
|
|
|
|
# import gfx_pygame
|
|
|
|
# keys = gfx_pygame.get_keydict()
|
|
# get_keys = gfx_pygame.get_keys
|
|
|
|
# cfg["KeyUp"] = get_keys(keys, cfg["Key_Up"])
|
|
# cfg["KeyDown"] = get_keys(keys, cfg["Key_Down"])
|
|
# cfg["KeyPgUp"] = get_keys(keys, cfg["Key_PgUp"])
|
|
# cfg["KeyPgDn"] = get_keys(keys, cfg["Key_PgDn"])
|
|
# cfg["KeyHome"] = get_keys(keys, cfg["Key_Home"])
|
|
# cfg["KeyEnd"] = get_keys(keys, cfg["Key_End"])
|
|
# cfg["KeySelect"] = get_keys(keys, cfg["Key_Select"])
|
|
# cfg["KeyGameInfo"] = get_keys(keys, cfg["Key_GameInfo"])
|
|
# cfg["KeyGameHistory"] = get_keys(keys, cfg["Key_GameHistory"])
|
|
# cfg["KeyPopup"] = get_keys(keys, cfg["Key_Popup"])
|
|
# cfg["KeyShowArtwork"] = get_keys(keys, cfg["Key_ShowArtwork"])
|
|
|
|
|
|
def config_write():
|
|
Exclude = [
|
|
"KeyUp",
|
|
"KeyDown",
|
|
"KeyPgUp",
|
|
"KeyPgDn",
|
|
"KeySelect",
|
|
"KeyGameInfo",
|
|
"KeyGameHistory",
|
|
"KeyPopup",
|
|
"KeyHome",
|
|
"KeyEnd",
|
|
"KeyShowArtwork",
|
|
"datadir",
|
|
]
|
|
|
|
t = {}
|
|
for item in Exclude:
|
|
t[item] = cfg[item]
|
|
del cfg[item]
|
|
|
|
cfg.write()
|
|
|
|
for item in t:
|
|
cfg[item] = t[item]
|
|
|
|
|
|
# def get_emu(option=None):
|
|
# if option:
|
|
# r = cfg[cfg['Emulator']][option]
|
|
# else:
|
|
# r = cfg[cfg['Emulator']]
|
|
# return r
|
|
|
|
# def set_emu(option, data):
|
|
# cfg[cfg['Emulator']][option] = data
|
|
|
|
|
|
def get_emulators():
|
|
r = []
|
|
for k in cfg.keys():
|
|
if isinstance(cfg[k], Section):
|
|
r.append(k)
|
|
return r
|