all repos — m12-patcher @ 95fbc6f39894be2461591d9423a3260fbec726b2

Gui.py (view raw)

 1#!/usr/bin/python3
 2import tkinter as tk
 3from tkinter.filedialog import askopenfilename
 4import pathlib
 5import pygubu
 6import Constants
 7from Functions import check_rom, show_warning
 8
 9PROJECT_PATH = pathlib.Path(__file__).parent
10PROJECT_UI = PROJECT_PATH / "patcher.ui"
11
12class PatcherApp:
13    def __init__(self, master=None, baserom=None):
14        self.builder = builder = pygubu.Builder()
15        builder.add_resource_path(PROJECT_PATH)
16        builder.add_from_file(PROJECT_UI)
17        # Main widget
18        self.mainwindow = builder.get_object("main_frame", master)
19
20        self.browse_path = None
21        self.preset = None
22        self.font = None
23        self.places = None
24        self.sprites = None
25        self.palette = None
26        self.skip_m1 = None
27        self.progress = None
28        self.progress_text = None
29        builder.import_variables(
30            self,
31            [
32                "browse_path",
33                "preset",
34                "font",
35                "places",
36                "sprites",
37                "palette",
38                "skip_m1",
39                "progress",
40                "progress_text",
41            ],
42        )
43        self.font.set(1)
44        self.sprites.set(3)
45        self.places.set(6)
46        self.palette.set(8)
47        self.skip_m1.set(1)
48        self.progress_text.set(Constants.STATUS_START)
49        
50        self.apply_button = builder.get_object("apply_button")
51        
52        if baserom is not None:
53            self.browse_path.set(baserom)
54        
55        builder.connect_callbacks(self)
56    
57    def set_progress(self, percent, message):
58        self.progress.set(percent)
59        self.progress_text.set(message)
60
61    
62    
63    def run(self):
64        self.mainwindow.mainloop()
65
66    def on_browse_button(self):
67        fn = askopenfilename(filetypes=[(Constants.VAR_FILEPICKER, '*.gba')])
68        self.browse_path.set(fn)
69
70    def on_change_preset(self, option):
71        new_vars = Constants.PRESETS[option]
72        
73        for key in new_vars.keys():
74            getattr(self, key).set(new_vars[key])
75
76    def on_apply_button(self):
77        self.apply_button['state'] = 'disabled'
78        
79        if check_rom(self.browse_path.get()):
80            self.set_progress(20, Constants.STATUS_MD5)
81        else:
82            show_warning(Constants.WARNING_MD5_MISMATCH)
83            self.apply_button['state'] = 'normal'