# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'nv200_controller_widget.ui'
##
## Created by: Qt User Interface Compiler version 6.9.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QAbstractSpinBox, QApplication, QCheckBox, QComboBox,
    QDoubleSpinBox, QFrame, QSizePolicy, QSpinBox,
    QWidget)

from pysoworks.svg_cycle_widget import SvgCycleWidget
import pysoworks.pysoworks_rc

class Ui_nv200ControllerWidget(object):
    def setupUi(self, nv200ControllerWidget):
        if not nv200ControllerWidget.objectName():
            nv200ControllerWidget.setObjectName(u"nv200ControllerWidget")
        nv200ControllerWidget.resize(1124, 575)
        nv200ControllerWidget.setAutoFillBackground(False)
        nv200ControllerWidget.setStyleSheet(u"#nv200ControllerWidget{\n"
"background-image: url(:/assets/images/nv200_controller_structure.png);\n"
"background-repeat: no-repeat;}")
        self.srSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.srSpinBox.setObjectName(u"srSpinBox")
        self.srSpinBox.setGeometry(QRect(245, 90, 75, 24))
        sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.srSpinBox.sizePolicy().hasHeightForWidth())
        self.srSpinBox.setSizePolicy(sizePolicy)
        self.srSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.srSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.srSpinBox.setDecimals(3)
        self.setlpfSpinBox = QSpinBox(nv200ControllerWidget)
        self.setlpfSpinBox.setObjectName(u"setlpfSpinBox")
        self.setlpfSpinBox.setGeometry(QRect(352, 109, 106, 24))
        self.setlpfSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.notchonCheckBox = QCheckBox(nv200ControllerWidget)
        self.notchonCheckBox.setObjectName(u"notchonCheckBox")
        self.notchonCheckBox.setGeometry(QRect(811, 156, 96, 20))
        self.notchonCheckBox.setChecked(True)
        self.notchonCheckBox.setProperty(u"toggleSwitch", True)
        self.notchbSpinBox = QSpinBox(nv200ControllerWidget)
        self.notchbSpinBox.setObjectName(u"notchbSpinBox")
        self.notchbSpinBox.setGeometry(QRect(811, 213, 118, 24))
        self.notchbSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.notchfSpinBox = QSpinBox(nv200ControllerWidget)
        self.notchfSpinBox.setObjectName(u"notchfSpinBox")
        self.notchfSpinBox.setGeometry(QRect(811, 183, 118, 24))
        self.notchfSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.kiSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.kiSpinBox.setObjectName(u"kiSpinBox")
        self.kiSpinBox.setGeometry(QRect(528, 196, 120, 24))
        sizePolicy.setHeightForWidth(self.kiSpinBox.sizePolicy().hasHeightForWidth())
        self.kiSpinBox.setSizePolicy(sizePolicy)
        self.kiSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.kiSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.kiSpinBox.setDecimals(3)
        self.kiSpinBox.setMaximum(500.000000000000000)
        self.pcfxSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.pcfxSpinBox.setObjectName(u"pcfxSpinBox")
        self.pcfxSpinBox.setGeometry(QRect(527, 82, 120, 24))
        sizePolicy.setHeightForWidth(self.pcfxSpinBox.sizePolicy().hasHeightForWidth())
        self.pcfxSpinBox.setSizePolicy(sizePolicy)
        self.pcfxSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.pcfxSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.pcfxSpinBox.setDecimals(6)
        self.setlponCheckBox = QCheckBox(nv200ControllerWidget)
        self.setlponCheckBox.setObjectName(u"setlponCheckBox")
        self.setlponCheckBox.setGeometry(QRect(352, 80, 96, 20))
        self.setlponCheckBox.setProperty(u"toggleSwitch", True)
        self.pcfvSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.pcfvSpinBox.setObjectName(u"pcfvSpinBox")
        self.pcfvSpinBox.setGeometry(QRect(527, 46, 120, 24))
        sizePolicy.setHeightForWidth(self.pcfvSpinBox.sizePolicy().hasHeightForWidth())
        self.pcfvSpinBox.setSizePolicy(sizePolicy)
        self.pcfvSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.pcfvSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.pcfvSpinBox.setDecimals(6)
        self.kdSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.kdSpinBox.setObjectName(u"kdSpinBox")
        self.kdSpinBox.setGeometry(QRect(528, 226, 120, 24))
        sizePolicy.setHeightForWidth(self.kdSpinBox.sizePolicy().hasHeightForWidth())
        self.kdSpinBox.setSizePolicy(sizePolicy)
        self.kdSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.kdSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.kdSpinBox.setDecimals(3)
        self.kdSpinBox.setMaximum(5.000000000000000)
        self.kdSpinBox.setSingleStep(0.010000000000000)
        self.poslpfSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.poslpfSpinBox.setObjectName(u"poslpfSpinBox")
        self.poslpfSpinBox.setGeometry(QRect(351, 216, 110, 24))
        sizePolicy.setHeightForWidth(self.poslpfSpinBox.sizePolicy().hasHeightForWidth())
        self.poslpfSpinBox.setSizePolicy(sizePolicy)
        self.poslpfSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.poslpfSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.poslpfSpinBox.setDecimals(3)
        self.pcfaSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.pcfaSpinBox.setObjectName(u"pcfaSpinBox")
        self.pcfaSpinBox.setGeometry(QRect(527, 20, 120, 24))
        sizePolicy.setHeightForWidth(self.pcfaSpinBox.sizePolicy().hasHeightForWidth())
        self.pcfaSpinBox.setSizePolicy(sizePolicy)
        self.pcfaSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.pcfaSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.pcfaSpinBox.setDecimals(6)
        self.kpSpinBox = QDoubleSpinBox(nv200ControllerWidget)
        self.kpSpinBox.setObjectName(u"kpSpinBox")
        self.kpSpinBox.setGeometry(QRect(528, 166, 120, 24))
        sizePolicy.setHeightForWidth(self.kpSpinBox.sizePolicy().hasHeightForWidth())
        self.kpSpinBox.setSizePolicy(sizePolicy)
        self.kpSpinBox.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
        self.kpSpinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.kpSpinBox.setDecimals(3)
        self.kpSpinBox.setMaximum(5.000000000000000)
        self.kpSpinBox.setSingleStep(0.010000000000000)
        self.poslponCheckBox = QCheckBox(nv200ControllerWidget)
        self.poslponCheckBox.setObjectName(u"poslponCheckBox")
        self.poslponCheckBox.setGeometry(QRect(351, 189, 105, 20))
        self.poslponCheckBox.setProperty(u"toggleSwitch", True)
        self.modsrcToggleWidget = SvgCycleWidget(nv200ControllerWidget)
        self.modsrcToggleWidget.setObjectName(u"modsrcToggleWidget")
        self.modsrcToggleWidget.setGeometry(QRect(192, 75, 40, 54))
        self.modsrcToggleWidget.setStyleSheet(u"#modsrcToggleWidget {background: #80ff0000;}")
        self.clToggleWidget = SvgCycleWidget(nv200ControllerWidget)
        self.clToggleWidget.setObjectName(u"clToggleWidget")
        self.clToggleWidget.setGeometry(QRect(706, 179, 65, 34))
        self.clToggleWidget.setStyleSheet(u"#clToggleWidget {background: #80ff0000;}")
        self.monsrcComboBox = QComboBox(nv200ControllerWidget)
        self.monsrcComboBox.setObjectName(u"monsrcComboBox")
        self.monsrcComboBox.setGeometry(QRect(153, 302, 148, 24))
        self.spiSrcComboBox = QComboBox(nv200ControllerWidget)
        self.spiSrcComboBox.setObjectName(u"spiSrcComboBox")
        self.spiSrcComboBox.setGeometry(QRect(153, 363, 148, 24))

        self.retranslateUi(nv200ControllerWidget)

        QMetaObject.connectSlotsByName(nv200ControllerWidget)
    # setupUi

    def retranslateUi(self, nv200ControllerWidget):
        nv200ControllerWidget.setWindowTitle(QCoreApplication.translate("nv200ControllerWidget", u"Frame", None))
#if QT_CONFIG(tooltip)
        self.srSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Sew Rate Limit</span></p><p>Sets the slew rate limit (% per millisecond). Limits how fast the value can change over time.</p><p>Range: 0.0000008 to 2000.0 %/ms.  </p><p>2000 disables the limit.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.srSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"sr   ", None))
#if QT_CONFIG(tooltip)
        self.setlpfSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Setpoint Lowpass Filter On</span></p><p>Enables or disables the setpoint lowpass filter. </p><p>When enabled, it smooths rapid changes in the setpoint to reduce oscillations and improve system stability.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.setlpfSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"setlpf   ", None))
#if QT_CONFIG(tooltip)
        self.notchonCheckBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Notch Filter On</span></p><p>Enables or disables the notch filter.</p><p>When enabled, the filter attenuates specific frequency components to reduce unwanted vibrations or noise.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.notchonCheckBox.setText(QCoreApplication.translate("nv200ControllerWidget", u"notchon", None))
#if QT_CONFIG(tooltip)
        self.notchbSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Notch Filter Bandwidth</span></p><p>Sets the -3 dB bandwidth of the notch filter around the center frequency.</p><p>Range: 1 to 10,000 Hz (maximum 2 \u00d7 Notch Filter Frequency).</p><p>Defines the width of the frequency range that will be attenuated.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.notchbSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"notchb   ", None))
#if QT_CONFIG(tooltip)
        self.notchfSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Notch Filter Frequency</span></p><p>Sets the center frequency of the notch filter.</p><p>Range: 1 to 10,000 Hz.</p><p>This frequency is attenuated to reduce vibrations or noise at that specific frequency</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.notchfSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"notchf   ", None))
#if QT_CONFIG(tooltip)
        self.kiSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Integral Gain (Ki)</span></p><p>Sets the amplification factor of the PID controller\u2019s integral term.</p><p>Range: 0 to 10,000. </p><p>A value of 0 disables the integral action.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.kiSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"ki   ", None))
#if QT_CONFIG(tooltip)
        self.pcfxSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Position Feedforward Gain</span></p><p>Sets the feedforward gain applied to the position component in the PID controller.<br/>Enhances control accuracy by anticipating position errors.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.pcfxSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"pcf_x   ", None))
#if QT_CONFIG(tooltip)
        self.setlponCheckBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Measured Position Lowpass Filter On</span></p><p>Enables or disables the lowpass filter applied to the measured position signal.</p><p>When enabled, it smooths the position data to reduce measurement noise.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.setlponCheckBox.setText(QCoreApplication.translate("nv200ControllerWidget", u"setlpon", None))
#if QT_CONFIG(tooltip)
        self.pcfvSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Velocity Feedforward Gain</span></p><p>Sets the feedforward gain applied to the velocity component in the PID controller.<br/>Improves response by directly contributing to the control output based on target velocity.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.pcfvSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"pcv_v   ", None))
#if QT_CONFIG(tooltip)
        self.kdSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Derivative Gain (Kd)</span></p><p>Sets the amplification factor of the PID controller\u2019s differential term.</p><p>Range: 0 to 10,000. </p><p>A value of 0 disables the derivative action.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.kdSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"kd  ", None))
#if QT_CONFIG(tooltip)
        self.poslpfSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Measured Position Lowpass Filter Cutoff</span></p><p>Sets the cutoff frequency of the lowpass filter applied to the measured position.</p><p>Higher values allow more signal detail; lower values provide stronger smoothing.</p><p>Range: 1 to 10,000 Hz.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.poslpfSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"poslpf   ", None))
#if QT_CONFIG(tooltip)
        self.pcfaSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Acceleration Feedforward Gain</span></p><p>Sets the feedforward gain applied to the acceleration component in the PID controller.<br/>Helps improve control response by anticipating acceleration demands.<br/>Internally scaled by 1\u20441,000,000 to allow fine adjustment.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.pcfaSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"pcf_a   ", None))
#if QT_CONFIG(tooltip)
        self.kpSpinBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Proportional Gain (Kp)</span></p><p>Sets the amplification factor of the PID controller\u2019s proportional term.</p><p>Range: 0 to 10,000. </p><p>A value of 0 disables the proportional action.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.kpSpinBox.setPrefix(QCoreApplication.translate("nv200ControllerWidget", u"kp   ", None))
#if QT_CONFIG(tooltip)
        self.poslponCheckBox.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Measured Position Lowpass Filter On</span></p><p>Enables or disables the lowpass filter applied to the measured position.</p><p>When enabled, it smooths the position signal to reduce noise before further processing.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.poslponCheckBox.setText(QCoreApplication.translate("nv200ControllerWidget", u"poslpon", None))
#if QT_CONFIG(tooltip)
        self.modsrcToggleWidget.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Setpoint Signal Source</span></p><p>Selects the input source for the control setpoint.</p><p>Options:<br/>0 = Set command via USB or Ethernet<br/>1 = Analog Input<br/>2 = SPI<br/>3 = Arbitrary Waveform Generator</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(tooltip)
        self.clToggleWidget.setToolTip(QCoreApplication.translate("nv200ControllerWidget", u"<html><head/><body><p><span style=\" font-weight:700;\">Control Loop Mode</span></p><p>Selects between open-loop and closed-loop control modes for the PID controller.</p></body></html>", None))
#endif // QT_CONFIG(tooltip)
    # retranslateUi

