def reset_gr_tree(self): """ Clear the leaves of the tree only leaving the main node 'workspaces' Returns ------- """ # clear all if self.model() is not None: self.model().clear() # reset workspace data structures self._workspaceNameList = list() self._myHeaderList = list() self._leafDict.clear() # re-initialize the model self._myNumCols = 1 model = QStandardItemModel() model.setColumnCount(self._myNumCols) self.setModel(model) self.init_setup(['G(R) Workspaces']) self.add_main_item('workspaces', append=True, as_current_index=False) self.add_main_item('SofQ', append=False, as_current_index=False) return
def getItemModel(self): """Return a QModel made from the current workspace. This should be set onto a QTableView """ def create_table_item(column, itemname, callable, *args): item = QStandardItem() item.setEditable(False) try: item.setText(callable(*args)) except Exception as exc: logger.warning("Error setting column {} for log {}: {}".format( column, itemname, str(exc))) return item model = QStandardItemModel() model.setHorizontalHeaderLabels(["Name", "Type", "Value", "Units"]) model.setColumnCount(4) for key in self.get_log_names(): log = self.run.getLogData(key) name = create_table_item("Name", key, lambda: log.name) log_type = create_table_item("Type", key, get_type, log) value = create_table_item("Value", key, lambda log: str(get_value(log)), log) unit = create_table_item("Units", key, lambda: log.units) model.appendRow((name, log_type, value, unit)) model.sort(0) return model
def getItemModel(self, searched_key=''): """Return a QModel made from the current workspace. This should be set onto a QTableView. The searched_key allows for filtering log entries. """ def create_table_item(column, itemname, invalid_value_count, log_size, callable, *args): item = QStandardItem() item.setEditable(False) #format if there is invalid data entries if invalid_value_count == -1: item.setData(DEEP_RED, Qt.BackgroundRole) item.setToolTip( "All of the values in the log are marked invalid, none of them are filtered." ) elif invalid_value_count > 0: saturation = 10 + (170 * (invalid_value_count / (log_size + invalid_value_count))) item.setData(QColor.fromHsv(0, saturation, 255), Qt.BackgroundRole) aux_verb = "is" if invalid_value_count == 1 else "are" item.setToolTip( f"{invalid_value_count}/{log_size+invalid_value_count} of the values in the log" f" {aux_verb} marked invalid, and {aux_verb} filtered.") try: item.setText(callable(*args)) except Exception as exc: logger.warning("Error setting column {} for log {}: {}".format( column, itemname, str(exc))) return item model = QStandardItemModel() model.setHorizontalHeaderLabels(["Name", "Type", "Value", "Units"]) model.setColumnCount(4) logs_to_highlight = self.get_logs_with_invalid_data() logs_to_hide = self.get_hidden_logs() for key in self.get_log_names(): if key in logs_to_hide: continue if searched_key.casefold() not in key.casefold(): continue invalid_value_count = 0 if key in logs_to_highlight.keys(): invalid_value_count = logs_to_highlight[key] log = self.run.getLogData(key) size = log.size() if hasattr(log, 'size') else 0 name = create_table_item("Name", key, invalid_value_count, size, lambda: log.name) log_type = create_table_item("Type", key, invalid_value_count, size, get_type, log) value = create_table_item("Value", key, invalid_value_count, size, lambda log: get_value(log), log) unit = create_table_item("Units", key, invalid_value_count, size, lambda: log.units) model.appendRow((name, log_type, value, unit)) model.sort(0) return model
class ProcessSelectModel(QObject): def __init__(self, parent=None): super().__init__(parent) self.source_model = QStandardItemModel(parent) self.source_model.setColumnCount(3) self.source_model.setHeaderData(0, Qt.Horizontal, self.tr("Directory"), Qt.DisplayRole) self.source_model.setHeaderData(1, Qt.Horizontal, self.tr("Name"), Qt.DisplayRole) self.source_model.setHeaderData(2, Qt.Horizontal, self.tr("Location"), Qt.DisplayRole)
def custom_tree_view(qtbot): # Setup item model model = QStandardItemModel() model.setColumnCount(len(nodes)) # Setup CustomTreeView to test against main_window = MainWindow() custom_tree_view = CustomizedTreeView(main_window) custom_tree_view._myNumCols = len(nodes) custom_tree_view.setModel(model) return custom_tree_view
def getItemModel(self): """Return a QModel made from the current workspace. This should be set onto a QTableView """ model = QStandardItemModel() model.setHorizontalHeaderLabels(["Name", "Type", "Value", "Units"]) model.setColumnCount(4) for key in self.get_log_names(): log = self.run.getLogData(key) name = QStandardItem() name.setText(log.name) name.setEditable(False) log_type = QStandardItem() log_type.setText(get_type(log)) log_type.setEditable(False) value = QStandardItem() value.setText(str(get_value(log))) value.setEditable(False) unit = QStandardItem() unit.setText(log.units) unit.setEditable(False) model.appendRow((name, log_type, value, unit)) model.sort(0) return model
if self.cutSelectedCellsAction is not None: self.cutSelectedCellsAction.setVisible(True) self.cutSelectedCellsAction.setEnabled(True) if self.copySingleCellAction is not None: self.copySingleCellAction.setVisible(False) self.copySingleCellAction.setEnabled(False) super(TableView, self).setSelectionMode(mode) if __name__ == "__main__": from qtpy.QtGui import QStandardItemModel app = QApplication([]) # tablewidget = TableWidget() # tablewidget.setWindowTitle("TableWidget") # tablewidget.setColumnCount(10) # tablewidget.setRowCount(7) # tablewidget.enableCut() # tablewidget.enablePaste() # tablewidget.show() tableview = TableView(cut=True, paste=True) tableview.setWindowTitle("TableView") model = QStandardItemModel() model.setColumnCount(10) model.setRowCount(7) tableview.setModel(model) tableview.show() app.exec_()