New job window now lets you pick from all detected servers

This commit is contained in:
Brett Williams
2023-06-03 13:46:29 -05:00
parent 3a55df788d
commit 87da5e7c0d
3 changed files with 16 additions and 33 deletions

View File

@@ -33,7 +33,7 @@ def available_servers():
return [socket.gethostname()] return [socket.gethostname()]
class ZordonClient: class DashboardWindow:
lib_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) lib_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
image_path = os.path.join(lib_path, 'server', 'static', 'images', 'desktop.png') image_path = os.path.join(lib_path, 'server', 'static', 'images', 'desktop.png')
@@ -43,7 +43,7 @@ class ZordonClient:
# Create a Treeview widget # Create a Treeview widget
self.root = tk.Tk() self.root = tk.Tk()
self.root.title("Zordon Render Client") self.root.title("Zordon Dashboard")
self.local_host = socket.gethostname() self.local_host = socket.gethostname()
self.server_proxy = RenderServerProxy(hostname=self.local_host) self.server_proxy = RenderServerProxy(hostname=self.local_host)
self.job_cache = [] self.job_cache = []
@@ -274,12 +274,12 @@ class ZordonClient:
new_window.title("New Window") new_window.title("New Window")
new_window.geometry("500x600+300+300") new_window.geometry("500x600+300+300")
new_window.resizable(False, height=True) new_window.resizable(False, height=True)
x = NewJobWindow(parent=new_window, hostname=self.server_proxy.hostname) x = NewJobWindow(parent=new_window, clients=list(self.server_tree.get_children()))
x.pack() x.pack()
def start_client(): def start_client():
x = ZordonClient() x = DashboardWindow()
x.mainloop() x.mainloop()

View File

@@ -64,12 +64,12 @@ class ChecklistBox(Frame):
class NewJobWindow(Frame): class NewJobWindow(Frame):
def __init__(self, parent=None, hostname=None): def __init__(self, parent=None, clients=None):
super().__init__(parent) super().__init__(parent)
self.server_proxy = RenderServerProxy(hostname=hostname) self.clients = clients or []
self.server_proxy = RenderServerProxy(hostname=clients[0] if clients else None)
self.chosen_file = None self.chosen_file = None
self.clients = []
self.presets = {} self.presets = {}
self.renderer_info = {} self.renderer_info = {}
self.priority = IntVar(value=2) self.priority = IntVar(value=2)
@@ -99,6 +99,10 @@ class NewJobWindow(Frame):
self.client_combo = Combobox(client_frame, state="readonly") self.client_combo = Combobox(client_frame, state="readonly")
self.client_combo.pack(fill=X, padx=5, expand=True) self.client_combo.pack(fill=X, padx=5, expand=True)
self.client_combo.bind('<<ComboboxSelected>>', self.client_picked)
self.client_combo['values'] = self.clients
if self.clients:
self.client_combo.current(0)
# renderer frame # renderer frame
renderer_frame = Frame(job_frame) renderer_frame = Frame(job_frame)
@@ -156,16 +160,14 @@ class NewJobWindow(Frame):
self.fetch_server_data() self.fetch_server_data()
def client_picked(self):
self.server_proxy.hostname = self.client_combo.get()
self.fetch_server_data()
def fetch_server_data(self): def fetch_server_data(self):
self.clients = self.server_proxy.request_data('clients', timeout=3) or []
self.renderer_info = self.server_proxy.request_data('renderer_info', timeout=3) or {} self.renderer_info = self.server_proxy.request_data('renderer_info', timeout=3) or {}
self.presets = self.server_proxy.request_data('presets', timeout=3) or {} self.presets = self.server_proxy.request_data('presets', timeout=3) or {}
# update clients
self.client_combo['values'] = self.clients
if self.clients:
self.client_combo.current(0)
# update available renders # update available renders
available_renderers = [x for x in self.renderer_info.keys() if self.renderer_info[x].get('available', False)] available_renderers = [x for x in self.renderer_info.keys() if self.renderer_info[x].get('available', False)]
self.renderer_combo['values'] = available_renderers self.renderer_combo['values'] = available_renderers
@@ -174,25 +176,6 @@ class NewJobWindow(Frame):
self.refresh_renderer_settings() self.refresh_renderer_settings()
def request_new_hostname(self):
hostname = None
while not hostname:
user_hostname_input = askstring("Server Name", "What is the server's hostname?")
if not user_hostname_input: # user input is none if they press cancel
return
server_status = request_data(user_hostname_input, 'status', timeout=server_setup_timeout)
if not server_status:
messagebox.showerror("Cannot connect", f"Cannot connect to server \"{user_hostname_input}\"")
else:
hostname = user_hostname_input
self.set_hostname(hostname)
def set_hostname(self, hostname):
self.server_hostname = hostname
self.server_button.configure(text=self.server_hostname)
with open(prefs_name, 'w') as file: # save to prefs
file.write(hostname)
def choose_file_button(self): def choose_file_button(self):
self.chosen_file = filedialog.askopenfilename() self.chosen_file = filedialog.askopenfilename()
button_text = os.path.basename(self.chosen_file) if self.chosen_file else "no file selected" button_text = os.path.basename(self.chosen_file) if self.chosen_file else "no file selected"

View File

@@ -1,4 +1,4 @@
from lib.client.client import start_client from lib.client.dashboard_window import start_client
if __name__ == '__main__': if __name__ == '__main__':
start_client() start_client()