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

#ifndef UI_AIGUIDEWIZARD_H
#define UI_AIGUIDEWIZARD_H

#include <QtCore/QVariant>
#include <QtGui/QIcon>
#include <QtWidgets/QApplication>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QFrame>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QProgressBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QStackedWidget>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
#include <QtWidgets/QWizard>
#include <QtWidgets/QWizardPage>
#include <klocalizedstring.h>

QT_BEGIN_NAMESPACE

class Ui_AIGuideWizard
{
public:
    QWizardPage *wizardPage1;
    QVBoxLayout *verticalLayout_1;
    QLabel *experimentalWarningLabel;
    QHBoxLayout *horizontalLayout_1;
    QLabel *label;
    QComboBox *mountTypeCombo;
    QSpacerItem *horizontalSpacer_1;
    QLabel *exposureLabel;
    QLabel *lockedSettingsLabel;
    QSpacerItem *verticalSpacer_1;
    QWizardPage *wizardPage2;
    QVBoxLayout *verticalLayout_2;
    QLabel *algorithmWarningLabel;
    QStackedWidget *protocolStackedWidget;
    QWidget *pageWormGear;
    QVBoxLayout *verticalLayout_WormGear;
    QLabel *labelWormGear;
    QWidget *pageHarmonic;
    QVBoxLayout *verticalLayout_Harmonic;
    QLabel *labelHarmonic;
    QWidget *pageDirectDrive;
    QVBoxLayout *verticalLayout_DirectDrive;
    QLabel *labelDirectDrive;
    QFrame *line;
    QSpacerItem *verticalSpacer_2;
    QWizardPage *wizardPage3;
    QVBoxLayout *verticalLayout_3;
    QLabel *statusLabel;
    QHBoxLayout *horizontalLayout_progress;
    QProgressBar *progressBar;
    QPushButton *stopButton;
    QTextEdit *logTextEdit;
    QWizardPage *wizardPage4;
    QVBoxLayout *verticalLayout_4;
    QSpacerItem *verticalSpacer_top;
    QPushButton *exportOfflineButton;
    QPushButton *trainEkosLiveButton;
    QPushButton *offlineDocsButton;
    QSpacerItem *verticalSpacer_bottom;

    void setupUi(QWizard *AIGuideWizard)
    {
        if (AIGuideWizard->objectName().isEmpty())
            AIGuideWizard->setObjectName("AIGuideWizard");
        AIGuideWizard->resize(640, 480);
        AIGuideWizard->setWizardStyle(QWizard::ModernStyle);
        wizardPage1 = new QWizardPage();
        wizardPage1->setObjectName("wizardPage1");
        verticalLayout_1 = new QVBoxLayout(wizardPage1);
        verticalLayout_1->setObjectName("verticalLayout_1");
        experimentalWarningLabel = new QLabel(wizardPage1);
        experimentalWarningLabel->setObjectName("experimentalWarningLabel");
        experimentalWarningLabel->setWordWrap(true);

        verticalLayout_1->addWidget(experimentalWarningLabel);

        horizontalLayout_1 = new QHBoxLayout();
        horizontalLayout_1->setObjectName("horizontalLayout_1");
        label = new QLabel(wizardPage1);
        label->setObjectName("label");

        horizontalLayout_1->addWidget(label);

        mountTypeCombo = new QComboBox(wizardPage1);
        mountTypeCombo->addItem(QString());
        mountTypeCombo->addItem(QString());
        mountTypeCombo->addItem(QString());
        mountTypeCombo->setObjectName("mountTypeCombo");

        horizontalLayout_1->addWidget(mountTypeCombo);

        horizontalSpacer_1 = new QSpacerItem(0, 0, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum);

        horizontalLayout_1->addItem(horizontalSpacer_1);


        verticalLayout_1->addLayout(horizontalLayout_1);

        exposureLabel = new QLabel(wizardPage1);
        exposureLabel->setObjectName("exposureLabel");
        exposureLabel->setWordWrap(true);

        verticalLayout_1->addWidget(exposureLabel);

        lockedSettingsLabel = new QLabel(wizardPage1);
        lockedSettingsLabel->setObjectName("lockedSettingsLabel");
        lockedSettingsLabel->setWordWrap(true);

        verticalLayout_1->addWidget(lockedSettingsLabel);

        verticalSpacer_1 = new QSpacerItem(0, 0, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding);

        verticalLayout_1->addItem(verticalSpacer_1);

        AIGuideWizard->addPage(wizardPage1);
        wizardPage2 = new QWizardPage();
        wizardPage2->setObjectName("wizardPage2");
        verticalLayout_2 = new QVBoxLayout(wizardPage2);
        verticalLayout_2->setObjectName("verticalLayout_2");
        algorithmWarningLabel = new QLabel(wizardPage2);
        algorithmWarningLabel->setObjectName("algorithmWarningLabel");
        algorithmWarningLabel->setWordWrap(true);

        verticalLayout_2->addWidget(algorithmWarningLabel);

        protocolStackedWidget = new QStackedWidget(wizardPage2);
        protocolStackedWidget->setObjectName("protocolStackedWidget");
        pageWormGear = new QWidget();
        pageWormGear->setObjectName("pageWormGear");
        verticalLayout_WormGear = new QVBoxLayout(pageWormGear);
        verticalLayout_WormGear->setObjectName("verticalLayout_WormGear");
        verticalLayout_WormGear->setContentsMargins(0, -1, 0, -1);
        labelWormGear = new QLabel(pageWormGear);
        labelWormGear->setObjectName("labelWormGear");
        labelWormGear->setWordWrap(true);

        verticalLayout_WormGear->addWidget(labelWormGear);

        protocolStackedWidget->addWidget(pageWormGear);
        pageHarmonic = new QWidget();
        pageHarmonic->setObjectName("pageHarmonic");
        verticalLayout_Harmonic = new QVBoxLayout(pageHarmonic);
        verticalLayout_Harmonic->setObjectName("verticalLayout_Harmonic");
        verticalLayout_Harmonic->setContentsMargins(0, -1, 0, -1);
        labelHarmonic = new QLabel(pageHarmonic);
        labelHarmonic->setObjectName("labelHarmonic");
        labelHarmonic->setWordWrap(true);

        verticalLayout_Harmonic->addWidget(labelHarmonic);

        protocolStackedWidget->addWidget(pageHarmonic);
        pageDirectDrive = new QWidget();
        pageDirectDrive->setObjectName("pageDirectDrive");
        verticalLayout_DirectDrive = new QVBoxLayout(pageDirectDrive);
        verticalLayout_DirectDrive->setObjectName("verticalLayout_DirectDrive");
        verticalLayout_DirectDrive->setContentsMargins(0, -1, 0, -1);
        labelDirectDrive = new QLabel(pageDirectDrive);
        labelDirectDrive->setObjectName("labelDirectDrive");
        labelDirectDrive->setWordWrap(true);

        verticalLayout_DirectDrive->addWidget(labelDirectDrive);

        protocolStackedWidget->addWidget(pageDirectDrive);

        verticalLayout_2->addWidget(protocolStackedWidget);

        line = new QFrame(wizardPage2);
        line->setObjectName("line");
        line->setFrameShape(QFrame::Shape::HLine);
        line->setFrameShadow(QFrame::Shadow::Sunken);

        verticalLayout_2->addWidget(line);

        verticalSpacer_2 = new QSpacerItem(0, 0, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding);

        verticalLayout_2->addItem(verticalSpacer_2);

        AIGuideWizard->addPage(wizardPage2);
        wizardPage3 = new QWizardPage();
        wizardPage3->setObjectName("wizardPage3");
        verticalLayout_3 = new QVBoxLayout(wizardPage3);
        verticalLayout_3->setObjectName("verticalLayout_3");
        statusLabel = new QLabel(wizardPage3);
        statusLabel->setObjectName("statusLabel");

        verticalLayout_3->addWidget(statusLabel);

        horizontalLayout_progress = new QHBoxLayout();
        horizontalLayout_progress->setObjectName("horizontalLayout_progress");
        progressBar = new QProgressBar(wizardPage3);
        progressBar->setObjectName("progressBar");
        progressBar->setValue(0);

        horizontalLayout_progress->addWidget(progressBar);

        stopButton = new QPushButton(wizardPage3);
        stopButton->setObjectName("stopButton");
        QIcon icon(QIcon::fromTheme(QString::fromUtf8("process-stop")));
        stopButton->setIcon(icon);

        horizontalLayout_progress->addWidget(stopButton);


        verticalLayout_3->addLayout(horizontalLayout_progress);

        logTextEdit = new QTextEdit(wizardPage3);
        logTextEdit->setObjectName("logTextEdit");
        logTextEdit->setReadOnly(true);

        verticalLayout_3->addWidget(logTextEdit);

        AIGuideWizard->addPage(wizardPage3);
        wizardPage4 = new QWizardPage();
        wizardPage4->setObjectName("wizardPage4");
        verticalLayout_4 = new QVBoxLayout(wizardPage4);
        verticalLayout_4->setObjectName("verticalLayout_4");
        verticalSpacer_top = new QSpacerItem(0, 0, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding);

        verticalLayout_4->addItem(verticalSpacer_top);

        exportOfflineButton = new QPushButton(wizardPage4);
        exportOfflineButton->setObjectName("exportOfflineButton");
        QIcon icon1(QIcon::fromTheme(QString::fromUtf8("document-export")));
        exportOfflineButton->setIcon(icon1);
        exportOfflineButton->setMinimumSize(QSize(0, 40));

        verticalLayout_4->addWidget(exportOfflineButton);

        trainEkosLiveButton = new QPushButton(wizardPage4);
        trainEkosLiveButton->setObjectName("trainEkosLiveButton");
        QIcon icon2(QIcon::fromTheme(QString::fromUtf8("network-cloud")));
        trainEkosLiveButton->setIcon(icon2);
        trainEkosLiveButton->setMinimumSize(QSize(0, 40));

        verticalLayout_4->addWidget(trainEkosLiveButton);

        offlineDocsButton = new QPushButton(wizardPage4);
        offlineDocsButton->setObjectName("offlineDocsButton");
        QIcon icon3(QIcon::fromTheme(QString::fromUtf8("help-contents")));
        offlineDocsButton->setIcon(icon3);
        offlineDocsButton->setMinimumSize(QSize(0, 40));

        verticalLayout_4->addWidget(offlineDocsButton);

        verticalSpacer_bottom = new QSpacerItem(0, 0, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding);

        verticalLayout_4->addItem(verticalSpacer_bottom);

        AIGuideWizard->addPage(wizardPage4);

        retranslateUi(AIGuideWizard);
        QObject::connect(mountTypeCombo, &QComboBox::currentIndexChanged, protocolStackedWidget, &QStackedWidget::setCurrentIndex);

        protocolStackedWidget->setCurrentIndex(0);


        QMetaObject::connectSlotsByName(AIGuideWizard);
    } // setupUi

    void retranslateUi(QWizard *AIGuideWizard)
    {
        AIGuideWizard->setWindowTitle(tr2i18n("Ekos Guide AI Assistant (Experimental)", nullptr));
        wizardPage1->setTitle(tr2i18n("Mount Identification", nullptr));
        wizardPage1->setSubTitle(tr2i18n("Welcome to the Ekos AI Guiding Assistant. Please verify your mount type below.", nullptr));
        experimentalWarningLabel->setText(tr2i18n("<html><head/><body><p><span style=\" color:#ff5500; font-weight:600;\">This is an experimental feature. </span></p></body></html>", nullptr));
        label->setText(tr2i18n("Detected Mount Type:", nullptr));
        mountTypeCombo->setItemText(0, tr2i18n("Worm Gear", nullptr));
        mountTypeCombo->setItemText(1, tr2i18n("Harmonic Drive", nullptr));
        mountTypeCombo->setItemText(2, tr2i18n("Direct Drive", nullptr));

        exposureLabel->setText(tr2i18n("<html><head/><body><p><span style=\" font-weight:600;\">Recommended Settings (set BEFORE running):</span></p><ul><li><span style=\" font-weight:600;\">Worm Gear:</span> exposure 2.0s (Default)</li><li><span style=\" font-weight:600;\">Harmonic Drive:</span> exposure 0.5 to 1.0s (depends on guide star SNR)</li><li><span style=\" font-weight:600;\">Direct Drive:</span> exposure 1.0s to 3.0s</li></ul><p>Define an <span style=\" font-weight:600;\">Artificial Horizon</span> (Settings \342\206\222 Artificial Horizon) before running \342\200\224 the protocol slews by Alt/Az and uses it to pick safe targets.</p></body></html>", nullptr));
        lockedSettingsLabel->setText(QString());
        wizardPage2->setTitle(tr2i18n("Protocol Preview", nullptr));
        wizardPage2->setSubTitle(tr2i18n("The assistant will perform the following steps to characterize the tracking errors.", nullptr));
        algorithmWarningLabel->setText(tr2i18n("<html><head/><body><p><span style=\" color:#ff5500;\">The Guide AI Assistant requires the Standard guiding algorithm for both axes during data collection. Your current settings will be temporarily changed to Standard for the duration of the wizard and restored when it completes.</span></p></body></html>", nullptr));
        labelWormGear->setText(tr2i18n("<html><head/><body><p><span style=\" font-weight:600;\">Worm Gear Protocol (~65 mins):</span><br/>1. Slew to High Altitude : Standard guiding, free drift, then PID auto-tune (step response).<br/>2. Slew to Lower Altitude : Standard guiding, then free drift.<br/>3. Slew to High Altitude : Standard guiding, then free drift.</p></body></html>", nullptr));
        labelHarmonic->setText(tr2i18n("<html><head/><body><p><span style=\" font-weight:600;\">Harmonic Drive Protocol (~60 mins):</span><br/>1. Slew to High Altitude: Standard guiding, free drift, then PID auto-tune (step response).<br/>2. Slew to Lower Altitude: Free drift, then standard guiding.</p></body></html>", nullptr));
        labelDirectDrive->setText(tr2i18n("<html><head/><body><p><span style=\" font-weight:600;\">Direct Drive Protocol (~30 mins):</span><br/>1. Slew to High Altitude: Standard guiding, free drift, then PID auto-tune (step response).<br/>2. Slew to Mid Altitude: Standard guiding, then free drift.<br/>3. Slew to Low Altitude: Standard guiding, then free drift.</p></body></html>", nullptr));
        wizardPage3->setTitle(tr2i18n("System Identification Progress", nullptr));
        wizardPage3->setSubTitle(tr2i18n("Collecting mount telemetry. Please do not interrupt the process unless necessary.", nullptr));
        statusLabel->setText(tr2i18n("Ready to begin...", nullptr));
        stopButton->setText(tr2i18n("Stop", nullptr));
        logTextEdit->setHtml(tr2i18n("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Waiting to start...</p></body></html>", nullptr));
        wizardPage4->setTitle(tr2i18n("Data Collection Complete", nullptr));
        wizardPage4->setSubTitle(tr2i18n("System identification data has been saved. Please choose a training method.", nullptr));
        exportOfflineButton->setText(tr2i18n("Export for offline training", nullptr));
#if QT_CONFIG(tooltip)
        exportOfflineButton->setToolTip(tr2i18n("Saves the system identification data to a JSON file so you can train the AI model on your local computer using the provided Python scripts.", nullptr));
#endif // QT_CONFIG(tooltip)
        trainEkosLiveButton->setText(tr2i18n("Train in EkosLive", nullptr));
#if QT_CONFIG(tooltip)
        trainEkosLiveButton->setToolTip(tr2i18n("Uploads anonymized data to EkosLive Cloud to instantly train your model using community baselines. (Target coordinates are stripped).", nullptr));
#endif // QT_CONFIG(tooltip)
        offlineDocsButton->setText(tr2i18n("Offline Training Guide", nullptr));
#if QT_CONFIG(tooltip)
        offlineDocsButton->setToolTip(tr2i18n("Open the KStars documentation on training the model offline.", nullptr));
#endif // QT_CONFIG(tooltip)
    } // retranslateUi

};

namespace Ui {
    class AIGuideWizard: public Ui_AIGuideWizard {};
} // namespace Ui

QT_END_NAMESPACE

#endif // AIGUIDEWIZARD_H

