class DetailedProgressDialog(QDialog): def __init__(self, parent, states): super(DetailedProgressDialog, self).__init__(parent) self.setWindowTitle("Realization Progress") layout = QGridLayout(self) self.detailed_progress_widget = DetailedProgress(states, self) self.overview_label = QLabel("Realizations") self.single_view = QTableView() self.single_view.setModel(SingleProgressModel(self.single_view)) self.single_view_label = QLabel("Realization details") self.detailed_progress_widget.clicked.connect(self.show_selection) layout.addWidget(self.single_view_label, 0, 0) layout.addWidget(self.overview_label, 0, 1) layout.addWidget(self.single_view, 1, 0) layout.addWidget(self.detailed_progress_widget, 1, 1) self.detailed_progress_widget.show() self.setLayout(layout) self.layout().setColumnStretch(0, 1) self.layout().setColumnStretch(1, 2) self.progress = None self.selected_realization = None self.resize(parent.width(), parent.height()) def set_progress(self, progress, iteration): self.progress = progress self.detailed_progress_widget.set_progress(progress, iteration) self.overview_label.setText("Realizations for iteration {}".format(iteration)) self.update_single_view() self.update() def show_selection(self, iens): if not self.progress: return self.selected_realization = iens self.single_view_label.setText("Realization id: {}".format(iens)) self.update_single_view() def update_single_view(self): if not self.single_view.isVisible() or not self.selected_realization in self.progress: return model_data = [] jobs = self.progress[self.selected_realization] headers = [] for job in jobs: data = job.dump_data() row = [str(data[key]) for key in data] model_data.append(row) headers = data.keys() self.single_view.model().update_data(headers, model_data) self.single_view.resizeColumnsToContents() self.single_view.model().modelReset.emit()
class DetailedProgressDialog(QDialog): def __init__(self, parent, states): super(DetailedProgressDialog, self).__init__(parent) self.setWindowTitle("Realization Progress") layout = QGridLayout(self) self.detailed_progress_widget = DetailedProgress(states, self) self.overview_label = QLabel("Realizations") self.single_view = QTableView() self.single_view.setModel(SingleProgressModel(self.single_view)) self.single_view_label = QLabel("Realization details") self.detailed_progress_widget.clicked.connect(self.show_selection) layout.addWidget(self.single_view_label, 0, 0) layout.addWidget(self.overview_label, 0, 1) layout.addWidget(self.single_view, 1, 0) layout.addWidget(self.detailed_progress_widget, 1, 1) self.detailed_progress_widget.show() self.setLayout(layout) self.layout().setColumnStretch(0, 1) self.layout().setColumnStretch(1, 2) self.progress = None self.selected_realization = None self.resize(parent.width(), parent.height()) def set_progress(self, progress, iteration): self.progress = progress self.detailed_progress_widget.set_progress(progress, iteration) self.overview_label.setText( "Realizations for iteration {}".format(iteration)) self.update_single_view() self.update() def show_selection(self, iens): if not self.progress: return self.selected_realization = iens self.single_view_label.setText("Realization id: {}".format(iens)) self.update_single_view() def update_single_view(self): if not self.single_view.isVisible( ) or not self.selected_realization in self.progress: return model_data = [] jobs = self.progress[self.selected_realization] headers = [] for job in jobs: data = job.dump_data() row = [str(data[key]) for key in data] model_data.append(row) headers = list(data.keys()) self.single_view.model().update_data(headers, model_data) self.single_view.resizeColumnsToContents() self.single_view.model().modelReset.emit()