127 lines
4.6 KiB
Python
127 lines
4.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import tkinter as tk
|
|
import requests
|
|
import tkinter.ttk as ttk
|
|
|
|
# Useful gubbins
|
|
border_effects = {
|
|
"flat": tk.FLAT,
|
|
"sunken": tk.SUNKEN,
|
|
"raised": tk.RAISED,
|
|
"groove": tk.GROOVE,
|
|
"ridge": tk.RIDGE,
|
|
}
|
|
|
|
REPO_URL = "http://10.6.9.5"
|
|
|
|
def handle_keypress(event):
|
|
print(event.char)
|
|
|
|
|
|
def handle_click(event):
|
|
print("The button has been clicked", event)
|
|
|
|
def handle_game_click(event, rom_data, dest_frame):
|
|
# clean up old info
|
|
for widget in dest_frame.winfo_children():
|
|
widget.destroy()
|
|
#sys_label = tk.Label(text=rom_data['name'], master=dest_frame, font=('Times', 24))
|
|
sys_label = ttk.Label(text=rom_data['name'], master=dest_frame, font=('Times', 24))
|
|
sys_label.pack(anchor="w", pady=11, padx=11)
|
|
|
|
#lbl_info = tk.Label(text="Info:", master=dest_frame, font=('Times', 15))
|
|
lbl_info = ttk.Label(text="Info:", master=dest_frame, font=('Times', 15))
|
|
lbl_info.pack(anchor="w", padx=11)
|
|
|
|
#lbl_uri = tk.Label(text=f"URI: {rom_data['uri']}", master=dest_frame)
|
|
lbl_uri = ttk.Label(text=f"URI: {rom_data['uri']}", master=dest_frame)
|
|
lbl_uri.pack(anchor="w", padx=11)
|
|
|
|
#lbl_base = tk.Label(text=f"BASE ROM: {rom_data['contents']['base']['name']}", master=dest_frame)
|
|
lbl_base = ttk.Label(text=f"BASE ROM: {rom_data['contents']['base']['name']}", master=dest_frame)
|
|
lbl_base.pack(anchor="w", padx=11)
|
|
|
|
#lbl_size = tk.Label(text=f"SIZE: {rom_data['contents']['base']['size']}", master=dest_frame)
|
|
lbl_size = ttk.Label(text=f"SIZE: {rom_data['contents']['base']['size']}", master=dest_frame)
|
|
lbl_size.pack(anchor="w", padx=11)
|
|
|
|
#lbl_updates = tk.Label(text="Updates:", master=dest_frame, font=('Times', 15))
|
|
lbl_updates = ttk.Label(text="Updates:", master=dest_frame, font=('Times', 15))
|
|
lbl_updates.pack(anchor="w", padx=11)
|
|
|
|
# Render updates
|
|
for update in enumerate(rom_data['contents']['updates']):
|
|
#lbl_update = tk.Label(text=f"{update[0]} - {update[1]['name']}", master=dest_frame)
|
|
lbl_update = ttk.Label(text=f"{update[0]} - {update[1]['name']}", master=dest_frame)
|
|
lbl_update.pack(anchor="w", padx=11)
|
|
|
|
#lbl_dlcs = tk.Label(text="DLC:", master=dest_frame, font=('Times', 15))
|
|
lbl_dlcs = ttk.Label(text="DLC:", master=dest_frame, font=('Times', 15))
|
|
lbl_dlcs.pack(anchor="w", padx=11)
|
|
|
|
# Render DLC
|
|
for dlc in enumerate(rom_data['contents']['dlc']):
|
|
#lbl_dlc = tk.Label(text=f"{dlc[0]} - {dlc[1]['name']}", master=dest_frame)
|
|
lbl_dlc = ttk.Label(text=f"{dlc[0]} - {dlc[1]['name']}", master=dest_frame)
|
|
lbl_dlc.pack(anchor="w", padx=11)
|
|
|
|
def handle_menu_click(event, rom_cat, dest_frame):
|
|
|
|
# clean up old info
|
|
for widget in dest_frame.winfo_children():
|
|
widget.destroy()
|
|
|
|
#sys_label = tk.Label(text=repo_data['roms'][rom_cat]['name'], master=dest_frame, font=('Times', 24))
|
|
sys_label = ttk.Label(text=repo_data['roms'][rom_cat]['name'], master=dest_frame, font=('Times', 24))
|
|
sys_label.pack(anchor="w", pady=11, padx=11)
|
|
|
|
|
|
# Get info from uri
|
|
new_data = requests.get(f"{REPO_URL}/{repo_data['roms'][rom_cat]['uri']}/repodata.json").json()
|
|
# print(new_data)
|
|
for data in new_data['roms']:
|
|
def _handle_click(event, rom_data=data):
|
|
return handle_game_click(event, rom_data, info_frame)
|
|
#btn_rom = tk.Button(text=data['name'], master=dest_frame)
|
|
btn_rom = ttk.Button(text=data['name'], master=dest_frame)
|
|
btn_rom.bind("<Button-1>", _handle_click)
|
|
btn_rom.pack(anchor="w", padx=11)
|
|
|
|
|
|
# Get repo data from repo
|
|
repo_data = requests.get(f"{REPO_URL}/repodata.json").json()
|
|
|
|
print(repo_data['roms'])
|
|
|
|
# Define tkinter window object
|
|
window = tk.Tk()
|
|
window.minsize(1600, 900)
|
|
window.bind("<Key>", handle_keypress)
|
|
|
|
#list_frame = tk.Frame()
|
|
list_frame = ttk.Frame()
|
|
list_frame.pack(side=tk.LEFT, padx=10, pady=2, anchor="n")
|
|
|
|
#lbl_list = tk.Label(text="Systems", master=list_frame)
|
|
lbl_list = ttk.Label(text="Systems", master=list_frame)
|
|
lbl_list.pack()
|
|
|
|
#info_frame = tk.Frame( relief=border_effects["sunken"])
|
|
info_frame = ttk.Frame( relief=border_effects["sunken"])
|
|
info_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, pady=5, padx=5)
|
|
|
|
# dict of sets of buttons
|
|
buttons = {}
|
|
for rom_cat in repo_data['roms']:
|
|
def handle_click_data(event, rom_cat=rom_cat):
|
|
return handle_menu_click(event, rom_cat=rom_cat, dest_frame=info_frame)
|
|
|
|
#buttons[rom_cat] = tk.Button(text=rom_cat, master=list_frame, width=15)
|
|
buttons[rom_cat] = ttk.Button(text=rom_cat, master=list_frame, width=15)
|
|
buttons[rom_cat].pack(padx=10)
|
|
buttons[rom_cat].bind("<Button-1>", handle_click_data)
|
|
|
|
|
|
window.mainloop()
|