Add zeroconf to client

This commit is contained in:
Brett Williams
2023-06-01 18:09:26 -05:00
parent b027a19352
commit 997feb74cc
3 changed files with 93 additions and 13 deletions

View File

@@ -10,6 +10,7 @@ from tkinter import ttk, messagebox
from PIL import Image, ImageTk
from new_job_window import NewJobWindow
from server_proxy import RenderServerProxy
from lib.server.zeroconf_server import ZeroconfServer
def request_data(server_ip, payload, server_port=8080, timeout=2):
@@ -44,15 +45,17 @@ class ZordonClient:
def __init__(self):
servers = available_servers()
# Create a Treeview widget
self.root = tk.Tk()
self.root.title("Zordon Render Client")
self.local_host = socket.gethostname()
self.server_proxy = RenderServerProxy(hostname=servers[0])
self.server_proxy = RenderServerProxy(hostname=self.local_host)
self.job_cache = []
# Setup zeroconf
self.zeroconf = ZeroconfServer("_zordon._tcp.local.", self.server_proxy.hostname, self.server_proxy.port)
self.zeroconf.start()
# Setup photo preview
photo_pad = tk.Frame(self.root, background="gray")
photo_pad.pack(fill=tk.BOTH, pady=5, padx=5)
@@ -129,7 +132,7 @@ class ZordonClient:
pass
# update servers
self.populate_server_tree()
self.update_servers()
try:
selected_server = self.server_tree.get_children()[0]
self.server_tree.selection_set(selected_server)
@@ -141,15 +144,12 @@ class ZordonClient:
x.daemon = True
x.start()
def populate_server_tree(self):
servers = available_servers()
self.server_tree.delete(*self.server_tree.get_children())
for hostname in servers:
self.server_tree.insert("", tk.END, iid=hostname, values=(hostname,))
def server_picked(self, event):
new_hostname = self.server_tree.selection()[0]
self.server_proxy.hostname = new_hostname
try:
new_hostname = self.server_tree.selection()[0]
self.server_proxy.hostname = new_hostname
except IndexError:
pass
self.job_cache.clear()
self.update_jobs(clear_table=True)
@@ -218,8 +218,17 @@ class ZordonClient:
def __background_update(self):
while True:
self.update_jobs()
self.update_servers()
time.sleep(1)
def update_servers(self):
servers = self.zeroconf.found_clients()
if len(servers) < len(self.server_tree.get_children()):
self.server_tree.delete(*self.server_tree.get_children())
for hostname in servers:
if hostname not in self.server_tree.get_children():
self.server_tree.insert("", tk.END, iid=hostname, values=(hostname,))
def update_jobs(self, clear_table=False):
def update_row(tree, id, new_values, tags=None):