mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
More client cleanup work
This commit is contained in:
@@ -15,14 +15,6 @@ sys.path.append("../")
|
||||
from lib.server.zeroconf_server import ZeroconfServer
|
||||
|
||||
|
||||
def request_data(server_ip, payload, server_port=8080, timeout=2):
|
||||
try:
|
||||
req = requests.get(f'http://{server_ip}:{server_port}/api/{payload}', timeout=timeout)
|
||||
if req.ok:
|
||||
return req.json()
|
||||
except Exception as e:
|
||||
pass
|
||||
return None
|
||||
|
||||
|
||||
def sort_column(tree, col, reverse=False):
|
||||
@@ -73,17 +65,18 @@ class ZordonClient:
|
||||
# Create server tree
|
||||
self.server_tree = ttk.Treeview(server_frame, show="headings")
|
||||
self.server_tree.pack(side=tk.LEFT, expand=True, fill=tk.BOTH)
|
||||
self.server_tree["columns"] = ("server")
|
||||
self.server_tree.column("server", width=50)
|
||||
self.server_tree["columns"] = ("Server")
|
||||
self.server_tree.column("Server", width=50)
|
||||
self.server_tree.bind("<<TreeviewSelect>>", self.server_picked)
|
||||
self.server_tree.column("server", width=200)
|
||||
self.server_tree.column("Server", width=200)
|
||||
make_sortable(self.server_tree)
|
||||
|
||||
# Create separator
|
||||
separator = ttk.Separator(server_frame, orient=tk.VERTICAL)
|
||||
separator.pack(side=tk.LEFT, padx=5, pady=5, fill=tk.Y)
|
||||
|
||||
# Setup the Tree
|
||||
self.job_tree = ttk.Treeview(server_frame, show="headings", height=20)
|
||||
self.job_tree = ttk.Treeview(server_frame, show="headings", height=10)
|
||||
self.job_tree.tag_configure('running', background='lawn green', font=('', 0, 'bold'))
|
||||
self.job_tree.bind("<<TreeviewSelect>>", self.on_row_select)
|
||||
self.job_tree["columns"] = ("id", "Name", "Renderer", "Priority", "Status", "Time Elapsed", "Frames", "")
|
||||
@@ -114,6 +107,8 @@ class ZordonClient:
|
||||
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)
|
||||
|
||||
self.stop_button.config(state='disabled')
|
||||
|
||||
# Pack the buttons in the frame
|
||||
self.stop_button.pack(side=tk.LEFT)
|
||||
delete_button.pack(side=tk.LEFT)
|
||||
@@ -124,7 +119,7 @@ class ZordonClient:
|
||||
# Start the Tkinter event loop
|
||||
self.root.geometry("500x600+300+300")
|
||||
self.root.maxsize(width=2000, height=1200)
|
||||
self.root.minsize(width=900, height=1000)
|
||||
self.root.minsize(width=900, height=800)
|
||||
make_sortable(self.job_tree)
|
||||
|
||||
# update jobs
|
||||
@@ -213,8 +208,8 @@ class ZordonClient:
|
||||
subprocess.run(['open', output_dir])
|
||||
|
||||
def open_logs(self):
|
||||
job = next((d for d in self.job_cache if d.get('id') == self.selected_job_id()), None)
|
||||
subprocess.run(['open', job['log_path']])
|
||||
url = f'http://{self.server_proxy.hostname}:{self.server_proxy.port}/api/job/{self.selected_job_id()}/logs'
|
||||
subprocess.run(['open', url])
|
||||
|
||||
def mainloop(self):
|
||||
self.root.mainloop()
|
||||
|
||||
@@ -72,6 +72,7 @@ def job_detail(job_id):
|
||||
@server.route('/api/job/<job_id>/thumbnail')
|
||||
def job_thumbnail(job_id):
|
||||
big_thumb = request.args.get('size', False) == "big"
|
||||
video_ok = request.args.get('video_ok', True)
|
||||
found_job = RenderQueue.job_with_id(job_id, none_ok=True)
|
||||
if found_job:
|
||||
|
||||
@@ -81,18 +82,21 @@ def job_thumbnail(job_id):
|
||||
big_video_path = os.path.join(server.config['THUMBS_FOLDER'], found_job.id + '_big.mp4')
|
||||
big_image_path = os.path.join(server.config['THUMBS_FOLDER'], found_job.id + '_big.jpg')
|
||||
|
||||
# generate regular thumb if it doesn't exist
|
||||
if not os.path.exists(thumb_video_path) and not os.path.exists(thumb_video_path + '_IN-PROGRESS') and \
|
||||
found_job.status not in [RenderStatus.CANCELLED, RenderStatus.ERROR]:
|
||||
generate_thumbnail_for_job(found_job, thumb_video_path, thumb_image_path, max_width=240)
|
||||
|
||||
if big_thumb and os.path.exists(big_video_path) and not os.path.exists(big_video_path + '_IN-PROGRESS'):
|
||||
# generate big thumb if it doesn't exist
|
||||
if not os.path.exists(big_video_path) and not os.path.exists(big_image_path + '_IN-PROGRESS') and \
|
||||
found_job.status not in [RenderStatus.CANCELLED, RenderStatus.ERROR]:
|
||||
generate_thumbnail_for_job(found_job, big_video_path, big_image_path, max_width=800)
|
||||
|
||||
if big_thumb and video_ok and os.path.exists(big_video_path) and not os.path.exists(big_video_path + '_IN-PROGRESS'):
|
||||
return send_file(big_video_path, mimetype="video/mp4")
|
||||
elif big_thumb and os.path.exists(big_image_path):
|
||||
return send_file(big_image_path, mimetype='image/jpeg')
|
||||
elif not os.path.exists(big_video_path) and not os.path.exists(big_image_path + '_IN-PROGRESS') and \
|
||||
found_job.status not in [RenderStatus.CANCELLED, RenderStatus.ERROR]:
|
||||
generate_thumbnail_for_job(found_job, big_video_path, big_image_path, max_width=800)
|
||||
if os.path.exists(thumb_video_path) and not os.path.exists(thumb_video_path + '_IN-PROGRESS'):
|
||||
elif video_ok and os.path.exists(thumb_video_path) and not os.path.exists(thumb_video_path + '_IN-PROGRESS'):
|
||||
return send_file(thumb_video_path, mimetype="video/mp4")
|
||||
elif os.path.exists(thumb_image_path):
|
||||
return send_file(thumb_image_path, mimetype='image/jpeg')
|
||||
|
||||
Reference in New Issue
Block a user