Пример #1
0
    def __init__(self):
        """ Sets up the Qt UI. """

        super().__init__()
        QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)

        signal.signal(signal.SIGINT, signal.SIG_DFL)  # fix SIGINT handling - cleanly exit on ctrl+c

        self.app = QApplication.instance() or QApplication([])

        try:
            import qt_material

            qt_material.apply_stylesheet(self.app, 'light_blue.xml')
        except ImportError:
            pass

        self.ui_file = QtCore.QFile(os.path.dirname(os.path.realpath(__file__)) + '/qt.ui')
        self.loader = QUiLoader()
        self.loader.registerCustomWidget(ViewSBQTreeWidget)
        self.loader.registerCustomWidget(ViewSBHexView)
        self.window = self.loader.load(self.ui_file) # type: QMainWindow

        # Swap columns 0 and 5 to put the expand arrow on the summary column.
        self.window.usb_tree_widget.header().swapSections(self.COLUMN_SUMMARY, self.COLUMN_SEQUENCE)

        self.window.usb_tree_widget.header().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)

        self.window.update_timer = QtCore.QTimer()
        self.window.update_timer.timeout.connect(self._update)

        self.window.usb_tree_widget.currentItemChanged.connect(self._tree_current_item_changed)

        self.window.usb_tree_widget = self.window.usb_tree_widget
        self.window.usb_tree_widget.sortByColumn(0, Qt.SortOrder.AscendingOrder)
Пример #2
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.app: QCoreApplication = QApplication.instance()

        self.shortcut_close = QShortcut(QKeySequence("Ctrl+w"), self)
        self.shortcut_close.activated.connect(self.hide)
Пример #3
0
 def __init__(self, parent=None):
     QPlainTextEdit.__init__(self, parent)
     logging.Handler.__init__(self)
     self.app = QApplication.instance()
     self.setReadOnly(True)
     self.notification = None  # Here is QLabel element to display LOG update status
     self.clear_color = None  # Variable to store initial "clear" background color
Пример #4
0
    def setup(self):
        btn_quit = QPushButton('Quit', self)
        btn_quit.clicked.connect(QApplication.instance().quit)
        btn_quit.resize(btn_quit.sizeHint())
        btn_quit.move(100, 100)

        self.setGeometry(300, 300, 300, 300)
        self.setWindowTitle('PySide6 Example')

        self.show()
Пример #5
0
 def __init__(self, parent=None):
     QPlainTextEdit.__init__(self, parent)
     logging.Handler.__init__(self)
     self.app = QApplication.instance()
     self.setReadOnly(True)
     self.status_bar = None  # Status bar where notifications and control are located
     self.expandButton = None  # Button that shows/hides log window
     self.notification = None  # Here is QLabel element to display LOG update status
     self.clear_color = None  # Variable to store initial "clear" background color
     self.collapsed_text = self.tr("▶ logs")
     self.expanded_text = self.tr("▲ logs")
Пример #6
0
    def __init__(self, parent, programInstance: ProgramInstance, listWidget):
        super().__init__(parent)

        self._programInstance = programInstance

        self.listWidget = listWidget

        container = QWidget()
        self.setAutoFillBackground(True)
        clayout = QVBoxLayout()
        self.setLayout(clayout)
        self.layout().addWidget(container)

        self._editButton = QPushButton("Edit")
        self._editButton.clicked.connect(
            lambda: self.onEdit.emit(self._programInstance.program))
        self._deleteButton = QPushButton("Delete")
        self._deleteButton.clicked.connect(
            lambda: self.onDelete.emit(self._programInstance.program))

        layout = QVBoxLayout()
        container.setLayout(layout)

        QApplication.instance().installEventFilter(self)

        self._instanceWidget = ProgramInstanceWidget(programInstance, False)
        layout.addWidget(self._instanceWidget)
        layout.addWidget(self._editButton)
        layout.addWidget(self._deleteButton)

        self.setFocusPolicy(Qt.ClickFocus)

        timer = QTimer(self)
        timer.timeout.connect(self.Reposition)
        timer.start(30)

        self.Reposition()
        self.show()
        self.raise_()
Пример #7
0
 def _getPixelRatio():
     if PyQtImpl in ["PyQt5", "PySide2", "PySide6"]:
         # Source: https://stackoverflow.com/a/40053864/3388962
         pos = QCursor.pos()
         for screen in QApplication.screens():
             rect = screen.geometry()
             if rect.contains(pos):
                 return screen.devicePixelRatio()
         # Should never happen, but try to find a good fallback.
         return QApplication.instance().devicePixelRatio()
     else:
         # Qt4 seems not to provide any cross-platform means to get the
         # pixel ratio.
         return 1.
Пример #8
0
def explore_signature_library(sig_trie):
    """
	Display an in-memory signature trie in the signature explorer GUI.
	:param sig_trie: instance of `TrieNode`
	"""
    if not QApplication.instance():
        app = QApplication(sys.argv)
    else:
        app = None
    widget = App()
    widget.show()
    widget.open_trie(sig_trie, '(memory)')
    if app:
        app.exec_()
Пример #9
0
 def setup_window(self):
     self.setWindowTitle("API Data GUI")
     display_list = QListWidget(self)
     self.list_control = display_list
     self.put_data_in_list(self.data)
     display_list.resize(400, 350)
     self.setGeometry(300, 100, 400, 500)
     quit_button = QPushButton("Quit Now", self)
     quit_button.clicked.connect(QApplication.instance().quit)
     quit_button.resize(quit_button.sizeHint())
     quit_button.move(300, 400)
     api_db_demo_button = QPushButton("Push me for Data Visual", self)
     api_db_demo_button.move(100, 400)
     api_db_demo_button.clicked.connect(self.do_something_to_test)
     self.show()
Пример #10
0
    def createActions(self):
        self.newLetterAct = QAction(QIcon.fromTheme('document-new',
                                                    QIcon(':/images/new.png')),
                                    "&New Letter",
                                    self,
                                    shortcut=QKeySequence.New,
                                    statusTip="Create a new form letter",
                                    triggered=self.newLetter)

        self.saveAct = QAction(QIcon.fromTheme('document-save',
                                               QIcon(':/images/save.png')),
                               "&Save...",
                               self,
                               shortcut=QKeySequence.Save,
                               statusTip="Save the current form letter",
                               triggered=self.save)

        self.printAct = QAction(QIcon.fromTheme('document-print',
                                                QIcon(':/images/print.png')),
                                "&Print...",
                                self,
                                shortcut=QKeySequence.Print,
                                statusTip="Print the current form letter",
                                triggered=self.print_)

        self.undoAct = QAction(QIcon.fromTheme('edit-undo',
                                               QIcon(':/images/undo.png')),
                               "&Undo",
                               self,
                               shortcut=QKeySequence.Undo,
                               statusTip="Undo the last editing action",
                               triggered=self.undo)

        self.quitAct = QAction("&Quit",
                               self,
                               shortcut="Ctrl+Q",
                               statusTip="Quit the application",
                               triggered=self.close)

        self.aboutAct = QAction("&About",
                                self,
                                statusTip="Show the application's About box",
                                triggered=self.about)

        self.aboutQtAct = QAction("About &Qt",
                                  self,
                                  statusTip="Show the Qt library's About box",
                                  triggered=QApplication.instance().aboutQt)
Пример #11
0
 def setup_window(self):
     self.setWindowTitle("GUI Demo for Capstone")
     display_list = QListWidget(self)
     self.list_control = display_list
     self.put_data_in_list(self.data)
     display_list.resize(400, 350)
     self.setGeometry(300, 100, 400, 500)
     quit_button = QPushButton("Quit Now", self)
     quit_button.clicked.connect(QApplication.instance().quit)
     quit_button.resize(quit_button.sizeHint())
     quit_button.move(300, 400)
     comp490_demo_button = QPushButton("Push me for Demo", self)
     comp490_demo_button.move(100, 400)
     comp490_demo_button.clicked.connect(self.do_something_to_demo)
     # comp490_demo_button.resize(123, 35)
     self.show()
Пример #12
0
    def gui_components(self):
        update_data = QPushButton("Update Data", self)
        update_data.clicked.connect(self.update_data)
        update_data.resize(update_data.sizeHint())
        update_data.move(20, 25)

        render_data_button = QPushButton("Render data analysis", self)
        render_data_button.clicked.connect(self.render_data)
        render_data_button.move(140, 25)
        render_data_button.resize(render_data_button.sizeHint())

        quit_button = QPushButton("Exit", self)
        quit_button.clicked.connect(QApplication.instance().quit)
        quit_button.clicked.connect(QCloseEvent)
        quit_button.resize(quit_button.sizeHint())
        quit_button.move(300, 25)
        quit_button.setToolTip("Quit program")
Пример #13
0
	def signature_explorer(prompt=True):
		"""
		Open the signature explorer UI.
		:param prompt: if True, prompt the user to open a file immediately.
		:return: `App`, a QT window
		"""
		if "qt_major_version" in binaryninjaui.__dict__ and binaryninjaui.qt_major_version == 6:
			from PySide6.QtWidgets import QApplication
		else:
			from PySide2.QtWidgets import QApplication
		app = QApplication.instance()
		global widget # avoid lifetime issues from it falling out of scope
		widget = sigexplorer.App()
		if prompt:
			widget.open_file()
		widget.show()
		if app: # VERY IMPORTANT to avoiding lifetime issues???
			app.exec_()
		return widget
Пример #14
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.l, m = load_gif(self)
        self.l.setGeometry(0, 0, 20, 20)

        self.app: QApplication = QApplication.instance()

        self.calc: QThread = QThread()
        self.frm: QFrame = QFrame(self)
        self.tray_icon_menu: QMenu = QMenu(self)
        self.tray_icon: QSystemTrayIcon = QSystemTrayIcon(self)

        self.app.view_main = self
        Setting()
        About()
        self.init_settings()
        self.init_main_window()
        self.init_tray_icon()
        self.init_frm()

        self.setAttribute(Qt.WA_TransparentForMouseEvents)

        self.shortcut_settings = QShortcut(QKeySequence("Ctrl+,"), self)
        self.shortcut_settings.activated.connect(self.show_settings)
        self.shortcut_refresh = QShortcut(QKeySequence("Ctrl+r"), self)
        self.shortcut_refresh.activated.connect(self.start_to_hope)
        self.shortcut_refresh = QShortcut(QKeySequence("Ctrl+q"), self)
        self.shortcut_refresh.activated.connect(self.close)

        if 'darwin' in sys.platform:
            menubar = self.menuBar()
            hope_menu = menubar.addMenu('Hope')

            hope_menu.addAction(
                QAction('About', self, triggered=self.show_about))
            hope_menu.addAction(
                QAction('Settings', self, triggered=self.show_settings))

        self.show()
        # self.show_settings()
        self.start_to_check_update()
Пример #15
0
async def main():
    def close_future(fut, loo):
        loo.call_later(10, fut.cancel)
        fut.cancel("Close Application")

    loop = asyncio.get_event_loop()
    future = asyncio.Future()

    app = QApplication.instance()
    if hasattr(app, 'aboutToQuit'):
        getattr(app, 'aboutToQuit') \
            .connect(functools.partial(close_future, future, loop))

    main_window = MainWindow()
    main_window.add_service(DummyService())
    main_window.add_service(DummyService())
    main_window.add_service(DummyService())
    main_window.show()

    await future

    return True
    def __init__(self, config: Config) -> None:
        super().__init__()

        hbox = QtWidgets.QHBoxLayout(self)

        btn_ingest = QPushButton('Ingest Data', self)
        btn_ingest.resize(btn_ingest.sizeHint())
        btn_ingest.clicked.connect(self.open_ingest)

        btn_train = QPushButton('Train Model', self)
        btn_train.resize(btn_train.sizeHint())
        btn_train.clicked.connect(self.open_training)

        btn_predict = QPushButton('Predict', self)
        btn_predict.resize(btn_predict.sizeHint())
        btn_predict.clicked.connect(self.open_prediction)

        btn_quit = QPushButton('Force Quit', self)
        btn_quit.clicked.connect(QApplication.instance().quit)
        btn_quit.resize(btn_quit.sizeHint())

        hbox.addWidget(btn_ingest)
        hbox.addWidget(btn_train)
        hbox.addWidget(btn_predict)
        hbox.addWidget(btn_quit)

        self.setWindowTitle('Crypto Futures')
        self.show()
        self.setFixedSize(self.size())

        self._ingest = IngestWindow(config)
        self._ingest.setWindowTitle('Ingest Data')

        self._training = TrainingWindow()
        self._training.setWindowTitle('Training')

        self._predict = PredictionWindow()
        self._predict.setWindowTitle('Predictions')
Пример #17
0
 def connect_signals_and_slots(self):
     self.actionExit.triggered.connect(QApplication.instance().quit)
     self.actionOperations.triggered.connect(self.createOperationsWindow)
     self.actionAbout.triggered.connect(self.showAboutWindow)
     self.langGroup.triggered.connect(self.onLanguageChanged)
     self.statementGroup.triggered.connect(self.statements.load)
     self.reportsGroup.triggered.connect(self.reports.show)
     self.action_LoadQuotes.triggered.connect(partial(self.downloader.showQuoteDownloadDialog, self))
     self.actionImportSlipRU.triggered.connect(self.importSlip)
     self.actionBackup.triggered.connect(self.backup.create)
     self.actionRestore.triggered.connect(self.backup.restore)
     self.action_Re_build_Ledger.triggered.connect(partial(self.ledger.showRebuildDialog, self))
     self.actionAccountTypes.triggered.connect(partial(self.onDataDialog, "account_types"))
     self.actionAccounts.triggered.connect(partial(self.onDataDialog, "accounts"))
     self.actionAssets.triggered.connect(partial(self.onDataDialog, "assets"))
     self.actionPeers.triggered.connect(partial(self.onDataDialog, "agents"))
     self.actionCategories.triggered.connect(partial(self.onDataDialog, "categories"))
     self.actionTags.triggered.connect(partial(self.onDataDialog, "tags"))
     self.actionCountries.triggered.connect(partial(self.onDataDialog, "countries"))
     self.actionQuotes.triggered.connect(partial(self.onDataDialog, "quotes"))
     self.PrepareTaxForms.triggered.connect(partial(self.mdiArea.addSubWindow, TaxWidget(self), maximized=True))
     self.downloader.download_completed.connect(self.updateWidgets)
     self.ledger.updated.connect(self.updateWidgets)
     self.statements.load_completed.connect(self.onStatementImport)
Пример #18
0
 def instance(self) -> QApplication:
     match QApplication.instance():
         case None: return self
         case a: return MainApp(a)
Пример #19
0
 def connect_signals_and_slots(self):
     self.actionExit.triggered.connect(QApplication.instance().quit)
     self.actionAbout.triggered.connect(self.showAboutWindow)
     self.langGroup.triggered.connect(self.onLanguageChanged)
     self.statementGroup.triggered.connect(self.statements.load)
     self.actionReconcile.triggered.connect(
         self.reconcileAtCurrentOperation)
     self.action_Load_quotes.triggered.connect(
         partial(self.downloader.showQuoteDownloadDialog, self))
     self.actionImportSlipRU.triggered.connect(self.importSlip)
     self.actionBackup.triggered.connect(self.backup.create)
     self.actionRestore.triggered.connect(self.backup.restore)
     self.action_Re_build_Ledger.triggered.connect(
         partial(self.ledger.showRebuildDialog, self))
     self.actionAccountTypes.triggered.connect(
         partial(self.onDataDialog, "account_types"))
     self.actionAccounts.triggered.connect(
         partial(self.onDataDialog, "accounts"))
     self.actionAssets.triggered.connect(
         partial(self.onDataDialog, "assets"))
     self.actionPeers.triggered.connect(partial(self.onDataDialog,
                                                "agents"))
     self.actionCategories.triggered.connect(
         partial(self.onDataDialog, "categories"))
     self.actionTags.triggered.connect(partial(self.onDataDialog, "tags"))
     self.actionCountries.triggered.connect(
         partial(self.onDataDialog, "countries"))
     self.actionQuotes.triggered.connect(
         partial(self.onDataDialog, "quotes"))
     self.PrepareTaxForms.triggered.connect(
         partial(self.taxes.showTaxesDialog, self))
     self.BalanceDate.dateChanged.connect(
         self.BalancesTableView.model().setDate)
     self.HoldingsDate.dateChanged.connect(
         self.HoldingsTableView.model().setDate)
     self.BalancesCurrencyCombo.changed.connect(
         self.BalancesTableView.model().setCurrency)
     self.BalancesTableView.doubleClicked.connect(self.OnBalanceDoubleClick)
     self.HoldingsCurrencyCombo.changed.connect(
         self.HoldingsTableView.model().setCurrency)
     self.ReportRangeCombo.currentIndexChanged.connect(
         self.onReportRangeChange)
     self.RunReportBtn.clicked.connect(self.onRunReport)
     self.SaveReportBtn.clicked.connect(self.reports.saveReport)
     self.ShowInactiveCheckBox.stateChanged.connect(
         self.BalancesTableView.model().toggleActive)
     self.DateRangeCombo.currentIndexChanged.connect(
         self.OnOperationsRangeChange)
     self.ChooseAccountBtn.changed.connect(
         self.OperationsTableView.model().setAccount)
     self.SearchString.editingFinished.connect(self.updateOperationsFilter)
     self.HoldingsTableView.customContextMenuRequested.connect(
         self.onHoldingsContextMenu)
     self.OperationsTableView.selectionModel().selectionChanged.connect(
         self.OnOperationChange)
     self.OperationsTableView.customContextMenuRequested.connect(
         self.onOperationContextMenu)
     self.DeleteOperationBtn.clicked.connect(self.deleteOperation)
     self.actionDelete.triggered.connect(self.deleteOperation)
     self.CopyOperationBtn.clicked.connect(self.copyOperation)
     self.actionCopy.triggered.connect(self.copyOperation)
     self.downloader.download_completed.connect(self.balances_model.update)
     self.downloader.download_completed.connect(self.holdings_model.update)
     self.statements.load_completed.connect(self.onStatementImport)
     self.ledger.updated.connect(self.balances_model.update)
     self.ledger.updated.connect(self.holdings_model.update)
    def setup_window(self):
        self.setWindowTitle("Jobs Window")
        display_list = QListWidget(self)
        self.list_control = display_list
        display_list.resize(500, 350)
        self.setGeometry(50, 50, 500, 500)
        self.quit_button.clicked.connect(QApplication.instance().quit)
        self.quit_button.resize(self.quit_button.sizeHint())
        self.quit_button.move(415, 450)
        self.update_button.clicked.connect(self.update_data)
        self.update_button.move(200, 200)
        self.data_button.clicked.connect(self.run_data_visualization)
        self.data_button.move(175, 250)
        self.back_button.clicked.connect(self.go_back)
        self.back_button.move(25, 450)
        self.data_visualization_label.move(20, 400)
        self.text_visualization_button.move(400 - self.text_visualization_button.width(), 600)
        self.order_selector_text.move(self.text_visualization_button.x(),
                                      self.text_visualization_button.y()+self.text_visualization_button.height()+10)
        self.text_visualization_button.clicked.connect(self.text_visualization)
        self.map_visualization.move(self.text_visualization_button.x() + self.text_visualization_button.width(),
                                    self.text_visualization_button.y())
        self.data_selector_map.move(self.map_visualization.x(),
                                    self.map_visualization.y()+self.map_visualization.height()+10)
        self.map_visualization.clicked.connect(self.run_map_visualization)
        self.welcome_label.move(150, 150)
        self.update_box_01.move(150, 30)
        self.update_box_02.move(150, 60)
        self.update_box_03.move(150, 90)
        self.update_box_04.move(150, 120)
        self.update_box_05.move(150, 150)
        self.update_box_06.move(150, 180)
        self.update_box_07.move(150, 210)
        self.update_box_08.move(150, 240)
        self.excel_label.move(340, 70)
        self.update_excel_selection.move(340, 90)
        self.update_information.move(25, 325)
        self.update_label_01.setGeometry(5, 30, 145, 20)
        self.update_label_02.setGeometry(5, 60, 145, 20)
        self.update_label_03.setGeometry(5, 90, 145, 20)
        self.update_label_04.setGeometry(5, 120, 145, 20)
        self.update_label_05.setGeometry(5, 150, 145, 20)
        self.update_label_06.setGeometry(5, 180, 145, 20)
        self.update_label_07.setGeometry(5, 210, 145, 20)
        self.update_label_08.setGeometry(5, 240, 145, 20)
        self.table_selection.setGeometry(10, 10, 145, 20)
        self.enter_data.move(10, 260)
        self.enter_data.clicked.connect(self.import_data)
        self.table_selection.addItem("---")
        self.table_selection.addItem("Schools")
        self.table_selection.addItem("Jobs")
        self.order_selector_text.addItem("---")
        self.order_selector_text.addItem("ASC")
        self.order_selector_text.addItem("DESC")
        self.data_selector_map.addItem("---")
        self.data_selector_map.addItem("Employment to Graduates")
        self.data_selector_map.addItem("Average Salary to Average Declining Balance Percent")
        self.table_selection.currentIndexChanged.connect(self.update_selection)
        self.hidden_at_start()

        self.show()
Пример #21
0
    def loadData(self, data: List[str]):
        time = QElapsedTimer()
        time.start()

        # Reset tables
        self.clearTable()
        #self.m_probeModel.clear()
        #self.m_programHeightmapModel.clear()
        self.m_currentModel = self.m_programModel

        # Reset parsers
        self.m_viewParser.reset()
        #self.m_probeParser.reset()

        # Reset code drawer
        self.m_currentDrawer = self.m_codeDrawer
        self.m_codeDrawer.update()
        self.ui.glwVisualizer.fitDrawable(self.m_codeDrawer)
        self.updateProgramEstimatedTime([])

        # Update interface
        #self.ui.chkHeightMapUse.setChecked(False)
        #self.ui.grpHeightMap.setProperty("overrided", False)
        #self.style().unpolish(self.ui.grpHeightMap)
        #self.ui.grpHeightMap.ensurePolished()

        # Reset tableview
        headerState = self.ui.tblProgram.horizontalHeader().saveState()
        self.ui.tblProgram.setModel(None)

        # Prepare parser
        gp = GcodeParser()
        ####gp.setTraverseSpeed(self.m_settings.rapidSpeed())
        gp.setTraverseSpeed(100)

        if self.m_codeDrawer.getIgnoreZ():
            gp.reset(QVector3D(qQNaN(), qQNaN(), 0))

        print("Prepared to load: %s" % time.elapsed())
        time.start()

        # Block parser updates on table changes
        self.m_programLoading = True

        # Prepare model
        self.m_programModel.m_data.clear()
        self.m_programModel.m_data = []

        progress = QProgressDialog("Opening file...", "Abort", 0, len(data),
                                   self)
        progress.setWindowModality(Qt.WindowModal)
        progress.setFixedSize(progress.sizeHint())
        if len(data) > PROGRESSMINLINES:
            progress.show()
            progress.setStyleSheet(
                "QProgressBar {text-align: center qproperty-format: \"\"}")

        while len(data) > 0:

            command = data.pop(0)

            # Trim command
            trimmed = command.strip()

            if len(trimmed) > 0:
                # Split command
                stripped = GcodePreprocessorUtils.removeComment(command)
                args = GcodePreprocessorUtils.splitCommand(stripped)

                gp.addCommand(args)

                item = GCodeItem()

                item.command = trimmed
                item.state = GCodeItem.States.InQueue
                item.line = gp.getCommandNumber()
                item.args = args

                self.m_programModel.m_data.append(item)

            if progress.isVisible() and (len(data) % PROGRESSSTEP == 0):
                progress.setValue(progress.maximum() - len(data))
                QApplication.instance().processEvents()
                if progress.wasCanceled():
                    break

        progress.close()

        self.m_programModel.insertRow(self.m_programModel.rowCount())
        print("model filled: %s ms." % time.elapsed())

        time.start()

        arcPrecision = 0.0  # TODO self.m_settings.arcPrecision()
        arcDegreeMode = False  # TODO self.m_settings.arcDegreeMode()

        all_lines = self.m_viewParser.getLinesFromParser(
            gp, arcPrecision, arcDegreeMode)

        #self.updateProgramEstimatedTime(all_lines)
        print("view parser filled: %s ms" % time.elapsed())

        self.m_programLoading = False

        # Set table model
        self.ui.tblProgram.setModel(self.m_programModel)
        self.ui.tblProgram.horizontalHeader().restoreState(headerState)

        # connect this model
        self.ui.tblProgram.selectionModel().currentChanged.connect(
            self.onTableCurrentChanged)

        # Update tableview
        self.ui.tblProgram.selectRow(0)

        # Update code drawer
        self.m_codeDrawer.update()
        self.ui.glwVisualizer.fitDrawable(self.m_codeDrawer)
Пример #22
0
    def updateParser(self):

        time = QElapsedTimer()

        print("updating parser:")
        time.start()

        parser = self.m_currentDrawer.viewParser()

        gp = GcodeParser()
        #gp.setTraverseSpeed(m_settings.rapidSpeed())
        gp.setTraverseSpeed(100)
        if self.m_codeDrawer.getIgnoreZ():
            gp.reset(QVector3D(qQNaN(), qQNaN(), 0))

        self.ui.tblProgram.setUpdatesEnabled(False)

        progress = QProgressDialog("Updating...", "Abort", 0,
                                   self.m_currentModel.rowCount() - 2, self)
        progress.setWindowModality(QtCore.Qt.WindowModal)
        progress.setFixedSize(progress.sizeHint())

        if self.m_currentModel.rowCount() > PROGRESSMINLINES:
            progress.show()
            progress.setStyleSheet(
                "QProgressBar {text-align: center qproperty-format: \"\"}")

        for i in range(self.m_currentModel.rowCount()):
            # Get stored args
            args = self.m_currentModel.m_data[i].args

            # Store args if none
            if len(args) == 0:
                stripped = GcodePreprocessorUtils.removeComment(
                    self.m_currentModel.m_data[i].command)
                args = GcodePreprocessorUtils.splitCommand(stripped)
                self.m_currentModel.m_data[i].args = args

            # Add command to parser
            gp.addCommand(args)

            # Update table model
            self.m_currentModel.m_data[i].state = GCodeItem.States.InQueue
            self.m_currentModel.m_data[i].response = ""
            self.m_currentModel.m_data[i].line = gp.getCommandNumber()

            if progress.isVisible() and (i % PROGRESSSTEP == 0):
                progress.setValue(i)
                QApplication.instance().processEvents()
                if progress.wasCanceled():
                    break

        progress.close()

        self.ui.tblProgram.setUpdatesEnabled(True)

        parser.reset()

        arcPrecision = 0.0  # TODO self.m_settings.arcPrecision()
        arcDegreeMode = False  # TODO self.m_settings.arcDegreeMode()

        all_lines = parser.getLinesFromParser(gp, arcPrecision(),
                                              arcDegreeMode())

        #self.updateProgramEstimatedTime(all_lines)

        self.m_currentDrawer.update()
        self.ui.glwVisualizer.updateExtremes(self.m_currentDrawer)
        #self.updateControlsState()

        if self.m_currentModel == self.m_programModel:
            self.m_fileChanged = True

        print("Update parser time: %s" % time.elapsed())
Пример #23
0
logger = Log(__name__)
logger.debug("loading module")


#from . import rc_icons

try:
    # integrate Qt mainloop into IPython console:
    # (the name qt4 here is a relic of the API but what happens
    # really is not restricted to Qt4...)
    from IPython.lib.guisupport import get_app_qt4, start_event_loop_qt4
    app = get_app_qt4()
    start_event_loop_qt4(app)
except ImportError:
    app = QApplication.instance() or QApplication([])

app.setApplicationName("amoco-qt")
# set default styleSheet:
current_path = path.abspath(path.dirname(__file__))
filename = path.join(current_path, 'style.qss')
filename = conf.UI.qstylesheet or filename
if filename.startswith(":"):
    if filename[1:]=="qdarkstyle":
        try:
            import qdarkstyle
            app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api='pyside2'))
        except:
            pass
else:
    with open(filename,'r') as f:
Пример #24
0
    def createActions(self):

        self.newAct = QAction(QIcon.fromTheme("document-new",
                                              QIcon(':/images/new.png')),
                              "&New",
                              self,
                              shortcut=QKeySequence.New,
                              statusTip="Create a new file",
                              triggered=self.newFile)

        self.openAct = QAction(QIcon.fromTheme("document-open",
                                               QIcon(':/images/open.png')),
                               "&Open...",
                               self,
                               shortcut=QKeySequence.Open,
                               statusTip="Open an existing file",
                               triggered=self.open)

        self.saveAct = QAction(QIcon.fromTheme("document-save",
                                               QIcon(':/images/save.png')),
                               "&Save",
                               self,
                               shortcut=QKeySequence.Save,
                               statusTip="Save the document to disk",
                               triggered=self.save)

        self.saveAsAct = QAction(
            "Save &As...",
            self,
            shortcut=QKeySequence.SaveAs,
            statusTip="Save the document under a new name",
            triggered=self.saveAs)

        self.exitAct = QAction(
            "E&xit",
            self,
            shortcut=QKeySequence.Quit,
            statusTip="Exit the application",
            triggered=QApplication.instance().closeAllWindows)

        self.cutAct = QAction(
            QIcon.fromTheme("edit-cut", QIcon(':/images/cut.png')),
            "Cu&t",
            self,
            shortcut=QKeySequence.Cut,
            statusTip="Cut the current selection's contents to the clipboard",
            triggered=self.cut)

        self.copyAct = QAction(
            QIcon.fromTheme("edit-copy", QIcon(':/images/copy.png')),
            "&Copy",
            self,
            shortcut=QKeySequence.Copy,
            statusTip="Copy the current selection's contents to the clipboard",
            triggered=self.copy)

        self.pasteAct = QAction(
            QIcon.fromTheme("edit-paste", QIcon(':/images/paste.png')),
            "&Paste",
            self,
            shortcut=QKeySequence.Paste,
            statusTip=
            "Paste the clipboard's contents into the current selection",
            triggered=self.paste)

        self.closeAct = QAction("Cl&ose",
                                self,
                                statusTip="Close the active window",
                                triggered=self.mdiArea.closeActiveSubWindow)

        self.closeAllAct = QAction("Close &All",
                                   self,
                                   statusTip="Close all the windows",
                                   triggered=self.mdiArea.closeAllSubWindows)

        self.tileAct = QAction("&Tile",
                               self,
                               statusTip="Tile the windows",
                               triggered=self.mdiArea.tileSubWindows)

        self.cascadeAct = QAction("&Cascade",
                                  self,
                                  statusTip="Cascade the windows",
                                  triggered=self.mdiArea.cascadeSubWindows)

        self.nextAct = QAction("Ne&xt",
                               self,
                               shortcut=QKeySequence.NextChild,
                               statusTip="Move the focus to the next window",
                               triggered=self.mdiArea.activateNextSubWindow)

        self.previousAct = QAction(
            "Pre&vious",
            self,
            shortcut=QKeySequence.PreviousChild,
            statusTip="Move the focus to the previous window",
            triggered=self.mdiArea.activatePreviousSubWindow)

        self.separatorAct = QAction(self)
        self.separatorAct.setSeparator(True)

        self.aboutAct = QAction("&About",
                                self,
                                statusTip="Show the application's About box",
                                triggered=self.about)

        self.aboutQtAct = QAction("About &Qt",
                                  self,
                                  statusTip="Show the Qt library's About box",
                                  triggered=QApplication.instance().aboutQt)