diff --git a/lib/client/client.py b/lib/client/client.py index c41cecc..63f4a8d 100644 --- a/lib/client/client.py +++ b/lib/client/client.py @@ -6,7 +6,7 @@ import threading import time import socket import os -from tkinter import ttk +from tkinter import ttk, messagebox from PIL import Image, ImageTk from new_job_window import NewJobWindow from server_proxy import RenderServerProxy @@ -98,11 +98,13 @@ class ZordonClient: # Create buttons logs_button = tk.Button(button_frame, text="Logs", command=self.open_logs) finder_button = tk.Button(button_frame, text="Reveal in Finder", command=self.reveal_in_finder) - self.stop_button = tk.Button(button_frame, text="Stop Job", command=self.stop_job) + self.stop_button = tk.Button(button_frame, text="Stop", command=self.stop_job) + delete_button = tk.Button(button_frame, text="Delete", command=self.delete_job) add_job_button = tk.Button(button_frame, text="Add Job", command=self.show_new_job_window) # Pack the buttons in the frame self.stop_button.pack(side=tk.LEFT) + delete_button.pack(side=tk.LEFT) finder_button.pack(side=tk.LEFT) logs_button.pack(side=tk.LEFT) add_job_button.pack(side=tk.RIGHT) @@ -129,6 +131,17 @@ class ZordonClient: job_id = row_data['values'][0] self.server_proxy.request_data(f'job/{job_id}/cancel?confirm=true') + def delete_job(self): + selected_item = self.tree.selection()[0] # Get the selected item + row_data = self.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) + 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.update_jobs(clear_table=True) + def on_row_select(self, event): if self.tree.selection(): selected_item = self.tree.selection()[0] # Get the selected item diff --git a/lib/render_workers/base_worker.py b/lib/render_workers/base_worker.py index a2ed0c0..fd27b15 100644 --- a/lib/render_workers/base_worker.py +++ b/lib/render_workers/base_worker.py @@ -244,7 +244,7 @@ class BaseRenderWorker(Base): self.stop(is_error=True) def stop(self, is_error=False): - if self.__process: + if hasattr(self, '__process'): try: if self.status in [RenderStatus.RUNNING, RenderStatus.NOT_STARTED, RenderStatus.SCHEDULED]: if is_error: