Esempio n. 1
0
 def reloadValues(self):
     if self.device.deviceStatus:
         self.enableDeviceButton.setText('Disable Device')
         self.enableDeviceButton.setIcon(GUIToolKit.getIconByName('reddot'))
     else:
         self.enableDeviceButton.setText('Enable Device')
         self.enableDeviceButton.setIcon(
             GUIToolKit.getIconByName('greendot'))
Esempio n. 2
0
 def connectionStateChanged(self, isConnected):
     if isConnected:
         self.connectDisconnectButton.setIcon(
             GUIToolKit.getIconByName('disconnect'))
         self.connectDisconnectButton.setText('Disconnect')
     else:
         self.connectDisconnectButton.setIcon(
             GUIToolKit.getIconByName('connect'))
         self.connectDisconnectButton.setText('Connect')
Esempio n. 3
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.device = SimpleFOCDevice.getInstance()

        self.setObjectName('joggingControl')
        self.setTitle('Jogging control')

        self.horizontalLayout = QtWidgets.QHBoxLayout(self)
        self.horizontalLayout.setObjectName('generalControlHL')

        self.fastFordwardButton = QtWidgets.QPushButton()
        self.fastFordwardButton.setObjectName('fastbackward')
        self.fastFordwardButton.setIcon(
            GUIToolKit.getIconByName('fastbackward'))
        self.fastFordwardButton.clicked.connect(self.joggingFastBackward)
        self.horizontalLayout.addWidget(self.fastFordwardButton)

        self.backwardButton = QtWidgets.QPushButton()
        self.backwardButton.setObjectName('backward')
        self.backwardButton.setIcon(GUIToolKit.getIconByName('backward'))
        self.backwardButton.clicked.connect(self.joggingBackward)
        self.horizontalLayout.addWidget(self.backwardButton)

        self.stopButton = QtWidgets.QPushButton()
        self.stopButton.setObjectName('stopbutton')
        self.stopButton.setIcon(GUIToolKit.getIconByName('stopjogging'))
        self.stopButton.clicked.connect(self.joggingStop)
        self.horizontalLayout.addWidget(self.stopButton)

        self.fordwardButton = QtWidgets.QPushButton()
        self.fordwardButton.setObjectName('fordward')
        self.fordwardButton.setIcon(GUIToolKit.getIconByName('fordward'))
        self.fordwardButton.clicked.connect(self.joggingFordward)
        self.horizontalLayout.addWidget(self.fordwardButton)

        self.fastBackwardButton = QtWidgets.QPushButton()
        self.fastBackwardButton.setObjectName('fastfordward')
        self.fastBackwardButton.setIcon(
            GUIToolKit.getIconByName('fastfordward'))
        self.fastBackwardButton.clicked.connect(self.joggingfastFordward)
        self.horizontalLayout.addWidget(self.fastBackwardButton)

        self.incrementLabel = QtWidgets.QLabel("Increment:")
        self.horizontalLayout.addWidget(self.incrementLabel)

        onlyFloat = QtGui.QRegExpValidator(
            QtCore.QRegExp("[+-]?([0-9]*[.])?[0-9]+"))
        self.incrementEdit = QtWidgets.QLineEdit()
        self.incrementEdit.setValidator(onlyFloat)
        self.incrementEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.incrementEdit.setText('1.0')
        self.incrementEdit.setObjectName('incrementEdit')
        self.horizontalLayout.addWidget(self.incrementEdit)

        self.disableUI()
        self.device.addConnectionStateListener(self)
    def __init__(self, parent=None):
        super().__init__(parent)

        self.device = SimpleFOCDevice.getInstance()

        self.setObjectName('groupBox')
        self.setTitle('Command Line interface')

        self.cmlVerticalLayout = QtWidgets.QVBoxLayout(self)
        self.cmlVerticalLayout.setObjectName('cmlVerticalLayout')

        self.commandLineDisplay = QtWidgets.QTextEdit(self)
        self.commandLineDisplay.setObjectName('commandLineDisplay')
        self.cmlVerticalLayout.addWidget(self.commandLineDisplay)

        self.commandLineDisplay.setReadOnly(True)
        self.commandLineDisplay.setTextColor(QtGui.QColor(68, 117, 68, 255))

        self.cmlWidget = QtWidgets.QWidget(self)
        self.cmlWidget.setObjectName('cmlWidget')
        self.cmlHorizontalLayout = QtWidgets.QHBoxLayout(self.cmlWidget)
        self.cmlHorizontalLayout.setObjectName('cmlHorizontalLayout')

        self.commandLineEdit = QtWidgets.QLineEdit(self.cmlWidget)
        self.commandLineEdit.setObjectName('commandLineEdit')
        self.cmlHorizontalLayout.addWidget(self.commandLineEdit)

        self.commandLineEdit.returnPressed.connect(self.sendAction)

        self.sendButton = QtWidgets.QPushButton(self.cmlWidget)
        self.sendButton.setObjectName('sendButton')
        self.sendButton.setText('Send')
        self.sendButton.setIcon(GUIToolKit.getIconByName('send'))
        self.sendButton.clicked.connect(self.sendAction)

        self.cmlHorizontalLayout.addWidget(self.sendButton)

        self.clearButton = QtWidgets.QPushButton(self.cmlWidget)
        self.clearButton.setObjectName('clearButton')
        self.cmlHorizontalLayout.addWidget(self.clearButton)
        self.clearButton.setIcon(GUIToolKit.getIconByName('delete'))
        self.clearButton.clicked.connect(self.clearAction)
        self.clearButton.setText('Clear')

        self.listDevices = QtWidgets.QPushButton(self.cmlWidget)
        self.listDevices.setObjectName('listDevices')
        self.cmlHorizontalLayout.addWidget(self.listDevices)
        self.listDevices.setIcon(GUIToolKit.getIconByName('list'))
        self.listDevices.clicked.connect(self.sendListDevices)
        self.listDevices.setText('List Devices')

        self.cmlVerticalLayout.addWidget(self.cmlWidget)
        self.device.addConnectionStateListener(self)
        self.setEnabled(False)
Esempio n. 5
0
 def pauseContinuePlotAction(self):
     if self.controlledPlot.currentStatus is self.controlledPlot.connectedPausedState:
         # Continue pressed
         self.pauseContinueButton.setText('Pause')
         self.pauseContinueButton.setIcon(GUIToolKit.getIconByName('pause'))
         self.controlledPlot.currentStatus = self.controlledPlot.connectedPlottingStartedState
     else:
         # Pause pressed
         self.pauseContinueButton.setText('Continue')
         self.pauseContinueButton.setIcon(
             GUIToolKit.getIconByName('continue'))
         self.controlledPlot.currentStatus = self.controlledPlot.connectedPausedState
    def __init__(self,
                 icon_name,
                 text,
                 final_stretch=True,
                 hyperlink=None,
                 link_label='More info'):
        super(QWidget, self).__init__()

        layout = QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)

        icon = QLabel()
        icon.setPixmap(
            GUIToolKit.getIconByName(icon_name).pixmap(self.IconSize))

        layout.addWidget(icon)
        a = QLabel(text)
        f = a.font()
        f.setPointSize(self.FontSize)
        f.setBold(True)
        a.setFont(f)
        layout.addWidget(a)

        if hyperlink is not None:
            link = QLabel()
            link.setText('<a href="' + hyperlink + '">' + link_label + '</a>')
            link.setOpenExternalLinks(True)
            layout.addWidget(link)

        if final_stretch:
            layout.addStretch(1)
Esempio n. 7
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.device = SimpleFOCDevice.getInstance()

        self.setObjectName('connectionControl')
        self.setTitle('Connection control')

        self.horizontalLayout = QtWidgets.QHBoxLayout(self)
        self.horizontalLayout.setObjectName('generalControlHL')

        self.devCommandIDLabel = QtWidgets.QLabel("Command:")
        self.horizontalLayout.addWidget(self.devCommandIDLabel)
        self.devCommandIDLetter = QtWidgets.QLineEdit()
        self.devCommandIDLetter.setObjectName('devCommandIDLetter')
        self.devCommandIDLetter.editingFinished.connect(
            self.changeDevicedevCommandID)
        self.horizontalLayout.addWidget(self.devCommandIDLetter)

        self.pullConfig = QtWidgets.QPushButton()
        self.pullConfig.setObjectName('pullConfig')
        self.pullConfig.setIcon(GUIToolKit.getIconByName('pull'))
        self.pullConfig.setText(' Pull Params')
        self.pullConfig.clicked.connect(self.device.pullConfiguration)

        self.horizontalLayout.addWidget(self.pullConfig)

        self.connectDisconnectButton = QtWidgets.QPushButton(self)
        self.connectDisconnectButton.setIcon(
            GUIToolKit.getIconByName('connect'))
        self.connectDisconnectButton.setObjectName('connectDeviceButton')
        self.connectDisconnectButton.setText('Connect')
        self.connectDisconnectButton.clicked.connect(
            self.connectDisconnectDeviceAction)

        self.horizontalLayout.addWidget(self.connectDisconnectButton)

        self.configureDeviceButton = QtWidgets.QPushButton(self)
        self.configureDeviceButton.setIcon(
            GUIToolKit.getIconByName('configure'))
        self.configureDeviceButton.setObjectName('configureDeviceButton')
        self.configureDeviceButton.setText('Configure')
        self.configureDeviceButton.clicked.connect(self.configureDeviceAction)
        self.horizontalLayout.addWidget(self.configureDeviceButton)

        self.device.addConnectionStateListener(self)
        self.connectionStateChanged(self.device.isConnected)
Esempio n. 8
0
    def __init__(self, parent=None):

        super().__init__(parent)

        # self.setMaximumWidth(300)

        onlyFloat = QtGui.QRegExpValidator(
            QtCore.QRegExp("[+-]?([0-9]*[.])?[0-9]+"))

        self.device = SimpleFOCDevice.getInstance()

        self.setTitle('General Controls')

        self.setObjectName('generalControls')

        self.gcGridLayout = QtWidgets.QGridLayout(self)
        self.gcGridLayout.setObjectName('gcGridLayout')

        self.enableDeviceButton = QtWidgets.QPushButton(self)
        self.enableDeviceButton.setObjectName('enButton')
        self.enableDeviceButton.setText('Enable Device')
        self.enableDeviceButton.setIcon(GUIToolKit.getIconByName('greendot'))
        self.enableDeviceButton.clicked.connect(self.toggleEnable)
        self.gcGridLayout.addWidget(self.enableDeviceButton, 1, 0, 1, 1)

        self.sensorZeroButton = QtWidgets.QPushButton(self)
        self.sensorZeroButton.setObjectName('homeButton')
        self.sensorZeroButton.setText('Sensor Zero')
        self.sensorZeroButton.setIcon(GUIToolKit.getIconByName('home'))
        self.sensorZeroButton.clicked.connect(self.setSensorZero)
        self.gcGridLayout.addWidget(self.sensorZeroButton, 1, 1, 1, 1)

        self.setZeroTarget = QtWidgets.QPushButton(self)
        self.setZeroTarget.setObjectName('zeroButton')
        self.setZeroTarget.setText('Zero Target')
        self.setZeroTarget.setIcon(GUIToolKit.getIconByName('stop'))
        self.setZeroTarget.clicked.connect(self.setTargetZero)
        self.gcGridLayout.addWidget(self.setZeroTarget, 1, 2, 1, 1)
        self.reloadValues()

        self.device.addConnectionStateListener(self)
        self.device.commProvider.commandDataReceived.connect(
            self.commandResponseReceived)

        self.connectionStateChanged(self.device.isConnected)
 def initCustomCommand(sefl, command):
     customCommand = QtWidgets.QTreeWidgetItem()
     customCommand.isCustomCommand = True
     customCommand.setText(0, command.cmdName)
     customCommand.setText(1, command.cmd)
     customCommand.setIcon(0, GUIToolKit.getIconByName('gear'))
     customCommand.setFlags(customCommand.flags()
                            | QtCore.Qt.ItemIsEditable)
     sefl.customComands.addChild(customCommand)
Esempio n. 10
0
    def __init__(self, main_window, devicesTabedWidget, parent=None):
        super().__init__(parent)

        self.addDeviceAction = QtWidgets.QToolButton(main_window)
        self.addDeviceAction.setIcon(GUIToolKit.getIconByName('add_motor'))
        self.addDeviceAction.setObjectName('addDeviceAction')
        self.addDeviceAction.setPopupMode(QtWidgets.QToolButton.InstantPopup)

        self.addDeviceMenu = QtWidgets.QMenu(self.addDeviceAction)
        self.addDeviceTreeView = QtWidgets.QAction("Tree View",
                                                   self.addDeviceMenu)
        self.addDeviceTreeView.setIcon(GUIToolKit.getIconByName('tree'))
        self.addDeviceTreeView.triggered.connect(
            devicesTabedWidget.addDeviceTree)
        self.addDeviceFormView = QtWidgets.QAction("Form View",
                                                   self.addDeviceMenu)
        self.addDeviceFormView.setIcon(GUIToolKit.getIconByName('form'))
        self.addDeviceFormView.triggered.connect(
            devicesTabedWidget.addDeviceForm)

        self.addDeviceMenu.addAction(self.addDeviceTreeView)
        self.addDeviceMenu.addAction(self.addDeviceFormView)
        self.addDeviceAction.setMenu(self.addDeviceMenu)
        self.addWidget(self.addDeviceAction)

        self.openDeviceAction = QtWidgets.QAction(main_window)
        self.openDeviceAction.setIcon(GUIToolKit.getIconByName('open'))
        self.openDeviceAction.setObjectName('openDeviceAction')
        self.openDeviceAction.triggered.connect(devicesTabedWidget.openDevice)

        self.addAction(self.openDeviceAction)

        self.saveDeviceAction = QtWidgets.QAction(main_window)
        self.saveDeviceAction.setIcon(GUIToolKit.getIconByName('save'))
        self.saveDeviceAction.setObjectName('saveDeviceAction')
        self.saveDeviceAction.triggered.connect(devicesTabedWidget.saveDevice)

        self.addAction(self.saveDeviceAction)

        self.generateCodeAction = QtWidgets.QAction(main_window)
        self.generateCodeAction.setIcon(GUIToolKit.getIconByName('gen'))
        self.generateCodeAction.setObjectName('genertecode')
        self.generateCodeAction.triggered.connect(
            devicesTabedWidget.generateCode)

        self.addAction(self.generateCodeAction)
        self.addSeparator()

        self.openConsoleToolAction = QtWidgets.QAction(main_window)
        self.openConsoleToolAction.setIcon(
            GUIToolKit.getIconByName('consoletool'))
        self.openConsoleToolAction.setToolTip('Open Serial Cosole tool')
        self.openConsoleToolAction.setObjectName('openconsoletool')
        self.openConsoleToolAction.triggered.connect(
            devicesTabedWidget.openConsoleTool)

        self.addAction(self.openConsoleToolAction)

        self.addSeparator()
Esempio n. 11
0
    def addCustomCommand(sefl, selectedItem):
        customCommand = QtWidgets.QTreeWidgetItem()
        customCommand.isCustomCommand = True
        customCommand.setText(0, 'Command')
        customCommand.setIcon(0, GUIToolKit.getIconByName('gear'))

        customCommand.setFlags(customCommand.flags()
                               | QtCore.Qt.ItemIsEditable)
        selectedItem.addChild(customCommand)
        sefl.device.customCommands.customCommandsList.append(
            Command('Command', ''))
Esempio n. 12
0
    def connectionStateChanged(self, isConnectedFlag):
        if isConnectedFlag:
            self.connectDisconnectButton.setText('Disconnect')
            self.connectDisconnectButton.setIcon(
                GUIToolKit.getIconByName('disconnect'))
        else:
            self.connectDisconnectButton.setText('Connect')
            self.connectDisconnectButton.setIcon(
                GUIToolKit.getIconByName('connect'))

        self.portNameLabel.setEnabled(not isConnectedFlag)
        self.portNameComboBox.setEnabled(not isConnectedFlag)
        self.bitRateLabel.setEnabled(not isConnectedFlag)
        self.bitRatelineEdit.setEnabled(not isConnectedFlag)
        self.parityLabel.setEnabled(not isConnectedFlag)
        self.parityComboBox.setEnabled(not isConnectedFlag)
        self.byteSizeLabel.setEnabled(not isConnectedFlag)
        self.byteSizeComboBox.setEnabled(not isConnectedFlag)
        self.stopBitsLabel.setEnabled(not isConnectedFlag)
        self.stopBitsComboBox.setEnabled(not isConnectedFlag)
Esempio n. 13
0
 def startStoPlotAction(self):
     if self.controlledPlot.currentStatus is self.controlledPlot.initialConnectedState:
         # Start pressed
         self.startStopButton.setText('Stop')
         self.startStopButton.setIcon(GUIToolKit.getIconByName('stop'))
         self.controlledPlot.currentStatus = \
             self.controlledPlot.connectedPlottingStartedState
         self.pauseContinueButton.setEnabled(True)
         self.device.sendMonitorDownsample(int(self.downampleValue.text()))
         self.updateMonitorVariables()
     else:
         # Stop pressed
         self.startStopButton.setText('Start')
         self.startStopButton.setIcon(GUIToolKit.getIconByName('start'))
         self.pauseContinueButton.setText('Pause')
         self.pauseContinueButton.setIcon(GUIToolKit.getIconByName('pause'))
         self.pauseContinueButton.setEnabled(False)
         self.stopAndResetPlot()
         self.device.sendMonitorDownsample(0)
         self.device.sendMonitorClearVariables()
Esempio n. 14
0
    def addPIDSubtree(self, parent, label):
        pidConfiguration = QtWidgets.QTreeWidgetItem()
        pidConfiguration.setText(0, label)
        pidConfiguration.setIcon(0, GUIToolKit.getIconByName('pidconfig'))
        parent.addChild(pidConfiguration)

        proportionalGain = QtWidgets.QTreeWidgetItem(pidConfiguration)
        proportionalGain.setText(0, 'Proportional gain')
        proportionalGain.setIcon(0, GUIToolKit.getIconByName('gear'))
        proportionalGain.setText(1, '')
        proportionalGain.setFlags(proportionalGain.flags()
                                  | QtCore.Qt.ItemIsEditable)

        integralGain = QtWidgets.QTreeWidgetItem(pidConfiguration)
        integralGain.setText(0, 'Integral gain')
        integralGain.setIcon(0, GUIToolKit.getIconByName('gear'))
        integralGain.setText(1, '')
        integralGain.setFlags(integralGain.flags() | QtCore.Qt.ItemIsEditable)

        derivativeGain = QtWidgets.QTreeWidgetItem(pidConfiguration)
        derivativeGain.setText(0, 'Derivative gain')
        derivativeGain.setIcon(0, GUIToolKit.getIconByName('gear'))
        derivativeGain.setText(1, '')
        derivativeGain.setFlags(derivativeGain.flags()
                                | QtCore.Qt.ItemIsEditable)

        voltageRamp = QtWidgets.QTreeWidgetItem(pidConfiguration)
        voltageRamp.setText(0, 'Output Ramp')
        voltageRamp.setIcon(0, GUIToolKit.getIconByName('gear'))
        voltageRamp.setText(1, '')
        voltageRamp.setFlags(voltageRamp.flags() | QtCore.Qt.ItemIsEditable)

        limit = QtWidgets.QTreeWidgetItem(pidConfiguration)
        limit.setText(0, 'Output Limit')
        limit.setIcon(0, GUIToolKit.getIconByName('gear'))
        limit.setText(1, '')
        limit.setFlags(limit.flags() | QtCore.Qt.ItemIsEditable)

        lpfTf = QtWidgets.QTreeWidgetItem(pidConfiguration)
        lpfTf.setText(0, 'Low pass filter')
        lpfTf.setIcon(0, GUIToolKit.getIconByName('gear'))
        lpfTf.setText(1, '')
        lpfTf.setFlags(lpfTf.flags() | QtCore.Qt.ItemIsEditable)

        return pidConfiguration
Esempio n. 15
0
 def getTabIcon(self):
     return GUIToolKit.getIconByName('consoletool')
 def getTabIcon(self):
     return GUIToolKit.getIconByName('gen')
    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.setWindowTitle("Generate Code")
        self.setWindowIcon(GUIToolKit.getIconByName('gen'))

        self.checkBoxMotionControl = QtWidgets.QCheckBox(self)
        self.checkBoxMotionControl.setObjectName('motion')
        self.checkBoxMotionControl.setText("Torque/Motion control")
        self.checkBoxMotionControl.setIcon(GUIToolKit.getIconByName('motor'))
        self.checkBoxMotionControl.setChecked(True)

        self.checkBoxPidVel = QtWidgets.QCheckBox(self)
        self.checkBoxPidVel.setObjectName('pidVel')
        self.checkBoxPidVel.setText("PID velocity")
        self.checkBoxPidVel.setIcon(GUIToolKit.getIconByName('pidconfig'))
        self.checkBoxPidVel.setChecked(True)

        self.checkBoxPidAngle = QtWidgets.QCheckBox(self)
        self.checkBoxPidAngle.setObjectName('pidAngle')
        self.checkBoxPidAngle.setText("PID angle")
        self.checkBoxPidAngle.setIcon(GUIToolKit.getIconByName('pidconfig'))
        self.checkBoxPidAngle.setChecked(True)

        self.checkBoxPidCq = QtWidgets.QCheckBox(self)
        self.checkBoxPidCq.setObjectName('pidCq')
        self.checkBoxPidCq.setText("PID current q")
        self.checkBoxPidCq.setIcon(GUIToolKit.getIconByName('pidconfig'))
        self.checkBoxPidCq.setChecked(True)

        self.checkBoxPidCd = QtWidgets.QCheckBox(self)
        self.checkBoxPidCd.setObjectName('pidCq')
        self.checkBoxPidCd.setText("PID current d")
        self.checkBoxPidCd.setIcon(GUIToolKit.getIconByName('pidconfig'))
        self.checkBoxPidCd.setChecked(True)

        self.checkBoxLimits = QtWidgets.QCheckBox(self)
        self.checkBoxLimits.setObjectName('limits')
        self.checkBoxLimits.setText("Limits")
        self.checkBoxLimits.setIcon(GUIToolKit.getIconByName('statistics'))
        self.checkBoxLimits.setChecked(True)

        self.checkBoxPhaseRes = QtWidgets.QCheckBox(self)
        self.checkBoxPhaseRes.setObjectName('phaseRes')
        self.checkBoxPhaseRes.setText("Phase Resistance")
        self.checkBoxPhaseRes.setIcon(GUIToolKit.getIconByName('res'))
        self.checkBoxPhaseRes.setChecked(True)

        self.checkBoxModulation = QtWidgets.QCheckBox(self)
        self.checkBoxModulation.setObjectName('modulation')
        self.checkBoxModulation.setText("PWM Modulation")
        self.checkBoxModulation.setIcon(GUIToolKit.getIconByName('gear'))
        self.checkBoxModulation.setChecked(True)

        self.sensorOffset = QtWidgets.QCheckBox(self)
        self.sensorOffset.setObjectName('sensorOffset')
        self.sensorOffset.setText("Sensor Offset")
        self.sensorOffset.setIcon(GUIToolKit.getIconByName('gear'))
        self.sensorOffset.setChecked(True)

        self.sensorElOffset = QtWidgets.QCheckBox(self)
        self.sensorElOffset.setObjectName('sensorOffset')
        self.sensorElOffset.setToolTip(
            'Be careful!<br> Only for absolute sensors')
        self.sensorElOffset.setText("Sensor Electrical Offset")
        self.sensorElOffset.setIcon(GUIToolKit.getIconByName('gear'))
        self.sensorElOffset.setChecked(False)

        QBtn = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel

        self.buttonBox = QtWidgets.QDialogButtonBox(QBtn)
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)

        text = "<h1>Arduino Code Generation</h1>"
        text += "Arduino code generation for the motor parameters currently used in the <i>Simple<b>FOC</b>Studio</i> <br>"
        text += "Once you are happy with the performance of your system you can generate the arduino code of the parameters you have tuned.<br>"
        text += "The generated code you can just copy/paste in your <code>setup()</code> function, just before calling the <code>motor.init()</code><br>"
        text += "<h4>Choose the parameter sets to be generated:</h4>"

        self.layout = QtWidgets.QVBoxLayout()
        message1 = QtWidgets.QLabel(text)
        self.layout.addWidget(message1)
        self.layout.addWidget(self.checkBoxMotionControl)
        self.layout.addWidget(self.checkBoxPidVel)
        self.layout.addWidget(self.checkBoxPidAngle)
        self.layout.addWidget(self.checkBoxPidCq)
        self.layout.addWidget(self.checkBoxPidCd)
        self.layout.addWidget(self.checkBoxLimits)
        self.layout.addWidget(self.checkBoxPhaseRes)
        self.layout.addWidget(self.checkBoxModulation)
        self.layout.addWidget(self.sensorOffset)
        self.layout.addWidget(self.sensorElOffset)
        self.layout.addWidget(self.buttonBox)
        self.setLayout(self.layout)
 def icon(self, parameter):
     if isinstance(parameter, QtCore.QFileInfo):
         info = parameter
         if info.suffix() == "ino":
             return GUIToolKit.getIconByName('ard')
     return super(FileIconProvider, self).icon(parameter)
Esempio n. 19
0
    def __init__(self, parent=None, controllerPlotWidget=None):
        '''Constructor for ToolsWidget'''
        super().__init__(parent)

        self.device = SimpleFOCDevice.getInstance()
        self.controlledPlot = controllerPlotWidget

        self.verticalLayout = QtWidgets.QVBoxLayout(self)
        self.setLayout(self.verticalLayout)

        self.horizontalLayout1 = QtWidgets.QHBoxLayout()
        self.horizontalLayout1.setObjectName('horizontalLayout')

        self.startStopButton = QtWidgets.QPushButton(self)
        self.startStopButton.setText('Start')
        self.startStopButton.setObjectName('Start')
        self.startStopButton.clicked.connect(self.startStoPlotAction)
        self.startStopButton.setIcon(GUIToolKit.getIconByName('start'))
        self.horizontalLayout1.addWidget(self.startStopButton)

        self.pauseContinueButton = QtWidgets.QPushButton(self)
        self.pauseContinueButton.setObjectName('pauseButton')
        self.pauseContinueButton.setText('Pause')
        self.pauseContinueButton.setIcon(GUIToolKit.getIconByName('pause'))
        self.pauseContinueButton.clicked.connect(self.pauseContinuePlotAction)
        self.horizontalLayout1.addWidget(self.pauseContinueButton)

        self.zoomAllButton = QtWidgets.QPushButton(self)
        self.zoomAllButton.setObjectName('zoomAllButton')
        self.zoomAllButton.setText('View all')
        self.zoomAllButton.setIcon(GUIToolKit.getIconByName('zoomall'))
        self.zoomAllButton.clicked.connect(self.zoomAllPlot)
        self.horizontalLayout1.addWidget(self.zoomAllButton)

        self.signalCheckBox = []
        for i in range(len(self.controlledPlot.signals)):
            checkBox = QtWidgets.QCheckBox(self)
            checkBox.setObjectName('signalCheckBox' + str(i))
            checkBox.setToolTip(self.controlledPlot.signal_tooltip[i])
            checkBox.setText(self.controlledPlot.signals[i])
            checkBox.setIcon(
                GUIToolKit.getIconByName(self.controlledPlot.signalIcons[i]))
            checkBox.setChecked(True)
            self.signalCheckBox.append(checkBox)
            self.horizontalLayout1.addWidget(checkBox)

        spacerItem = QtWidgets.QSpacerItem(100, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Maximum)

        self.horizontalLayout1.addItem(spacerItem)
        self.horizontalLayout1.addItem(spacerItem)

        self.downsampleLabel = QtWidgets.QLabel(self)
        self.downsampleLabel.setText('Downsample')
        self.downampleValue = QtWidgets.QLineEdit(self.downsampleLabel)
        self.downampleValue.setText("100")
        self.downampleValue.editingFinished.connect(self.changeDownsampling)
        self.horizontalLayout1.addWidget(self.downsampleLabel)
        self.horizontalLayout1.addWidget(self.downampleValue)

        self.verticalLayout.addLayout(self.horizontalLayout1)
Esempio n. 20
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.device = SimpleFOCDevice.getInstance()

        self.sFOCDevice = QtWidgets.QTreeWidgetItem(self)
        self.sFOCDevice.setText(0, 'sFOC Device')
        self.sFOCDevice.setIcon(0, GUIToolKit.getIconByName('motor'))

        self.setColumnCount(2)

        self.motionControl = QtWidgets.QTreeWidgetItem(self.sFOCDevice)
        self.motionControl.setText(0, 'Motion config')
        self.motionControl.setIcon(0, GUIToolKit.getIconByName('pidconfig'))
        self.sFOCDevice.addChild(self.motionControl)

        self.controller = QtWidgets.QTreeWidgetItem(self.motionControl)
        self.controller.setText(0, 'Motion Control Type')
        self.controller.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.selectorControlLoop = QtWidgets.QComboBox(self)
        self.selectorControlLoop.addItems([
            'Torque', 'Velocity', 'Angle', 'Velocity openloop',
            'Angle openloop'
        ])
        self.selectorControlLoop.currentIndexChanged.connect(
            self.changeControlLoop)
        self.setItemWidget(self.controller, 1, self.selectorControlLoop)

        self.torque = QtWidgets.QTreeWidgetItem(self.motionControl)
        self.torque.setText(0, 'Torque Control Type')
        self.torque.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.selectorTorque = QtWidgets.QComboBox(self)
        self.selectorTorque.addItems(['Voltage', 'DC Curret', 'FOC Current'])
        self.selectorTorque.currentIndexChanged.connect(self.changeTorque)
        self.setItemWidget(self.torque, 1, self.selectorTorque)

        self.motionDownsample = QtWidgets.QTreeWidgetItem(self.motionControl)
        self.motionDownsample.setText(0, 'Motion Downsample')
        self.motionDownsample.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.motionDownsample.setText(1, '')
        self.motionDownsample.setFlags(self.motionDownsample.flags()
                                       | QtCore.Qt.ItemIsEditable)

        self.PIDVelocityConfig = self.addPIDSubtree(self.motionControl,
                                                    'Velocity PID')
        self.PIDAngleConfig = self.addPIDSubtree(self.motionControl,
                                                 'Angle PID')
        self.PIDCurrentQConfig = self.addPIDSubtree(self.motionControl,
                                                    'Current q PID')
        self.PIDCurrentDConfig = self.addPIDSubtree(self.motionControl,
                                                    'Current d PID')

        self.limitsConfig = QtWidgets.QTreeWidgetItem(self.sFOCDevice)
        self.limitsConfig.setText(0, 'Limits')
        self.limitsConfig.setIcon(0, GUIToolKit.getIconByName('statistics'))
        self.sFOCDevice.addChild(self.limitsConfig)

        self.velocityLimit = QtWidgets.QTreeWidgetItem(self.limitsConfig)
        self.velocityLimit.setText(0, 'Velocity limit')
        self.velocityLimit.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.velocityLimit.setText(1, '')
        self.velocityLimit.setFlags(self.velocityLimit.flags()
                                    | QtCore.Qt.ItemIsEditable)

        self.voltageLimit = QtWidgets.QTreeWidgetItem(self.limitsConfig)
        self.voltageLimit.setText(0, 'Voltage limit')
        self.voltageLimit.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.voltageLimit.setText(1, '')
        self.voltageLimit.setFlags(self.voltageLimit.flags()
                                   | QtCore.Qt.ItemIsEditable)

        self.currentLimit = QtWidgets.QTreeWidgetItem(self.limitsConfig)
        self.currentLimit.setText(0, 'Current limit')
        self.currentLimit.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.currentLimit.setText(1, '')
        self.currentLimit.setFlags(self.currentLimit.flags()
                                   | QtCore.Qt.ItemIsEditable)

        self.statesConfig = QtWidgets.QTreeWidgetItem(self.sFOCDevice)
        self.statesConfig.setText(0, 'States')
        self.statesConfig.setIcon(0, GUIToolKit.getIconByName('statistics'))
        self.sFOCDevice.addChild(self.statesConfig)

        self.satateTarget = QtWidgets.QTreeWidgetItem(self.statesConfig)
        self.satateTarget.setText(0, 'Target')
        self.satateTarget.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.satateTarget.setText(1, '')

        self.stateVq = QtWidgets.QTreeWidgetItem(self.statesConfig)
        self.stateVq.setText(0, 'Voltage q')
        self.stateVq.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.stateVd = QtWidgets.QTreeWidgetItem(self.statesConfig)
        self.stateVd.setText(0, 'Voltage d')
        self.stateVd.setIcon(0, GUIToolKit.getIconByName('gear'))

        self.stateCq = QtWidgets.QTreeWidgetItem(self.statesConfig)
        self.stateCq.setText(0, 'Current q')
        self.stateCq.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.stateCd = QtWidgets.QTreeWidgetItem(self.statesConfig)
        self.stateCd.setText(0, 'Current d')
        self.stateCd.setIcon(0, GUIToolKit.getIconByName('gear'))

        self.stateVel = QtWidgets.QTreeWidgetItem(self.statesConfig)
        self.stateVel.setText(0, 'Velocity')
        self.stateVel.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.stateVel.setText(1, '')

        self.stateAngle = QtWidgets.QTreeWidgetItem(self.statesConfig)
        self.stateAngle.setText(0, 'Angle')
        self.stateAngle.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.stateAngle.setText(1, '')

        self.sensorConfig = QtWidgets.QTreeWidgetItem(self.sFOCDevice)
        self.sensorConfig.setText(0, 'Sensor config')
        self.sensorConfig.setIcon(0, GUIToolKit.getIconByName('sensor'))
        self.sFOCDevice.addChild(self.sensorConfig)

        self.sensorZeroOffset = QtWidgets.QTreeWidgetItem(self.sensorConfig)
        self.sensorZeroOffset.setText(0, 'Zero Angle Offset')
        self.sensorZeroOffset.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.sensorZeroOffset.setText(1, '')
        self.sensorZeroOffset.setFlags(self.sensorZeroOffset.flags()
                                       | QtCore.Qt.ItemIsEditable)

        self.sensorZeroElecOffset = QtWidgets.QTreeWidgetItem(
            self.sensorConfig)
        self.sensorZeroElecOffset.setText(0, 'Electrical Zero Offset')
        self.sensorZeroElecOffset.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.sensorZeroElecOffset.setText(1, '')
        self.sensorZeroElecOffset.setFlags(self.sensorZeroElecOffset.flags()
                                           | QtCore.Qt.ItemIsEditable)

        self.generalSettings = QtWidgets.QTreeWidgetItem(self.sFOCDevice)
        self.generalSettings.setText(0, 'General settings')
        self.generalSettings.setIcon(
            0, GUIToolKit.getIconByName('generalsettings'))
        self.sFOCDevice.addChild(self.generalSettings)

        self.phaseRes = QtWidgets.QTreeWidgetItem(self.generalSettings)
        self.phaseRes.setText(0, 'Phase Resistance')
        self.phaseRes.setIcon(0, GUIToolKit.getIconByName('res'))
        self.phaseRes.setText(1, '')
        self.phaseRes.setFlags(self.phaseRes.flags()
                               | QtCore.Qt.ItemIsEditable)

        self.deviceStatus = QtWidgets.QTreeWidgetItem(self.generalSettings)
        self.deviceStatus.setText(0, 'Motor Status')
        self.deviceStatus.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.selectStatus = QtWidgets.QComboBox(self)
        self.selectStatus.addItems(['Disabled', 'Enabled'])
        self.selectStatus.currentIndexChanged.connect(self.changeStatus)
        self.setItemWidget(self.deviceStatus, 1, self.selectStatus)

        self.modulationType = QtWidgets.QTreeWidgetItem(self.generalSettings)
        self.modulationType.setText(0, 'PWM modulation')
        self.modulationType.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.selectModulation = QtWidgets.QComboBox(self)
        self.selectModulation.addItems([
            'Sine PWM', 'Space Vector PWM', 'Trapezoidal 120',
            'Trapezoidal 150'
        ])
        self.selectModulation.currentIndexChanged.connect(self.changeModType)
        self.setItemWidget(self.modulationType, 1, self.selectModulation)

        self.modulationCenter = QtWidgets.QTreeWidgetItem(self.generalSettings)
        self.modulationCenter.setText(0, 'Modulation center')
        self.modulationCenter.setIcon(0, GUIToolKit.getIconByName('gear'))
        self.selectModCenter = QtWidgets.QComboBox(self)
        self.selectModCenter.addItems(['Disabled', 'Enabled'])
        self.selectModCenter.currentIndexChanged.connect(self.changeModCenter)
        self.setItemWidget(self.modulationCenter, 1, self.selectModCenter)

        self.customComands = QtWidgets.QTreeWidgetItem(self.sFOCDevice)
        self.customComands.setText(0, 'Custom commands')
        self.customComands.setIcon(0,
                                   GUIToolKit.getIconByName('customcommands'))
        self.sFOCDevice.addChild(self.customComands)

        for customCommand in self.device.customCommands.customCommandsList:
            self.initCustomCommand(customCommand)

        self.installEventFilter(self)
        self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.customCommandsMenu)

        self.header().resizeSection(0, 230)

        self.setAlternatingRowColors(True)
        self.header().hide()
        self.expandItem(self.sFOCDevice)
        self.expandItem(self.motionControl)

        self.device.addConnectionStateListener(self)
        self.device.commProvider.commandDataReceived.connect(
            self.commandResponseReceived)
        self.device.commProvider.stateMonitorReceived.connect(
            self.stateResponseReceived)

        self.itemChanged.connect(self.treeItemEdited)

        self.setEnabled(self.device.isConnected)
Esempio n. 21
0
 def getTabIcon(self):
     return GUIToolKit.getIconByName('motor')
Esempio n. 22
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.device = SimpleFOCDevice.getInstance()

        self.setTitle('Configure serial connection')
        self.setObjectName('configureConnection')

        self.configCoonLayout = QtWidgets.QHBoxLayout(self)
        self.configCoonLayout.setObjectName(
            'configureConnectionorizontalLayout')

        self.portNameLabel = QtWidgets.QLabel(self)
        self.portNameLabel.setObjectName('portNameLabel')
        self.configCoonLayout.addWidget(self.portNameLabel)

        self.portNameComboBox = SerialPortComboBox(self)
        self.portNameComboBox.setObjectName('portNameComboBox')
        self.portNameComboBox.setMinimumWidth(250)
        self.configCoonLayout.addWidget(self.portNameComboBox)

        self.bitRateLabel = QtWidgets.QLabel(self)
        self.bitRateLabel.setObjectName('bitRateLabel')
        self.configCoonLayout.addWidget(self.bitRateLabel)

        self.bitRatelineEdit = QtWidgets.QLineEdit(self)
        self.bitRatelineEdit.setObjectName('bitRatelineEdit')
        self.bitRatelineEdit.setValidator(
            QtGui.QRegExpValidator(QtCore.QRegExp("^[0-9]*$")))
        self.bitRatelineEdit.setText('115200')
        self.configCoonLayout.addWidget(self.bitRatelineEdit)

        self.parityLabel = QtWidgets.QLabel(self)
        self.parityLabel.setObjectName('parityLabel')
        self.configCoonLayout.addWidget(self.parityLabel)

        self.parityComboBox = QtWidgets.QComboBox(self)
        self.parityComboBox.setObjectName('parityComboBox')
        self.parityComboBox.addItems(serial.PARITY_NAMES.values())
        self.configCoonLayout.addWidget(self.parityComboBox)

        serial.PARITY_NAMES.values()

        self.byteSizeLabel = QtWidgets.QLabel(self)
        self.byteSizeLabel.setObjectName('byteSizeLabel')
        self.configCoonLayout.addWidget(self.byteSizeLabel)

        self.byteSizeComboBox = QtWidgets.QComboBox(self)
        self.byteSizeComboBox.setObjectName('byteSizeComboBox')
        byteSizeList = [
            str(serial.EIGHTBITS),
            str(serial.FIVEBITS),
            str(serial.SIXBITS),
            str(serial.SEVENBITS)
        ]
        self.byteSizeComboBox.addItems(byteSizeList)
        self.configCoonLayout.addWidget(self.byteSizeComboBox)

        self.stopBitsLabel = QtWidgets.QLabel(self)
        self.stopBitsLabel.setObjectName('stopBitsLabel')
        self.configCoonLayout.addWidget(self.stopBitsLabel)

        self.stopBitsComboBox = QtWidgets.QComboBox(self)
        byteStopBitsList = [
            str(serial.STOPBITS_ONE),
            str(serial.STOPBITS_ONE_POINT_FIVE),
            str(serial.STOPBITS_TWO)
        ]
        self.stopBitsComboBox.addItems(byteStopBitsList)
        self.stopBitsComboBox.setObjectName('stopBitsComboBox')
        self.configCoonLayout.addWidget(self.stopBitsComboBox)

        self.connectDisconnectButton = QtWidgets.QPushButton(self)
        self.connectDisconnectButton.setIcon(
            GUIToolKit.getIconByName('connect'))
        self.connectDisconnectButton.setObjectName('connectDeviceButton')
        self.connectDisconnectButton.setText('Connect')
        self.connectDisconnectButton.clicked.connect(
            self.connectDisconnectDeviceAction)

        self.configCoonLayout.addWidget(self.connectDisconnectButton)

        self.portNameLabel.setText('Port Name')
        self.bitRateLabel.setText('Bit rate')
        self.parityLabel.setText('Parity')
        self.byteSizeLabel.setText('Byte size')
        self.stopBitsLabel.setText('Stop bits')

        self.device.addConnectionStateListener(self)
        self.connectionStateChanged(self.device.isConnected)
    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.setWindowTitle("Generate minimal strcture")
        self.setWindowIcon(GUIToolKit.getIconByName('gen'))

        self.motorSelsctionLayout = QVBoxLayout()

        self.motorLable = IconLabel(
            'add',
            'Motors',
            hyperlink='https://docs.simplefoc.com/motors_config',
            link_label='Docs')

        self.checkBoxBLDCMotor = QtWidgets.QCheckBox()
        self.checkBoxBLDCMotor.setObjectName('BLDC_motor')
        self.checkBoxBLDCMotor.setText("BLDC Motor")

        self.checkBoxStepperMotor = QtWidgets.QCheckBox()
        self.checkBoxStepperMotor.setObjectName('Stepper_motor')
        self.checkBoxStepperMotor.setText("Stepper Motor")

        self.motorSelsctionLayout.addWidget(self.motorLable)
        self.motorSelsctionLayout.addWidget(self.checkBoxBLDCMotor)
        self.motorSelsctionLayout.addWidget(self.checkBoxStepperMotor)
        self.motorSelsctionLayout.addStretch()

        self.driverSelsctionLayout = QVBoxLayout()

        self.driverLabel = IconLabel(
            'add',
            'Drivers',
            hyperlink='https://docs.simplefoc.com/drivers_config',
            link_label='Docs')

        self.checkBoxBLDCDriver3PWM = QtWidgets.QCheckBox()
        self.checkBoxBLDCDriver3PWM.setObjectName('BLDC_Driver_3PWM')
        self.checkBoxBLDCDriver3PWM.setText("BLDC Driver 3PWM")

        self.checkBoxBLDCDriver6PWM = QtWidgets.QCheckBox()
        self.checkBoxBLDCDriver6PWM.setObjectName('BLDC_Driver_6PWM')
        self.checkBoxBLDCDriver6PWM.setText("BLDC Driver 6PWM")

        self.checkBoxStepperDriver2PWM = QtWidgets.QCheckBox()
        self.checkBoxStepperDriver2PWM.setObjectName('Stepper_Driver_2PWM')
        self.checkBoxStepperDriver2PWM.setText("Stepper Driver 2PWM")

        self.checkBoxStepperDriver4PWM = QtWidgets.QCheckBox()
        self.checkBoxStepperDriver4PWM.setObjectName('Stepper_Driver_4PWM')
        self.checkBoxStepperDriver4PWM.setText("Stepper Driver 2PWM")

        self.driverSelsctionLayout.addWidget(self.driverLabel)
        self.driverSelsctionLayout.addWidget(self.checkBoxBLDCDriver3PWM)
        self.driverSelsctionLayout.addWidget(self.checkBoxBLDCDriver6PWM)
        self.driverSelsctionLayout.addWidget(self.checkBoxStepperDriver2PWM)
        self.driverSelsctionLayout.addWidget(self.checkBoxStepperDriver4PWM)
        self.driverSelsctionLayout.addStretch()

        self.sensorSelsctionLayout = QVBoxLayout()

        self.sensorLabel = IconLabel(
            'add',
            'Position Sensors',
            hyperlink='https://docs.simplefoc.com/sensors',
            link_label='Docs')

        self.checkBoxEncoder = QtWidgets.QCheckBox()
        self.checkBoxEncoder.setObjectName('Encoder')
        self.checkBoxEncoder.setText("Encoder")

        self.checkBoxHallSensor = QtWidgets.QCheckBox()
        self.checkBoxHallSensor.setObjectName('Hall_Sensor')
        self.checkBoxHallSensor.setText("Hall Sensor")

        self.checkBoxMagneticSPI = QtWidgets.QCheckBox()
        self.checkBoxMagneticSPI.setObjectName('MagSPI')
        self.checkBoxMagneticSPI.setText("Magnetic SPI")

        self.checkBoxMagneticI2C = QtWidgets.QCheckBox()
        self.checkBoxMagneticI2C.setObjectName('MagI2C')
        self.checkBoxMagneticI2C.setText("Magnetic I2C")

        self.checkBoxMagneticPWM = QtWidgets.QCheckBox()
        self.checkBoxMagneticPWM.setObjectName('MagPWM')
        self.checkBoxMagneticPWM.setText("Magnetic PWM")

        self.checkBoxMagneticAnalog = QtWidgets.QCheckBox()
        self.checkBoxMagneticAnalog.setObjectName('MagAnalog')
        self.checkBoxMagneticAnalog.setText("Magnetic Analog")

        self.sensorSelsctionLayout.addWidget(self.sensorLabel)
        self.sensorSelsctionLayout.addWidget(self.checkBoxEncoder)
        self.sensorSelsctionLayout.addWidget(self.checkBoxHallSensor)
        self.sensorSelsctionLayout.addWidget(self.checkBoxMagneticSPI)
        self.sensorSelsctionLayout.addWidget(self.checkBoxMagneticI2C)
        self.sensorSelsctionLayout.addWidget(self.checkBoxMagneticPWM)
        self.sensorSelsctionLayout.addWidget(self.checkBoxMagneticAnalog)
        self.sensorSelsctionLayout.addStretch()

        self.csSelsctionLayout = QVBoxLayout()
        self.csLable = IconLabel(
            'add',
            'Current Senses',
            hyperlink='https://docs.simplefoc.com/current_sense',
            link_label='Docs')

        self.checkBoxCSInline = QtWidgets.QCheckBox()
        self.checkBoxCSInline.setObjectName('Inline')
        self.checkBoxCSInline.setText("In-line")

        self.checkBoxCSLowside = QtWidgets.QCheckBox()
        self.checkBoxCSLowside.setObjectName('lowside')
        self.checkBoxCSLowside.setText("Low-Side")

        self.csSelsctionLayout.addWidget(self.csLable)
        self.csSelsctionLayout.addWidget(self.checkBoxCSInline)
        self.csSelsctionLayout.addWidget(self.checkBoxCSLowside)
        self.csSelsctionLayout.addStretch()

        self.commSelsctionLayout = QVBoxLayout()

        self.csLable = IconLabel(
            'add',
            'Communications',
            hyperlink='https://docs.simplefoc.com/communication',
            link_label='Docs')

        self.checkBoxCommander = QtWidgets.QCheckBox()
        self.checkBoxCommander.setObjectName('Commander')
        self.checkBoxCommander.setText("Commander")

        self.checkBoxCommStepDir = QtWidgets.QCheckBox()
        self.checkBoxCommStepDir.setObjectName('Step-Dir')
        self.checkBoxCommStepDir.setText("Step-Dir")

        self.commSelsctionLayout.addWidget(self.csLable)
        self.commSelsctionLayout.addWidget(self.checkBoxCommander)
        self.commSelsctionLayout.addWidget(self.checkBoxCommStepDir)
        self.commSelsctionLayout.addStretch()

        self.pathLable = IconLabel('gear', 'Project settings')
        self.folderPath = SimplePathWidget()
        self.projectNameLabel = QLabel('Project Name')
        self.projectNameEdit = QLineEdit('minimal_project')
        self.projectNameLayout = QHBoxLayout()
        self.projectNameLayout.addWidget(self.projectNameLabel)
        self.projectNameLayout.addWidget(self.projectNameEdit)

        self.mcuLable = IconLabel(
            'sensor',
            'Microcontroller type',
            hyperlink='https://docs.simplefoc.com/microcontrollers',
            link_label='Supported mcus')
        self.dropDownMCU = QComboBox()
        for family in supportedMCUS:
            self.dropDownMCU.addItem(supportedMCUS[family], family)

        QBtn = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel

        self.buttonBox = QtWidgets.QDialogButtonBox(QBtn)
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)

        text = "<h1>Arduino Minimal Project Code Generation</h1>"
        text += "Generating minimal arduino project using the <i>Simple<b>FOC</b>Studio</i>, based on the <i>Simple<b>FOC</b>library</i> <small>v2.2</small> <br><br>"
        text += "This code will generate a minimal stand alone arduino project which can help you reduce the overall library footprint and isolate only<br> the library code that you actually use in your application.<br>"
        text += "<h4>Choose the library components that you need:</h4>"

        self.layout = QtWidgets.QVBoxLayout()
        message1 = QtWidgets.QLabel(text)
        self.layout.addWidget(message1)
        layoutCheck = QtWidgets.QHBoxLayout()
        layoutCheck.addLayout(self.motorSelsctionLayout)
        layoutCheck.addLayout(self.driverSelsctionLayout)
        layoutCheck.addLayout(self.sensorSelsctionLayout)
        layoutCheck.addLayout(self.csSelsctionLayout)
        layoutCheck.addLayout(self.commSelsctionLayout)
        self.layout.addLayout(layoutCheck)
        self.layout.addWidget(self.mcuLable)
        self.layout.addWidget(self.dropDownMCU)
        self.layout.addWidget(self.pathLable)
        self.layout.addWidget(self.folderPath)
        self.layout.addLayout(self.projectNameLayout)
        self.layout.addWidget(self.buttonBox)
        self.setLayout(self.layout)