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

@@ -64,12 +64,12 @@ class ChecklistBox(Frame):
class NewJobWindow(Frame):
def __init__(self, parent=None, hostname=None):
def __init__(self, parent=None, clients=None):
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.clients = []
self.presets = {}
self.renderer_info = {}
self.priority = IntVar(value=2)
@@ -99,6 +99,10 @@ class NewJobWindow(Frame):
self.client_combo = Combobox(client_frame, state="readonly")
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 = Frame(job_frame)
@@ -156,16 +160,14 @@ class NewJobWindow(Frame):
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):
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.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
available_renderers = [x for x in self.renderer_info.keys() if self.renderer_info[x].get('available', False)]
self.renderer_combo['values'] = available_renderers
@@ -174,25 +176,6 @@ class NewJobWindow(Frame):
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):
self.chosen_file = filedialog.askopenfilename()
button_text = os.path.basename(self.chosen_file) if self.chosen_file else "no file selected"