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