aboutsummaryrefslogtreecommitdiff
path: root/worldsy.py
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-02-10 13:56:02 -0800
committerFuwn <[email protected]>2021-02-10 13:56:02 -0800
commit22692dafdd2e32f83e5c7ae6455e0f724d72418f (patch)
treec27f04a08120b43be3060102f2df670c0a2ce58a /worldsy.py
parent:star: (diff)
downloadworldsy-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.py40
1 files changed, 32 insertions, 8 deletions
diff --git a/worldsy.py b/worldsy.py
index c6fbbf8..e3473ce 100644
--- a/worldsy.py
+++ b/worldsy.py
@@ -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 ###