Beispiel #1
0
 def on_reload_atlas_clicked(self, p0=None):
     """Reload the atlas. Regardless there has any old data."""
     self.engine = self.graph_engine.currentText().split(" - ")[1]
     self.Topologic_result.clear()
     if self.answer:
         progdlg = QProgressDialog(
             "Drawing atlas...",
             "Cancel",
             0,
             len(self.answer),
             self
         )
         progdlg.setWindowTitle("Type synthesis")
         progdlg.resize(400, progdlg.height())
         progdlg.setModal(True)
         progdlg.show()
         for i, G in enumerate(self.answer):
             QCoreApplication.processEvents()
             if progdlg.wasCanceled():
                 return
             if self.drawAtlas(i, G):
                 progdlg.setValue(i+1)
             else:
                 break
         progdlg.setValue(progdlg.maximum())
Beispiel #2
0
    def __typeCombine(self, row: int) -> List[Graph]:
        """Combine and show progress dialog."""
        item = self.Expression_number.item(row)
        progdlg = QProgressDialog("Analysis of the topology...", "Cancel", 0,
                                  100, self)
        progdlg.setAttribute(Qt.WA_DeleteOnClose, True)
        progdlg.setWindowTitle("Type synthesis - ({})".format(item.text()))
        progdlg.setMinimumSize(QSize(500, 120))
        progdlg.setModal(True)
        progdlg.show()

        def stopFunc():
            """If stop by GUI."""
            QCoreApplication.processEvents()
            progdlg.setValue(progdlg.value() + 1)
            return progdlg.wasCanceled()

        def setjobFunc(job: str, maximum: float):
            """New job."""
            progdlg.setLabelText(job)
            progdlg.setValue(0)
            progdlg.setMaximum(maximum + 1)

        answer, time = topo(item.links, not self.graph_degenerate.isChecked(),
                            setjobFunc, stopFunc)
        self.time_label.setText("{}[min] {:.2f}[s]".format(
            int(time // 60), time % 60))
        progdlg.setValue(progdlg.maximum())
        if answer:
            return [Graph(G.edges) for G in answer]
Beispiel #3
0
def check_update(progdlg: QProgressDialog) -> [str, bool]:
    """Check for update."""
    m = progdlg.maximum()
    from core.QtModules import QCoreApplication
    for i in range(m):
        QCoreApplication.processEvents()
        if progdlg.wasCanceled():
            return
        next = list(VERSION[:m])
        next[i] += 1
        url = "https://github.com/KmolYuan/Pyslvs-PyQt5/releases/tag/v{}.{:02}.{}".format(
            *next)
        request = requests.get(url)
        progdlg.setValue(i + 1)
        if request.status_code == 200:
            progdlg.setValue(m)
            return url
    return False
Beispiel #4
0
def check_update(dlg: QProgressDialog) -> str:
    """Check for update."""
    m = dlg.maximum()
    for i in range(m):
        QCoreApplication.processEvents()
        if dlg.wasCanceled():
            return ""
        next_ver = list(__version__[:m])
        next_ver[i] += 1
        url = (
            "https://github.com/KmolYuan/Pyslvs-PyQt5/releases/tag/"
            f"v{next_ver[0]}.{next_ver[1]:02}.{next_ver[2]}"
        )
        request = requests.get(url)
        dlg.setValue(i + 1)
        if request.status_code == 200:
            dlg.setValue(m)
            return url
    return ""
Beispiel #5
0
 def on_reload_atlas_clicked(self, p0=None):
     """Reload atlas with the engine."""
     if not self.collections:
         return
     self.collections_layouts.clear()
     self.collection_list.clear()
     self.selection_window.clear()
     self.Expression_edges.clear()
     self.NL.setText('0')
     self.NJ.setText('0')
     self.DOF.setText('0')
     self.grounded_list.clear()
     progdlg = QProgressDialog("Drawing atlas...", "Cancel", 0,
                               len(self.collections), self)
     progdlg.setAttribute(Qt.WA_DeleteOnClose, True)
     progdlg.setWindowTitle("Type synthesis")
     progdlg.resize(400, progdlg.height())
     progdlg.setModal(True)
     progdlg.show()
     engineSTR = self.graph_engine.currentText().split(" - ")[1]
     for i, G in enumerate(self.collections):
         QCoreApplication.processEvents()
         if progdlg.wasCanceled():
             return
         item = QListWidgetItem("No. {}".format(i + 1))
         try:
             engine = engine_picker(G, engineSTR)
             item.setIcon(
                 graph(G,
                       self.collection_list.iconSize().width(), engine))
         except EngineError as e:
             progdlg.setValue(progdlg.maximum())
             self.engineErrorMsg(e)
             break
         else:
             self.collections_layouts.append(engine)
             item.setToolTip(
                 "{}\nUse the right-click menu to operate.".format(G.edges))
             self.collection_list.addItem(item)
             progdlg.setValue(i + 1)