示例#1
0
 def test_extend_with_tuple(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.extend((9, 10, 11, 12))
     self.assertSequenceEqual(D1,
                              DistinctList(
                                  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),
                              seq_type=DistinctList)
示例#2
0
 def __init__(self, brush=None, inputs=None, **kwargs):
     """
     Initialize the node.
     :type brush: QBrush
     """
     super().__init__(brush=QtGui.QBrush(QtGui.QColor(252, 252, 252, 255)), **kwargs)
     self.inputs = inputs or DistinctList()
     self.label = NodeLabel('key', pos=self.center, editable=False, movable=False, parent=self)
示例#3
0
    def run(self, path):
        """
        Perform CSV file generation.
        :type path: str
        """
        if self.diagrams is None:
            dialog = DiagramSelectionDialog(self.session)
            if not dialog.exec_():
                return
            self.diagrams = dialog.selectedDiagrams()

        LOGGER.info(
            'Exporting selected diagrams in project %s in CSV format: %s',
            self.project.name, path)
        collection = {x: {} for x in self.Types}

        for diagram in self.diagrams:
            nodes = self.project.predicates(diagram=diagram)
            for node in nodes:
                if node.type() in collection:
                    if not node.text() in collection[node.type()]:
                        meta = self.project.meta(node.type(), node.text())
                        collection[node.type()][node.text()] = {
                            CsvExporter.KeyName:
                            node.text().replace('\n', ''),
                            CsvExporter.KeyType:
                            node.shortName,
                            CsvExporter.KeyDescription:
                            self.plainText(meta.get(K_DESCRIPTION, '')),
                            CsvExporter.KeyDiagrams:
                            DistinctList()
                        }
                    collection[node.type()][node.text()][self.KeyDiagrams] += [
                        node.diagram.name
                    ]

        buffer = io.StringIO()
        writer = csv.writer(buffer,
                            delimiter=',',
                            quotechar='"',
                            quoting=csv.QUOTE_ALL)
        writer.writerow((self.KeyName, self.KeyType, self.KeyDescription,
                         self.KeyDiagrams))
        for i, j in sorted(((v, k) for k in collection for v in collection[k]),
                           key=itemgetter(0)):
            writer.writerow((
                collection[j][i][self.KeyName],
                collection[j][i][self.KeyType],
                collection[j][i][self.KeyDescription],
                sorted(collection[j][i][self.KeyDiagrams]),
            ))

        fwrite(buffer.getvalue(), path)

        if self.open:
            openPath(path)
示例#4
0
    def run(self, path):
        """
        Perform CSV file generation.
        :type path: str
        """
        diagrams_selection_dialog = DiagramsSelectionDialog(
            self.project, self.session)
        diagrams_selection_dialog.exec_()
        self.selected_diagrams = diagrams_selection_dialog.diagrams_selected

        LOGGER.info(
            'Exporting selected diagrams in project %s in CSV format: %s',
            self.project.name, path)
        collection = {x: {} for x in self.Types}

        for diag in self.selected_diagrams:
            nodes = self.project.predicates(diagram=diag)
            for node in nodes:
                if node.type() in collection:
                    if not node.text() in collection[node.type()]:
                        meta = self.project.meta(node.type(), node.text())
                        collection[node.type()][node.text()] = {
                            #CsvExporter.KeyName: lstrip(OWLShortIRI('', node.text()), ':'),
                            CsvExporter.KeyName:
                            node.text().replace('\n', ''),
                            CsvExporter.KeyType:
                            node.shortName,
                            #CsvExporter.KeyDescription: meta.get(K_DESCRIPTION, ''),
                            CsvExporter.KeyDescription:
                            QtWidgets.QTextEdit(meta.get(K_DESCRIPTION,
                                                         '')).toPlainText(),
                            CsvExporter.KeyDiagrams:
                            DistinctList()
                        }
                    collection[node.type()][node.text()][self.KeyDiagrams] += [
                        node.diagram.name
                    ]

        buffer = io.StringIO()
        writer = csv.writer(buffer)
        writer.writerow((self.KeyName, self.KeyType, self.KeyDescription,
                         self.KeyDiagrams))
        for i, j in sorted(((v, k) for k in collection for v in collection[k]),
                           key=itemgetter(0)):
            writer.writerow((
                collection[j][i][self.KeyName],
                collection[j][i][self.KeyType],
                collection[j][i][self.KeyDescription],
                sorted(collection[j][i][self.KeyDiagrams]),
            ))

        fwrite(buffer.getvalue(), path)

        openPath(path)
示例#5
0
文件: properties.py 项目: Jeket/eddy
 def orderingChanged(self):
     """
     Change the order of inputs edges.
     :rtype: QUndoCommand
     """
     if self.node.inputs:
         inputs = DistinctList()
         for i in range(0, self.list.count()):
             item = self.list.item(i)
             inputs.append(item.data(QtCore.Qt.UserRole))
         if self.node.inputs != inputs:
             return CommandNodeChangeInputsOrder(self.diagram, self.node, inputs)
     return None
示例#6
0
 def __init__(self, width=52, height=30, brush=None, inputs=None, **kwargs):
     """
     Initialize the node.
     :type width: int
     :type height: int
     :type brush: QBrush
     :type inputs: DistinctList
     """
     super().__init__(**kwargs)
     brush = PropertyAssertionNode.DefaultBrush
     pen = PropertyAssertionNode.DefaultPen
     self.inputs = inputs or DistinctList()
     self.background = Polygon(QtCore.QRectF(-34, -19, 68, 38))
     self.selection = Polygon(QtCore.QRectF(-34, -19, 68, 38))
     self.polygon = Polygon(QtCore.QRectF(-26, -15, 52, 30), brush, pen)
示例#7
0
 def onSessionClosed(self):
     """
     Quit Eddy.
     """
     ## SAVE SESSION STATE
     session = self.sender()
     if session:
         session.save()
         self.sessions.remove(session)
     ## CLEANUP POSSIBLE LEFTOVERS
     self.sessions = DistinctList(filter(None, self.sessions))
     ## SWITCH TO AN ACTIVE WINDOW OR WELCOME PANEL
     if self.sessions:
         session = self.sessions[-1]
         session.show()
     else:
         self.welcome = Welcome(self)
         self.welcome.show()
示例#8
0
    def run(self, path):
        """
        Perform CSV file generation.
        :type path: str
        """
        LOGGER.info('Exporting project %s in CSV format: %s',
                    self.project.name, path)
        collection = {x: {} for x in self.Types}

        for node in self.project.predicates():
            if node.type() in collection:
                if not node.text() in collection[node.type()]:
                    meta = self.project.meta(node.type(), node.text())
                    collection[node.type()][node.text()] = {
                        CsvExporter.KeyName:
                        lstrip(OWLShortIRI('', node.text()), ':'),
                        CsvExporter.KeyType:
                        node.shortName,
                        CsvExporter.KeyDescription:
                        meta.get(K_DESCRIPTION, ''),
                        CsvExporter.KeyDiagrams:
                        DistinctList()
                    }
                collection[node.type()][node.text()][self.KeyDiagrams] += [
                    node.diagram.name
                ]

        buffer = io.StringIO()
        writer = csv.writer(buffer)
        writer.writerow((self.KeyName, self.KeyType, self.KeyDescription,
                         self.KeyDiagrams))
        for i, j in sorted(((v, k) for k in collection for v in collection[k]),
                           key=itemgetter(0)):
            writer.writerow((
                collection[j][i][self.KeyName],
                collection[j][i][self.KeyType],
                collection[j][i][self.KeyDescription],
                sorted(collection[j][i][self.KeyDiagrams]),
            ))

        fwrite(buffer.getvalue(), path)

        openPath(path)
示例#9
0
    def __init__(self, options, argv):
        """
        Initialize Eddy.
        :type options: Namespace
        :type argv: list
        """
        super().__init__(argv)

        self.server = None
        self.socket = QtNetwork.QLocalSocket()
        self.socket.connectToServer(APPID)
        self.running = self.socket.waitForConnected()
        self.sessions = DistinctList()
        self.welcome = None

        if not self.isRunning() or options.tests:
            self.server = QtNetwork.QLocalServer()
            self.server.listen(APPID)
            self.socket = None
            connect(self.sgnCreateSession, self.doCreateSession)
示例#10
0
文件: application.py 项目: Jeket/eddy
    def __init__(self, argv):
        """
        Initialize Eddy.
        :type argv: list
        """
        super().__init__(argv)

        self.openFilePath = None
        self.server = None
        self.sessions = DistinctList()
        self.started = False
        self.welcome = None

        # APPLICATION INFO
        self.setDesktopFileName('{}.{}'.format(ORGANIZATION_REVERSE_DOMAIN,
                                               APPNAME))
        self.setOrganizationName(ORGANIZATION)
        self.setOrganizationDomain(ORGANIZATION_DOMAIN)
        self.setApplicationName(APPNAME)
        self.setApplicationDisplayName(APPNAME)
        self.setApplicationVersion(VERSION)

        # PARSE COMMAND LINE ARGUMENTS
        self.options = CommandLineParser()
        self.options.process(argv)

        # CHECK FOR A RUNNING INSTANCE
        self.socket = QtNetwork.QLocalSocket()
        self.socket.connectToServer(APPID)
        self.running = self.socket.waitForConnected()
        if not self.isRunning():
            QtNetwork.QLocalServer.removeServer(APPID)
            self.server = QtNetwork.QLocalServer()
            self.server.listen(APPID)
            self.socket = None
            connect(self.sgnCreateSession, self.doCreateSession)

        connect(self.aboutToQuit, self.onAboutToQuit)
示例#11
0
 def test_remove_with_no_match(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.remove(9)
     self.assertSequenceEqual(D1,
                              DistinctList([1, 2, 3, 4, 5, 6, 7, 8]),
                              seq_type=DistinctList)
示例#12
0
 def test_constructor_with_list(self):
     D1 = DistinctList([1, 2, 3, 3, 4, 1, 4, 5, 6, 7, 7, 8, 2])
     assert D1 == DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
示例#13
0
 def test_insert(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.insert(5, 9)
     self.assertSequenceEqual(D1,
                              DistinctList([1, 2, 3, 4, 5, 9, 6, 7, 8]),
                              seq_type=DistinctList)
示例#14
0
 def test_append(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.append(9)
     self.assertSequenceEqual(D1,
                              DistinctList([1, 2, 3, 4, 5, 6, 7, 8, 9]),
                              seq_type=DistinctList)
示例#15
0
 def test_constructor_with_set(self):
     self.assertEqual(8, len(DistinctList({1, 2, 3, 4, 5, 6, 7, 8})))
示例#16
0
 def test_constructor_with_tuple(self):
     D1 = DistinctList((1, 2, 3, 3, 4, 1, 4, 5, 6, 7, 7, 8, 2))
     self.assertSequenceEqual(D1,
                              DistinctList((1, 2, 3, 4, 5, 6, 7, 8)),
                              seq_type=DistinctList)
示例#17
0
 def test_constructor_with_list(self):
     D1 = DistinctList([1, 2, 3, 3, 4, 1, 4, 5, 6, 7, 7, 8, 2])
     self.assertSequenceEqual(D1,
                              DistinctList([1, 2, 3, 4, 5, 6, 7, 8]),
                              seq_type=DistinctList)
示例#18
0
 def test_constructor_with_tuple(self):
     D1 = DistinctList((1, 2, 3, 3, 4, 1, 4, 5, 6, 7, 7, 8, 2))
     assert D1 == DistinctList((1, 2, 3, 4, 5, 6, 7, 8))
示例#19
0
 def test_constructor_with_set(self):
     assert 8 == len(DistinctList({1, 2, 3, 4, 5, 6, 7, 8}))
示例#20
0
 def test_append(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.append(9)
     assert D1 == DistinctList([1, 2, 3, 4, 5, 6, 7, 8, 9])
示例#21
0
 def test_insert(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.insert(5, 9)
     assert D1 == DistinctList([1, 2, 3, 4, 5, 9, 6, 7, 8])
示例#22
0
 def test_remove_with_no_match(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.remove(9)
     assert D1 == DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
示例#23
0
 def test_extend_with_tuple(self):
     D1 = DistinctList([1, 2, 3, 4, 5, 6, 7, 8])
     D1.extend((9, 10, 11, 12))
     assert D1 == DistinctList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])