def updateDataTable(self): """ Updates the table of data based on self.data dictionary """ n = len(self.data) table = self.dataTable table.setSortingEnabled(False) # Stops the table rearranging itself self.dataTable.cellChanged.disconnect( self.dataTableChanged) # Don't call the dataTableChanged function table.setRowCount(n) for row, name in enumerate(self.data): item = self.data[name] it = QTableWidgetItem(name) it.oldname = name # Save this for when it's changed table.setItem(row, 0, it) # Assume it's an XPadDataItem try: it = QTableWidgetItem(item.source) it.setFlags(it.flags() ^ Qt.ItemIsEditable) # Make source read only table.setItem(row, 1, it) except: table.setItem(row, 1, QTableWidgetItem("")) try: it = QTableWidgetItem(item.name) it.setFlags(it.flags() ^ Qt.ItemIsEditable) # Make trace read only table.setItem(row, 2, it) except: table.setItem(row, 2, QTableWidgetItem("")) try: try: comment = item.comment except AttributeError: comment = item.desc if comment == "": comment = item.label if item.units != "": comment += " (" + item.units + ") " if item.dim != []: comment += " [" + item.dim[0].name for d in item.dim[1:]: comment += ", " + d.name comment += "] " else: comment += " = " + str(item.data) table.setItem(row, 3, QTableWidgetItem(comment)) except: table.setItem(row, 3, QTableWidgetItem(str(item))) table.setSortingEnabled(True) # Re-enable sorting self.dataTable.cellChanged.connect(self.dataTableChanged)
def updateDataTable(self): """ Updates the table of data based on self.data dictionary """ n = len(self.data) table = self.dataTable table.setSortingEnabled(False) # Stops the table rearranging itself self.dataTable.cellChanged.disconnect(self.dataTableChanged) # Don't call the dataTableChanged function table.setRowCount(n) for row, name in enumerate(self.data): item = self.data[name] it = QTableWidgetItem(name) it.oldname = name # Save this for when it's changed table.setItem(row, 0, it) # Assume it's an XPadDataItem try: it = QTableWidgetItem(item.source) it.setFlags(it.flags() ^ Qt.ItemIsEditable) # Make source read only table.setItem(row, 1, it) except: table.setItem(row, 1, QTableWidgetItem("")) try: it = QTableWidgetItem(item.name) it.setFlags(it.flags() ^ Qt.ItemIsEditable) # Make trace read only table.setItem(row, 2, it) except: table.setItem(row, 2, QTableWidgetItem("")) try: try: comment = item.comment except AttributeError: comment = item.desc if comment == "": comment = item.label if item.units != "": comment += " ("+item.units+") " if item.dim != []: comment += " [" + item.dim[0].name for d in item.dim[1:]: comment += ", " + d.name comment += "] " else: comment += " = " + str(item.data) table.setItem(row, 3, QTableWidgetItem(comment)) except: table.setItem(row, 3, QTableWidgetItem(str(item))) table.setSortingEnabled(True) # Re-enable sorting self.dataTable.cellChanged.connect(self.dataTableChanged)
def update_options_form(self): """Update the widget values in the options form, based on the current values in self.options """ filtered_options = copy.deepcopy(self.options) filtered_defaults = dict(BoutMesh.user_options_factory.defaults) filtered_defaults.update( tokamak.TokamakEquilibrium.user_options_factory.defaults) filtered_defaults.update( tokamak.TokamakEquilibrium.nonorthogonal_options_factory.defaults) # evaluate filtered_defaults using the values in self.options, so that any # expressions get evaluated filtered_default_values = dict( BoutMesh.user_options_factory.create(self.options)) try: filtered_default_values.update( tokamak.TokamakEquilibrium.user_options_factory.create( self.options)) if not hasattr(self, "eq"): filtered_default_values.update( tokamak.TokamakEquilibrium.nonorthogonal_options_factory. create(self.options)) else: # Use the object if it exists because some defaults are updated when the # Equilibrium is created filtered_default_values.update( self.eq.nonorthogonal_options_factory.create(self.options)) except (ValueError, TypeError) as e: self._popup_error_message(e) return # Skip options handled specially elsewhere filtered_options.pop("orthogonal", None) del filtered_defaults["orthogonal"] self.options_form.setSortingEnabled(False) self.options_form.cellChanged.disconnect(self.options_form_changed) self.options_form.setRowCount(len(filtered_defaults)) for row, (key, value) in enumerate(sorted(filtered_defaults.items())): item0 = QTableWidgetItem(key) item0.setFlags(item0.flags() & ~Qt.ItemIsEditable) item0.setToolTip(value.doc) self.options_form.setItem(row, 0, item0) if key in filtered_options: value_to_set = str(filtered_options[key]) else: value_to_set = f"{filtered_default_values[key]} (default)" item1 = QTableWidgetItem(value_to_set) item1.setToolTip(textwrap.fill(value.doc)) self.options_form.setItem(row, 1, item1) self.options_form.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.options_form.setSortingEnabled(True) self.options_form.cellChanged.connect(self.options_form_changed)