diff --git a/lib/server/job_server.py b/lib/server/job_server.py index 6c14045..64ea07e 100755 --- a/lib/server/job_server.py +++ b/lib/server/job_server.py @@ -182,6 +182,13 @@ def render_clients(): return RenderQueue.render_clients +@server.get('/api/presets') +def presets(): + with open('config/presets.yaml') as f: + presets = yaml.load(f, Loader=yaml.FullLoader) + return presets + + @server.get('/api/full_status') def full_status(): full_results = {'timestamp': datetime.now().isoformat(), 'servers': {}} diff --git a/scheduler_gui.py b/scheduler_gui.py index dd90575..68e86e5 100755 --- a/scheduler_gui.py +++ b/scheduler_gui.py @@ -67,6 +67,7 @@ class ScheduleJob(Frame): self.server_hostname = None self.chosen_file = None self.clients = [] + self.presets = {} self.renderer_info = {} self.priority = IntVar(value=2) @@ -115,6 +116,15 @@ class ScheduleJob(Frame): Radiobutton(priority_frame, text="2", value=2, variable=self.priority).pack(anchor=W, side=LEFT, padx=5) Radiobutton(priority_frame, text="3", value=3, variable=self.priority).pack(anchor=W, side=LEFT, padx=5) + # presets + presets_frame = Frame(self) + presets_frame.pack(fill=X) + + Label(presets_frame, text="Presets", width=label_width).pack(side=LEFT, padx=5, pady=5) + self.presets_combo = Combobox(presets_frame, state="readonly") + self.presets_combo.pack(side=LEFT, padx=5, pady=5, expand=True, fill=X) + self.presets_combo.bind('<>', self.chose_preset) + # output frame output_frame = Frame(self) output_frame.pack(fill=X) @@ -159,6 +169,7 @@ class ScheduleJob(Frame): def fetch_server_data(self): self.clients = request_data(self.server_hostname, 'clients', timeout=3) or [] self.renderer_info = request_data(self.server_hostname, 'renderer_info', timeout=3) or {} + self.presets = request_data(self.server_hostname, 'presets', timeout=3) or {} # update clients self.client_combo['values'] = self.clients @@ -213,6 +224,17 @@ class ScheduleJob(Frame): self.refresh_renderer_settings() + def chose_preset(self, event=None): + preset_name = self.presets_combo.get() + renderer = self.renderer_combo.get() + + presets_to_show = {key: value for key, value in self.presets.items() if value.get("renderer") == renderer} + matching_dict = next((value for value in presets_to_show.values() if value.get("name") == preset_name), None) + if matching_dict: + self.custom_args_entry.delete(0, END) + self.custom_args_entry.insert(0, matching_dict['args']) + + def refresh_renderer_settings(self, event=None): renderer = self.renderer_combo.get() @@ -235,6 +257,10 @@ class ScheduleJob(Frame): self.output_format['values'] = [] self.output_format['state'] = DISABLED + # update presets + presets_to_show = {key: value for key, value in self.presets.items() if value.get("renderer") == renderer} + self.presets_combo['values'] = [value['name'] for value in presets_to_show.values()] + def draw_custom_args(self): if hasattr(self, 'custom_args_frame') and self.custom_args_frame: self.custom_args_frame.forget()