コード例 #1
0
 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)
コード例 #2
0
    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()