def __init__(self, environment): super(MainWindow, self).__init__() self.env = environment self.interpreter = Interpreter(self.env) # Set the ConsoleWidget parameters immediately, so even early prints are captured self.consoleWidget = Console(self.env.getSetting('consoleSettings'), parent=self) Global.printRedirectFunc = self.consoleWidget.write self.consoleWidget.setExecFunction(self.interpreter.evaluateExpression) # Create GUI related class variables self.fileName = None self.loadData = [] #Set when file is loaded. Used to check if the user has changed anything when closing self.programTitle = self.tr('uArm Creator Studio') self.scriptToggleBtn = QtWidgets.QAction( QtGui.QIcon(Paths.run_script), self.tr('Run'), self) self.devicesBtn = QtWidgets.QAction(QtGui.QIcon(Paths.devices_neither), self.tr('Devices'), self) self.centralWidget = QtWidgets.QStackedWidget() self.controlPanel = ControlPanelGUI.ControlPanel(self.env, parent=self) self.cameraWidget = CameraWidget(self.env.getVStream(), parent=self) self.floatingHint = QtWidgets.QLabel() # Used to display floating banners to inform the user of something self.resetLayoutFlag = False # If True, Program will resetore the default layout # Create Menu items and set up the GUI self.cameraWidget.play() self.initUI() # After initUI: Restore the window geometry to the state it was when the user last closed the window if self.env.getSetting("windowGeometry") is not None: state = self.env.getSetting("windowGeometry") state = bytearray(state, 'utf-8') bArr = QtCore.QByteArray.fromHex(state) self.restoreGeometry(bArr) # After initUI: Restore size and position of dockwidgets to their previous state if self.env.getSetting("windowState") is not None: state = self.env.getSetting("windowState") state = bytearray(state, 'utf-8') bArr = QtCore.QByteArray.fromHex(state) self.restoreState(bArr) # If any file is specified in "lastOpenedFile" then load it. if self.env.getSetting("lastOpenedFile") is not None: self.loadTask(filename=self.env.getSetting("lastOpenedFile")) else: self.newTask(False) # Create a timer that checks the connected devices and updates the icon to reflect what is connected correctly self.refreshTimer = QtCore.QTimer() self.refreshTimer.timeout.connect(self.refreshDevicesIcon) self.refreshTimer.start(5000) # Once every five seconds