diff options
| author | Fuwn <[email protected]> | 2021-02-10 13:56:02 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2021-02-10 13:56:02 -0800 |
| commit | 22692dafdd2e32f83e5c7ae6455e0f724d72418f (patch) | |
| tree | c27f04a08120b43be3060102f2df670c0a2ce58a /worldsy.py | |
| parent | :star: (diff) | |
| download | worldsy-22692dafdd2e32f83e5c7ae6455e0f724d72418f.tar.xz worldsy-22692dafdd2e32f83e5c7ae6455e0f724d72418f.zip | |
chore, annotate, refactor, feature: desc
chore:
- remove unnecessary import.
annotate:
- annotate `B64_ICO` under globals.
- qol annotations for co-routines.
refactor:
- move main rpc instance into RPCHandler class.
- formatting.
feature:
- intercept exit event and properly dispose of rpc socket.
- extra debug logs!
- welcome message.
Diffstat (limited to 'worldsy.py')
| -rw-r--r-- | worldsy.py | 40 |
1 files changed, 32 insertions, 8 deletions
@@ -5,21 +5,22 @@ import tkinter from tkinter.constants import DISABLED, NORMAL import pypresence import webbrowser -from itertools import cycle import requests import json import os +### GLOBALS ### B64_ICO = 'AAABAAEAICD/AAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2b/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAEBAQEBAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM////+B////wH////Af///8B////wP////A////8H////gf///8D////wP///+B////wP///+B////wP///+B////wP///+B////wP///+B////gf///8A////AD///wIP//8DA///A8D//gfwH/gH/AAAD/8AAB//4AA///wA/' # b ### Setup pypresence ### -RPC: pypresence.Presence = pypresence.Presence("808882523647508481") + ### Classes ### class Worldsy(tkinter.Tk): VERSION: str = "1.0.0" def __init__(self, master=None) -> None: + # Initialize Tkinter tkinter.Tk.__init__(self, master) # https://stackoverflow.com/questions/9929479/embed-icon-in-python-script @@ -30,18 +31,25 @@ class Worldsy(tkinter.Tk): icon_file.write(icon_data) icon_file.close() + # Initialize window self.title("worldsy") self.iconbitmap(temp_file) os.remove(temp_file) self.geometry("400x250") self.resizable(0, 0) #self.wm_state("iconic") + self.protocol("WM_DELETE_WINDOW", utilities.intercept_exit) + + # Initialize primitive GUI + self.lb = tkinter.Label(self, text="") + self.lb.pack() - self.lb = tkinter.Label(self, text="").pack() - self.txt = tkinter.StringVar() self.debug_console = tkinter.Text(self, state=DISABLED, width=45, height=5) self.debug_console.pack() + self.debug_log("Welcome to worldsy!") + + # Run check-for-update routine self.check_for_update() def debug_log(self, message: str) -> None: @@ -62,15 +70,28 @@ class Worldsy(tkinter.Tk): if int(latest_release.replace('.', '')) > int(Worldsy.VERSION.replace('.', '')): self.debug_log("New version available! Current: " + self.VERSION + ", new: " + latest_release + ". To update, click on the GitHub link below" + - " and download the newest release.") + " and download the newest release!") class Utilities(object): def open_url(self, url: str) -> None: webbrowser.open_new(url) + + def intercept_exit(self) -> None: + worldsy.debug_log("Starting shutdown sequence.") + + # Shut down RPC if enabled. + if rpcHandler.enabled: + rpcHandler.rpc.close() + worldsy.debug_log("Closed websocket.") + + worldsy.debug_log("Destroying worldsy.") + worldsy.debug_log("Exiting...") + worldsy.destroy() class RPCHandler(object): enabled: bool = False + rpc: pypresence.Presence = pypresence.Presence("808882523647508481") def toggle(self) -> None: self.enabled = not self.enabled @@ -78,9 +99,11 @@ class RPCHandler(object): if self.enabled: worldsy.debug_log("Enabled RPC.") - RPC.connect() + + self.rpc.connect() worldsy.debug_log("Connected to websocket.") - RPC.update( + + self.rpc.update( details="Exploring GroundZero", large_image="worldsy512x512", large_text="Worlds", @@ -90,7 +113,8 @@ class RPCHandler(object): worldsy.debug_log("Updated RPC.") elif not self.enabled: worldsy.debug_log("Disabled RPC.") - RPC.close() + + self.rpc.close() worldsy.debug_log("Closed websocket.") ### Initialize Classes ### |