def update_links_view(self): self.ui.links_table.clearContents() self.ui.links_table.setRowCount(0) # IMPORTANT otherwise perf drops table_header = self.ui.links_table.horizontalHeader() table_header.setResizeMode(QtGui.QHeaderView.Interactive) l = 0 self.record_stream.flush() f = open(self.record_file) lines = f.readlines() self.ui.links_table.setRowCount(len(lines)) linkre = re.compile( '^value link: from: ([^ ,]+) *to: ([^ ]+) *, value: ([^ ]+).*$') links_orgs = {} for line in lines: match = linkre.match(line) if match: link_source = match.group(1) link_dest = match.group(2) plug_value = match.group(3) self.ui.links_table.setItem(l, 0, QtGui.QTableWidgetItem('%04d' % l)) self.ui.links_table.setItem( l, self.PLUG, QtGui.QTableWidgetItem(link_source)) self.ui.links_table.setItem(l, self.PROPAGATE, QtGui.QTableWidgetItem(link_dest)) self.ui.links_table.setItem(l, self.VALUE, QtGui.QTableWidgetItem(plug_value)) links_orgs.setdefault(link_dest, []).append(l) if link_source in links_orgs: org = links_orgs[link_source][0] self.ui.links_table.setItem( l, self.CAUSE, QtGui.QTableWidgetItem(self.ui.links_table.item( org, 2))) l += 1 self.links_orgs = links_orgs table_header.setResizeMode(QtGui.QHeaderView.ResizeToContents) #table_header.setResizeMode(1, QtGui.QHeaderView.ResizeToContents) #table_header.setResizeMode(2, QtGui.QHeaderView.ResizeToContents) #table_header.setResizeMode(3, QtGui.QHeaderView.ResizeToContents) #table_header.setResizeMode(4, QtGui.QHeaderView.ResizeToContents) #table_header.setResizeMode(QtGui.QHeaderView.Interactive) QtGui.qApp.processEvents() #table_header.resizeSection(0, table_header.sectionSizeHint(0)) #table_header.resizeSection(1, table_header.sectionSizeHint(1)) #table_header.resizeSection(2, table_header.sectionSizeHint(2)) #table_header.resizeSection(3, table_header.sectionSizeHint(3)) #table_header.resizeSection(4, table_header.sectionSizeHint(4)) table_header.setResizeMode(QtGui.QHeaderView.Interactive)
def __init__(self, missing_inputs, overwritten_outputs, parent=None): super(PipelineFileWarningWidget, self).__init__( QtCore.Qt.Vertical, parent) """ Builds the check widget. Parameters ---------- missing_inputs: mapping iterable (mandatory) a dict node: (list of pairs (param_name, file_name)) as output of :py:func:`capsul.pipeline_tools.nodes_with_missing_inputs` overwritten_outputs: mapping iterable (mandatory) a dict node: (list of pairs (param_name, file_name)) as output of :py:func:`capsul.pipeline_tools.nodes_with_existing_outputs` parent: QWidget (optional) parent widget """ splitter = self widget1 = QtGui.QWidget(splitter) layout1 = QtGui.QVBoxLayout(widget1) widget2 = QtGui.QWidget(splitter) layout2 = QtGui.QVBoxLayout(widget2) label = QtGui.QLabel() layout1.addWidget(label) text = '<h1>Pipeline file parameters problems</h1>\n' if len(missing_inputs) == 0: text += '<h2>Inputs: OK</h2>\n' \ '<p>All input file are present.</p>\n' label.setText(text) else: text += '<h2>Inputs: missing files</h2>\n' label.setText(text) table = QtGui.QTableWidget() layout1.addWidget(table) table.setColumnCount(3) sizes = [len(l) for node, l in six.iteritems(missing_inputs)] table.setRowCount(sum(sizes)) table.setHorizontalHeaderLabels( ['node', 'parameter', 'filename']) row = 0 for node_name, items in six.iteritems(missing_inputs): for param_name, file_name in items: if not file_name or file_name is traits.Undefined: file_name = '<temp. file>' table.setItem(row, 0, QtGui.QTableWidgetItem(node_name)) table.setItem(row, 1, QtGui.QTableWidgetItem(param_name)) table.setItem(row, 2, QtGui.QTableWidgetItem(file_name)) row += 1 table.setSortingEnabled(True) table.resizeColumnsToContents() label_out = QtGui.QLabel() layout2.addWidget(label_out) if len(overwritten_outputs) == 0: text = '<h2>Outputs: OK</h2>\n' \ '<p>No output file will be overwritten.</p>\n' label_out.setText(text) else: text = '<h2>Outputs: overwritten files</h2>\n' label_out.setText(text) table = QtGui.QTableWidget() layout2.addWidget(table) table.setColumnCount(3) sizes = [len(l) for node, l in six.iteritems(overwritten_outputs)] table.setRowCount(sum(sizes)) table.setHorizontalHeaderLabels( ['node', 'parameter', 'filename']) row = 0 for node_name, items in six.iteritems(overwritten_outputs): for param_name, file_name in items: if not file_name or file_name is traits.Undefined: file_name = '<temp. file>' table.setItem(row, 0, QtGui.QTableWidgetItem(node_name)) table.setItem(row, 1, QtGui.QTableWidgetItem(param_name)) table.setItem(row, 2, QtGui.QTableWidgetItem(file_name)) row += 1 table.setSortingEnabled(True) table.resizeColumnsToContents()