243 lines
5.1 KiB
Python
Executable File
243 lines
5.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
global cpt
|
|
global EmuMod
|
|
|
|
FirstRun = 1
|
|
cpt = 0
|
|
import configparser
|
|
from collections import Counter
|
|
from tkinter import *
|
|
from tkinter import ttk
|
|
from PIL import Image, ImageTk
|
|
import PIL.Image
|
|
import PIL.ImageTk
|
|
import sys
|
|
from modules.arrow import *
|
|
from modules.emulateur_display import *
|
|
import time
|
|
import os
|
|
#sys.path.append( './modules/')
|
|
#from arrow import *
|
|
|
|
|
|
#EmuMod :
|
|
# 0 : Emu select
|
|
# 1 : Rom select
|
|
|
|
EmuMod = 0
|
|
|
|
|
|
#def EmuMod():
|
|
|
|
def BackgroundRom(Emu):
|
|
BgFile = "./data/emu/media/" + str(Emu) +"_bg.png"
|
|
BgFile = IsImgExist(BgFile,"bg")
|
|
BgEmu = PhotoImage(file = BgFile)
|
|
LabelBgEmu = Label(arkadeus,image=BgEmu)
|
|
LabelBgEmu.BgEmu = BgEmu
|
|
Cnv.create_image( 0, 0, image = BgEmu, anchor = "nw")
|
|
|
|
|
|
def IsImgExist(AbsPathFile,TypeMedia):
|
|
if not os.path.exists(AbsPathFile):
|
|
match TypeMedia:
|
|
case "emu":
|
|
return "./media/noemu.png"
|
|
case "bg":
|
|
return "./media/nobg.png"
|
|
else:
|
|
return AbsPathFile
|
|
|
|
|
|
|
|
|
|
def BackgroundEmu():
|
|
|
|
BackgroundEmu = Media["background"]
|
|
BgEmu = PhotoImage(file = Background)
|
|
LabelBgEmu = Label(arkadeus,image=BgEmu)
|
|
LabelBgEmu.BgEmu = BgEmu
|
|
Cnv.create_image( 0, 0, image = BgEmu, anchor = "nw")
|
|
|
|
def EnterEmu(GetEmuMod):
|
|
global EmuMod
|
|
global cpt
|
|
EmuMod=1
|
|
runMcpt = cpt + 1
|
|
if runMcpt > EmuCpt:
|
|
runMcpt = 0
|
|
print("Emu : " + str(res[runMcpt]))
|
|
#Cnv.delete("all")
|
|
BackgroundRom(str(res[runMcpt]))
|
|
|
|
#def ParseEmu():
|
|
|
|
|
|
def ViewEmu(cL,xL,yL,cM,xM,yM,cR,xR,yR):
|
|
NfL="./data/emu/media/" + res[cL] + ".png"
|
|
NfL = IsImgExist(NfL,"emu")
|
|
NfM="./data/emu/media/" + res[cM] + ".png"
|
|
NfM = IsImgExist(NfM,"emu")
|
|
NfR="./data/emu/media/" + res[cR] + ".png"
|
|
NfR = IsImgExist(NfR,"emu")
|
|
|
|
PNfL = PhotoImage(file = NfL)
|
|
LabelPNfL = Label(arkadeus, image=PNfL)
|
|
LabelPNfL.PNfL = PNfL
|
|
|
|
PNfM = PhotoImage(file = NfM)
|
|
LabelPNfM = Label(arkadeus, image=PNfM)
|
|
LabelPNfM.PNfM = PNfM
|
|
|
|
PNfR = PhotoImage(file = NfR)
|
|
LabelPNfR = Label(arkadeus, image=PNfR)
|
|
LabelPNfR.PNfR = PNfR
|
|
|
|
Cnv.pack(fill = "both", expand = True)
|
|
for IdCanvas in Cnv.find_all():
|
|
if IdCanvas != 1:
|
|
Cnv.delete(IdCanvas)
|
|
|
|
Cnv.create_image(xL, yL, image=PNfL)
|
|
Cnv.create_image(xM, yM, image=PNfM)
|
|
Cnv.create_image(xR, yR, image=PNfR)
|
|
print("Curent Emu : " + str(res[cM]))
|
|
|
|
def leftKey(GetEmuMod):
|
|
global cpt
|
|
cpt = cpt - 1
|
|
if cpt < 0:
|
|
cpt = EmuCpt
|
|
Lcpt = cpt
|
|
Mcpt = cpt + 1
|
|
Rcpt = cpt + 2
|
|
if Mcpt > EmuCpt:
|
|
Mcpt = 0
|
|
Rcpt = 1
|
|
if Rcpt > EmuCpt:
|
|
Rcpt = 0
|
|
if GetEmuMod == 0:
|
|
print("DEBUG : " + str(EmuMod) + " Emu : " + str(cpt))
|
|
ViewEmu(Lcpt,LeftSquareX, LeftSquareY,Mcpt,MiddleSquareX, MiddleSquareY,Rcpt,RightSquareX, RightSquareY)
|
|
|
|
def rightKey(GetEmuMod):
|
|
global cpt
|
|
cpt = cpt + 1
|
|
if cpt > EmuCpt:
|
|
cpt = 0
|
|
Lcpt = cpt
|
|
Mcpt = cpt + 1
|
|
Rcpt = cpt + 2
|
|
if Mcpt > EmuCpt:
|
|
Mcpt = 0
|
|
Rcpt = 1
|
|
if Rcpt > EmuCpt:
|
|
Rcpt = 0
|
|
|
|
|
|
if GetEmuMod == 0:
|
|
print("DEBUG : " + str(EmuMod) + " Emu : " + str(cpt))
|
|
ViewEmu(Lcpt,LeftSquareX, LeftSquareY,Mcpt,MiddleSquareX, MiddleSquareY,Rcpt,RightSquareX, RightSquareY)
|
|
|
|
def Escape(GetEmuMod):
|
|
if GetEmuMod == 0:
|
|
print("Ciao !!")
|
|
arkadeus.quit()
|
|
if GetEmuMod == 1:
|
|
#Cnv.delete("all")
|
|
global EmuMod
|
|
global cpt
|
|
cpt = 0
|
|
EmuMod = 0
|
|
|
|
BackgroundEmu()
|
|
ViewEmu(cpt,LeftSquareX, LeftSquareY,cpt+1,MiddleSquareX, MiddleSquareY,cpt+2,RightSquareX, RightSquareY)
|
|
|
|
|
|
|
|
|
|
arkadeus= Tk()
|
|
|
|
global res
|
|
res = []
|
|
|
|
dir_path = r'./data/emu/bin/'
|
|
|
|
# Iterate directory
|
|
for path in os.listdir(dir_path):
|
|
if os.path.isfile(os.path.join(dir_path, path)):
|
|
FileName=os.path.splitext(path)[0]
|
|
res.append(FileName)
|
|
print("DEBUG : " + FileName)
|
|
|
|
cnt = Counter(res)
|
|
global EmuCpt
|
|
EmuCpt=len(cnt) - 1
|
|
print(" Nmbre emulateur : " + str(EmuCpt))
|
|
|
|
|
|
config_obj = configparser.ConfigParser()
|
|
config_obj.read("./conf/config.ini")
|
|
Media = config_obj["Media"]
|
|
ForceRes = Media["force_resolution"]
|
|
Background = Media["background"]
|
|
Square = int(Media["square_size"])
|
|
|
|
config_rom = configparser.ConfigParser()
|
|
config_rom.read("./conf/games.ini")
|
|
|
|
Emulateur = config_rom["emulateurs"]
|
|
|
|
print(Emulateur["EmulateurList"])
|
|
IdEmu(Emulateur["EmulateurList"])
|
|
|
|
|
|
arkadeus.attributes('-fullscreen', True)
|
|
arkadeus.title("Arkadeus")
|
|
|
|
|
|
|
|
if ForceRes == "y":
|
|
Xsize = int(Media["x_resolution"])
|
|
Ysize = int(Media["y_resolution"])
|
|
else:
|
|
Xsize = arkadeus.winfo_screenwidth()
|
|
Ysize = arkadeus.winfo_screenheight()
|
|
|
|
|
|
print("res : " + str(Xsize) + ":" + str(Ysize) )
|
|
|
|
|
|
|
|
MiddleSquareX=(Xsize/2)
|
|
MiddleSquareY=(Ysize/2)
|
|
MiddleSquareX2=MiddleSquareX + Square
|
|
MiddleSquareY2=MiddleSquareY + Square
|
|
|
|
LeftSquareX=(Xsize/3)
|
|
LeftSquareY=(Ysize/3)
|
|
|
|
LeftSquareX2=LeftSquareX + Square
|
|
LeftSquareY2=LeftSquareY + Square
|
|
|
|
RightSquareX=(Xsize*2/3)
|
|
RightSquareY=(Ysize/3)
|
|
|
|
RightSquareX2=RightSquareX + Square
|
|
RightSquareY2=RightSquareY + Square
|
|
|
|
Cnv = Canvas( arkadeus, width = Ysize , height = Xsize)
|
|
Cnv.pack(fill = "both", expand = True)
|
|
|
|
BackgroundEmu()
|
|
ViewEmu(cpt,LeftSquareX, LeftSquareY,cpt+1,MiddleSquareX, MiddleSquareY,cpt+2,RightSquareX, RightSquareY)
|
|
|
|
|
|
arkadeus.bind("<Left>", lambda event: leftKey(EmuMod))
|
|
arkadeus.bind("<Right>", lambda event: rightKey(EmuMod))
|
|
arkadeus.bind("<Return>", lambda event: EnterEmu(EmuMod))
|
|
arkadeus.bind('<Escape>',lambda event : Escape(EmuMod))
|
|
|
|
arkadeus.mainloop()
|