mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Client cleanup
This commit is contained in:
@@ -135,7 +135,11 @@ class ZordonClient:
|
|||||||
self.server_tree.selection_set(selected_server)
|
self.server_tree.selection_set(selected_server)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pass
|
pass
|
||||||
self.start_update_thread()
|
|
||||||
|
# start background update
|
||||||
|
x = threading.Thread(target=self.__background_update)
|
||||||
|
x.daemon = True
|
||||||
|
x.start()
|
||||||
|
|
||||||
def populate_server_tree(self):
|
def populate_server_tree(self):
|
||||||
servers = available_servers()
|
servers = available_servers()
|
||||||
@@ -146,24 +150,30 @@ class ZordonClient:
|
|||||||
def server_picked(self, event):
|
def server_picked(self, event):
|
||||||
new_hostname = self.server_tree.selection()[0]
|
new_hostname = self.server_tree.selection()[0]
|
||||||
self.server_proxy.hostname = new_hostname
|
self.server_proxy.hostname = new_hostname
|
||||||
self.job_cache = []
|
self.job_cache.clear()
|
||||||
self.update_jobs(clear_table=True)
|
self.update_jobs(clear_table=True)
|
||||||
|
|
||||||
def stop_job(self):
|
def selected_job_id(self):
|
||||||
|
try:
|
||||||
selected_item = self.job_tree.selection()[0] # Get the selected item
|
selected_item = self.job_tree.selection()[0] # Get the selected item
|
||||||
row_data = self.job_tree.item(selected_item) # Get the text of the selected item
|
row_data = self.job_tree.item(selected_item) # Get the text of the selected item
|
||||||
job_id = row_data['values'][0]
|
job_id = row_data['values'][0]
|
||||||
|
return job_id
|
||||||
|
except Exception as e:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def stop_job(self):
|
||||||
|
job_id = self.selected_job_id()
|
||||||
self.server_proxy.request_data(f'job/{job_id}/cancel?confirm=true')
|
self.server_proxy.request_data(f'job/{job_id}/cancel?confirm=true')
|
||||||
|
|
||||||
def delete_job(self):
|
def delete_job(self):
|
||||||
selected_item = self.job_tree.selection()[0] # Get the selected item
|
job_id = self.selected_job_id()
|
||||||
row_data = self.job_tree.item(selected_item) # Get the text of the selected item
|
|
||||||
job_id = row_data['values'][0]
|
|
||||||
job = next((d for d in self.job_cache if d.get('id') == job_id), None)
|
job = next((d for d in self.job_cache if d.get('id') == job_id), None)
|
||||||
display_name = job['name'] or os.path.basename(job['input_path'])
|
display_name = job['name'] or os.path.basename(job['input_path'])
|
||||||
result = messagebox.askyesno("Confirmation", f"Are you sure you want to delete the job:\n{display_name}?")
|
result = messagebox.askyesno("Confirmation", f"Are you sure you want to delete the job:\n{display_name}?")
|
||||||
if result:
|
if result:
|
||||||
self.server_proxy.request_data(f'job/{job_id}/delete?confirm=true')
|
self.server_proxy.request_data(f'job/{job_id}/delete?confirm=true')
|
||||||
|
self.job_cache.clear()
|
||||||
self.update_jobs(clear_table=True)
|
self.update_jobs(clear_table=True)
|
||||||
|
|
||||||
def set_image(self, image):
|
def set_image(self, image):
|
||||||
@@ -173,11 +183,8 @@ class ZordonClient:
|
|||||||
self.photo_label.image = thumb_image
|
self.photo_label.image = thumb_image
|
||||||
|
|
||||||
def on_row_select(self, event):
|
def on_row_select(self, event):
|
||||||
if self.job_tree.selection():
|
job_id = self.selected_job_id()
|
||||||
selected_item = self.job_tree.selection()[0] # Get the selected item
|
if job_id:
|
||||||
row_data = self.job_tree.item(selected_item) # Get the text of the selected item
|
|
||||||
job_id = row_data['values'][0]
|
|
||||||
|
|
||||||
# update thumb
|
# update thumb
|
||||||
response = self.server_proxy.request(f'job/{job_id}/thumbnail?size=big')
|
response = self.server_proxy.request(f'job/{job_id}/thumbnail?size=big')
|
||||||
if response.ok:
|
if response.ok:
|
||||||
@@ -197,33 +204,20 @@ class ZordonClient:
|
|||||||
self.set_image(self.default_image)
|
self.set_image(self.default_image)
|
||||||
|
|
||||||
def reveal_in_finder(self):
|
def reveal_in_finder(self):
|
||||||
selected_item = self.job_tree.selection()[0] # Get the selected item
|
job = next((d for d in self.job_cache if d.get('id') == self.selected_job_id()), None)
|
||||||
row_data = self.job_tree.item(selected_item) # Get the text of the selected item
|
|
||||||
job_id = row_data['values'][0]
|
|
||||||
|
|
||||||
job = next((d for d in self.job_cache if d.get('id') == job_id), None)
|
|
||||||
output_dir = os.path.dirname(job['output_path'])
|
output_dir = os.path.dirname(job['output_path'])
|
||||||
subprocess.run(['open', output_dir])
|
subprocess.run(['open', output_dir])
|
||||||
|
|
||||||
def open_logs(self):
|
def open_logs(self):
|
||||||
selected_item = self.job_tree.selection()[0] # Get the selected item
|
job = next((d for d in self.job_cache if d.get('id') == self.selected_job_id()), None)
|
||||||
row_data = self.job_tree.item(selected_item) # Get the text of the selected item
|
|
||||||
job_id = row_data['values'][0]
|
|
||||||
|
|
||||||
job = next((d for d in self.job_cache if d.get('id') == job_id), None)
|
|
||||||
subprocess.run(['open', job['log_path']])
|
subprocess.run(['open', job['log_path']])
|
||||||
|
|
||||||
def mainloop(self):
|
def mainloop(self):
|
||||||
self.root.mainloop()
|
self.root.mainloop()
|
||||||
|
|
||||||
def start_update_thread(self):
|
|
||||||
x = threading.Thread(target=self.__background_update)
|
|
||||||
x.daemon = True
|
|
||||||
x.start()
|
|
||||||
|
|
||||||
def __background_update(self):
|
def __background_update(self):
|
||||||
while True:
|
while True:
|
||||||
self.update_jobs(clear_table=False)
|
self.update_jobs()
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
def update_jobs(self, clear_table=False):
|
def update_jobs(self, clear_table=False):
|
||||||
@@ -234,12 +228,13 @@ class ZordonClient:
|
|||||||
if values[0] == id:
|
if values[0] == id:
|
||||||
tree.item(item, values=new_values, tags=tags)
|
tree.item(item, values=new_values, tags=tags)
|
||||||
break
|
break
|
||||||
|
job_fetch = self.server_proxy.get_jobs()
|
||||||
|
if job_fetch is not None:
|
||||||
|
if len(job_fetch) < len(self.job_cache) or len(job_fetch) == 0:
|
||||||
|
clear_table = True
|
||||||
|
self.job_cache = job_fetch # update the cache only if its good data
|
||||||
if clear_table:
|
if clear_table:
|
||||||
self.job_tree.delete(*self.job_tree.get_children())
|
self.job_tree.delete(*self.job_tree.get_children())
|
||||||
self.job_cache.clear()
|
|
||||||
job_fetch = self.server_proxy.get_jobs()
|
|
||||||
if job_fetch:
|
|
||||||
self.job_cache = job_fetch # update the cache only if its good data
|
|
||||||
for job in self.job_cache:
|
for job in self.job_cache:
|
||||||
display_status = job['status'] if job['status'] != 'running' else \
|
display_status = job['status'] if job['status'] != 'running' else \
|
||||||
('%.0f%%' % (job['percent_complete'] * 100)) # if running, show percentage, otherwise just show status
|
('%.0f%%' % (job['percent_complete'] * 100)) # if running, show percentage, otherwise just show status
|
||||||
|
|||||||
Reference in New Issue
Block a user