minikube/gui/basicview.cpp

104 lines
3.6 KiB
C++
Raw Normal View History

#include "basicview.h"
#include <QVBoxLayout>
BasicView::BasicView()
{
basicView = new QWidget();
startButton = new QPushButton(tr("Start"));
stopButton = new QPushButton(tr("Stop"));
pauseButton = new QPushButton(tr("Pause"));
deleteButton = new QPushButton(tr("Delete"));
refreshButton = new QPushButton(tr("Refresh"));
2022-07-08 23:46:29 +00:00
dockerEnvButton = new QPushButton(tr("docker-env"));
dockerEnvButton->setToolTip(
2022-07-14 21:24:39 +00:00
"Opens a terminal where the docker-cli points to docker engine inside "
"minikube\n(Useful for building docker images directly inside minikube)");
sshButton = new QPushButton(tr("SSH"));
dashboardButton = new QPushButton(tr("Dashboard"));
advancedButton = new QPushButton(tr("Advanced View"));
disableButtons();
QVBoxLayout *buttonLayout = new QVBoxLayout;
basicView->setLayout(buttonLayout);
buttonLayout->addWidget(startButton);
buttonLayout->addWidget(stopButton);
buttonLayout->addWidget(pauseButton);
buttonLayout->addWidget(deleteButton);
buttonLayout->addWidget(refreshButton);
2022-07-08 23:46:29 +00:00
buttonLayout->addWidget(dockerEnvButton);
buttonLayout->addWidget(sshButton);
buttonLayout->addWidget(dashboardButton);
buttonLayout->addWidget(advancedButton);
basicView->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
connect(startButton, &QPushButton::clicked, this, &BasicView::start);
connect(stopButton, &QAbstractButton::clicked, this, &BasicView::stop);
connect(pauseButton, &QAbstractButton::clicked, this, &BasicView::pause);
connect(deleteButton, &QAbstractButton::clicked, this, &BasicView::delete_);
connect(refreshButton, &QAbstractButton::clicked, this, &BasicView::refresh);
2022-07-08 23:46:29 +00:00
connect(dockerEnvButton, &QAbstractButton::clicked, this, &BasicView::dockerEnv);
connect(sshButton, &QAbstractButton::clicked, this, &BasicView::ssh);
connect(dashboardButton, &QAbstractButton::clicked, this, &BasicView::dashboard);
connect(advancedButton, &QAbstractButton::clicked, this, &BasicView::advanced);
}
static QString getPauseLabel(bool isPaused)
{
if (isPaused) {
return "Unpause";
}
return "Pause";
}
static QString getStartLabel(bool isRunning)
{
if (isRunning) {
2022-08-03 19:45:46 +00:00
return "Restart";
}
return "Start";
}
void BasicView::update(Cluster cluster)
{
startButton->setEnabled(true);
advancedButton->setEnabled(true);
refreshButton->setEnabled(true);
bool exists = !cluster.isEmpty();
bool isRunning = cluster.status() == "Running";
bool isPaused = cluster.status() == "Paused";
stopButton->setEnabled(isRunning || isPaused);
pauseButton->setEnabled(isRunning || isPaused);
deleteButton->setEnabled(exists);
dashboardButton->setEnabled(isRunning);
#if __linux__ || __APPLE__
2022-07-08 23:46:29 +00:00
dockerEnvButton->setEnabled(isRunning);
sshButton->setEnabled(exists);
#else
2022-07-08 23:46:29 +00:00
dockerEnvButton->setEnabled(false);
2022-05-19 01:10:58 +00:00
sshButton->setEnabled(false);
#endif
pauseButton->setText(getPauseLabel(isPaused));
startButton->setText(getStartLabel(isRunning));
2022-08-03 19:45:46 +00:00
QString startToolTip = "";
if (isRunning) {
2022-08-03 19:59:46 +00:00
startToolTip = "Restart an already running minikube instance to pickup config changes.";
2022-08-03 19:45:46 +00:00
}
startButton->setToolTip(startToolTip);
}
void BasicView::disableButtons()
{
startButton->setEnabled(false);
stopButton->setEnabled(false);
deleteButton->setEnabled(false);
pauseButton->setEnabled(false);
2022-07-08 23:46:29 +00:00
dockerEnvButton->setEnabled(false);
sshButton->setEnabled(false);
dashboardButton->setEnabled(false);
advancedButton->setEnabled(false);
refreshButton->setEnabled(false);
}