diff --git a/src/ui/add_job_window.py b/src/ui/add_job_window.py index 8bd7310..36ebcb5 100644 --- a/src/ui/add_job_window.py +++ b/src/ui/add_job_window.py @@ -133,6 +133,7 @@ class NewRenderJobForm(QWidget): server_list_layout = QHBoxLayout() server_list_layout.addWidget(QLabel("Render Target:")) self.server_input = QComboBox() + self.server_input.currentTextChanged.connect(self.server_changed) server_list_layout.addWidget(self.server_input) project_layout.addLayout(server_list_layout) @@ -353,10 +354,27 @@ class NewRenderJobForm(QWidget): self.engine_version_combo.addItems(engine_vers) self.file_format_combo.addItems(engine_info.get('supported_export_formats')) + def server_changed(self, hostname): + if not hostname: + return + + self.server_proxy = RenderServerProxy(hostname) + + if self.engine_type and self.engine_type.count(): + try: + self.engine_changed() + except Exception as e: + logger.error(f"Error updating engine data for server '{hostname}': {e}") + def update_server_list(self): + current_hostname = self.server_input.currentText() clients = ZeroconfServer.found_hostnames() self.server_input.clear() self.server_input.addItems(clients) + if current_hostname and current_hostname in clients: + self.server_input.setCurrentText(current_hostname) + elif clients: + self.server_changed(clients[0]) def browse_scene_file(self): file_name, _ = QFileDialog.getOpenFileName(self, "Select Scene File") diff --git a/src/ui/main_window.py b/src/ui/main_window.py index c1a6423..1d7fa27 100644 --- a/src/ui/main_window.py +++ b/src/ui/main_window.py @@ -229,26 +229,22 @@ class MainWindow(QMainWindow): def server_picked(self): """Update the UI elements relevant to the server selection.""" - try: - # Retrieve the new hostname selected by the user - new_hostname = self.server_list_view.currentItem().text() + current_item = self.server_list_view.currentItem() + if current_item is None: + return - # Check if the hostname has changed to avoid unnecessary updates - if new_hostname != self.current_hostname: - # Update the current hostname and clear the job list - self.current_hostname = new_hostname - self.job_list_view.setRowCount(0) - self.refresh_job_list() + new_hostname = current_item.text() + if new_hostname == self.current_hostname: + return - # Select the first row if there are jobs listed - if self.job_list_view.rowCount(): - self.job_list_view.selectRow(0) + self.current_hostname = new_hostname + self.job_list_view.setRowCount(0) + self.refresh_job_list() - # Update server information display - self.update_server_info_display(new_hostname) + if self.job_list_view.rowCount(): + self.job_list_view.selectRow(0) - except AttributeError as e: - logger.error(f"AttributeError in server_picked: {e}") + self.update_server_info_display(new_hostname) def update_server_info_display(self, hostname): """Updates the server information section of the UI.""" @@ -494,6 +490,9 @@ class MainWindow(QMainWindow): if not old_count and self.server_list_view.count(): self.server_list_view.setCurrentRow(0) self.server_picked() + elif self.server_list_view.count() and self.server_list_view.currentItem() is None: + self.server_list_view.setCurrentRow(0) + self.server_picked() def create_toolbars(self) -> None: """