diff --git a/boiiiwd_package/src/helpers.py b/boiiiwd_package/src/helpers.py index ce4670e..faa2cb7 100644 --- a/boiiiwd_package/src/helpers.py +++ b/boiiiwd_package/src/helpers.py @@ -393,4 +393,25 @@ def check_item_date(down_date, date_updated): except: return False +def get_window_size_from_registry(): + try: + with winreg.OpenKey(winreg.HKEY_CURRENT_USER, REGISTRY_KEY_PATH, 0, winreg.KEY_READ) as key: + width, _ = winreg.QueryValueEx(key, "WindowWidth") + height, _ = winreg.QueryValueEx(key, "WindowHeight") + x, _ = winreg.QueryValueEx(key, "WindowX") + y, _ = winreg.QueryValueEx(key, "WindowY") + return int(width), int(height), int(x), int(y) + except (FileNotFoundError, OSError, ValueError, FileNotFoundError): + return None, None, None, None + +def save_window_size_to_registry(width, height, x, y): + try: + with winreg.CreateKey(winreg.HKEY_CURRENT_USER, REGISTRY_KEY_PATH) as key: + winreg.SetValueEx(key, "WindowWidth", 0, winreg.REG_SZ, str(width)) + winreg.SetValueEx(key, "WindowHeight", 0, winreg.REG_SZ, str(height)) + winreg.SetValueEx(key, "WindowX", 0, winreg.REG_SZ, str(x)) + winreg.SetValueEx(key, "WindowY", 0, winreg.REG_SZ, str(y)) + except Exception as e: + print(f"Error saving to registry: {e}") + # End helper functions diff --git a/boiiiwd_package/src/imports.py b/boiiiwd_package/src/imports.py index 02bb496..d015597 100644 --- a/boiiiwd_package/src/imports.py +++ b/boiiiwd_package/src/imports.py @@ -18,6 +18,7 @@ from tkinter import END, Event, Menu import customtkinter as ctk import psutil import requests +import winreg from bs4 import BeautifulSoup from CTkMessagebox import CTkMessagebox from PIL import Image @@ -41,4 +42,5 @@ LATEST_RELEASE_URL = "https://github.com/faroukbmiled/BOIIIWD/releases/latest/do LIBRARY_FILE = "boiiiwd_library.json" RESOURCES_DIR = os.path.join(os.path.dirname(__file__), '..', 'resources') UPDATER_FOLDER = "update" +REGISTRY_KEY_PATH = r"Software\BOIIIWD" VERSION = "v0.3.1" \ No newline at end of file diff --git a/boiiiwd_package/src/main.py b/boiiiwd_package/src/main.py index d43c1ab..65ffbf3 100644 --- a/boiiiwd_package/src/main.py +++ b/boiiiwd_package/src/main.py @@ -1,4 +1,3 @@ -from turtle import title from src.update_window import check_for_updates_func from src.helpers import * @@ -9,20 +8,21 @@ from src.settings_tab import SettingsTab class BOIIIWD(ctk.CTk): def __init__(self): super().__init__() - # self.app_instance = BOIIIWD() # configure window self.title("BOIII Workshop Downloader - Main") + window_info = get_window_size_from_registry() try: - geometry_file = os.path.join(application_path, "boiiiwd_dont_touch.conf") - if os.path.isfile(geometry_file): - with open(geometry_file, "r") as conf: - self.geometry(conf.read()) + if all(window_info): + width, height, x, y = window_info + self.geometry(f"{width}x{height}+{x}+{y}") else: - self.geometry(f"{910}x{560}") + self.geometry(f"{920}x{560}") except: - self.geometry(f"{910}x{560}") + self.geometry(f"{920}x{560}") + + self.minsize(920, 560) if os.path.exists(os.path.join(RESOURCES_DIR, "ryuk.ico")): self.wm_iconbitmap(os.path.join(RESOURCES_DIR, "ryuk.ico")) @@ -194,7 +194,7 @@ class BOIIIWD(ctk.CTk): self.sidebar_settings_tooltip = CTkToolTip(self.sidebar_settings, message="Settings") self.sidebar_library_tooltip = CTkToolTip(self.sidebar_library, message="Experimental") self.sidebar_queue_tooltip = CTkToolTip(self.sidebar_queue, message="Experimental") - self.bind("", self.save_window_size) + self.bind("", lambda e: self.save_window_size_position()) # context_menus self.create_context_menu(self.edit_workshop_id) @@ -321,9 +321,14 @@ class BOIIIWD(ctk.CTk): if library: self.library_tab.filter_items(self.cevent) - def save_window_size(self, event): - with open("boiiiwd_dont_touch.conf", "w") as conf: - conf.write(self.geometry()) + def save_window_size_position(self): + geometry = self.geometry() + match = re.match(r"(\d+)x(\d+)\+(\d+)\+(\d+)", geometry) + if match: + width, height, x, y = map(int, match.groups()) + save_window_size_to_registry(width, height, x, y) + else: + print("Invalid geometry format:", geometry) def on_closing(self): save_config("DestinationFolder" ,self.edit_destination_folder.get()) @@ -969,7 +974,7 @@ class BOIIIWD(ctk.CTk): if not self.is_pressed: self.after(1, self.label_speed.configure(text=f"Loading...")) self.is_pressed = True - self.library_tab.load_items(self.edit_destination_folder.get()) + self.library_tab.load_items(self.edit_destination_folder.get(), dont_add=True) if self.queue_enabled: self.item_skipped = False start_down_thread = threading.Thread(target=self.queue_download_thread, args=(update,))