def __init__(self, parent=None, numStages=1): QDialog.__init__(self, parent) self.threadRouter = ThreadRouter(self) self.currentStep = 0 self.progress = None l = QVBoxLayout() self.setLayout(l) self.overallProgress = QProgressBar() self.overallProgress.setRange(0, numStages) self.overallProgress.setFormat("step %v of " + str(numStages)) self.currentStepProgress = QProgressBar() self.currentStepProgress.setRange(0, 100) self.currentStepProgress.setFormat("%p %") self.overallLabel = QLabel("Overall progress") self.currentStepLabel = QLabel("Current step") l.addWidget(self.overallLabel) l.addWidget(self.overallProgress) l.addWidget(self.currentStepLabel) l.addWidget(self.currentStepProgress) l.maximumSize() self.update()
def run_gui_tests(tstcls, gui_test_bag): assert tstcls.app is None, "Should only encounter every class once. Check Sorting" tst_queue = queue.Queue() app = tstcls.app = QApplication([]) app.setQuitOnLastWindowClosed(False) app.thread_router = ThreadRouter(app) tstcls.shell = launchShell(None, [], []) platform_str = platform.platform().lower() if "ubuntu" in platform_str or "fedora" in platform_str: QApplication.setAttribute(Qt.AA_X11InitThreads, True) if ilastik.config.cfg.getboolean("ilastik", "debug"): QApplication.setAttribute(Qt.AA_DontUseNativeMenuBar, True) # Note on the class test execution lifecycle # pytest infers that finalizer teardown_class should be called when # nextitem is None for item, nextitem in pairwise(gui_test_bag, tail=None): tst_queue.put((item, nextitem)) # Spawn a suite runner as a interval task suite = GuiTestSuite(tst_queue, tstcls.shell) timer = QTimer() # This timer will fire only after application is started running timer.timeout.connect(suite.poll) timer.start(100) # Every 100 ms app.exec_() timer.stop() tst_queue.join()
def createApp(): # Create the application in the current thread. # The current thread is now the application main thread. ShellGuiTestCaseBase.app = QApplication([]) app = ShellGuiTestCaseBase.app # Don't auto-quit the app when the window closes. We want to re-use it for the next test. app.setQuitOnLastWindowClosed(False) # Create a threadRouter object that allows us to send work to the app from other threads. ShellGuiTestCaseBase.threadRouter = ThreadRouter(app) # Set the appCreationEvent so the tests can proceed after the app's event loop has started QTimer.singleShot(0, appCreationEvent.set) # Start the event loop app.exec_()