Merge pull request #14553 from spowelljr/dockerEnvGUI

GUI: Add docker-env button
pull/14562/head
Steven Powell 2022-07-11 15:12:21 -07:00 committed by GitHub
commit ebe173aa79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 77 additions and 10 deletions

View File

@ -39,6 +39,7 @@ AdvancedView::AdvancedView(QIcon icon)
deleteButton = new QPushButton(tr("Delete"));
refreshButton = new QPushButton(tr("Refresh"));
createButton = new QPushButton(tr("Create"));
dockerEnvButton = new QPushButton(tr("docker-env"));
sshButton = new QPushButton(tr("SSH"));
dashboardButton = new QPushButton(tr("Dashboard"));
basicButton = new QPushButton(tr("Basic View"));
@ -56,6 +57,7 @@ AdvancedView::AdvancedView(QIcon icon)
bottomButtonLayout->addWidget(stopButton);
bottomButtonLayout->addWidget(pauseButton);
bottomButtonLayout->addWidget(deleteButton);
bottomButtonLayout->addWidget(dockerEnvButton);
bottomButtonLayout->addWidget(sshButton);
bottomButtonLayout->addWidget(dashboardButton);
@ -78,6 +80,7 @@ AdvancedView::AdvancedView(QIcon icon)
connect(deleteButton, &QAbstractButton::clicked, this, &AdvancedView::delete_);
connect(refreshButton, &QAbstractButton::clicked, this, &AdvancedView::refresh);
connect(createButton, &QAbstractButton::clicked, this, &AdvancedView::askName);
connect(dockerEnvButton, &QAbstractButton::clicked, this, &AdvancedView::dockerEnv);
connect(sshButton, &QAbstractButton::clicked, this, &AdvancedView::ssh);
connect(dashboardButton, &QAbstractButton::clicked, this, &AdvancedView::dashboard);
connect(basicButton, &QAbstractButton::clicked, this, &AdvancedView::basic);
@ -113,8 +116,10 @@ void AdvancedView::update(Cluster cluster)
deleteButton->setEnabled(exists);
dashboardButton->setEnabled(isRunning);
#if __linux__ || __APPLE__
dockerEnvButton->setEnabled(isRunning);
sshButton->setEnabled(exists);
#else
dockerEnvButton->setEnabled(false);
sshButton->setEnabled(false);
#endif
pauseButton->setText(getPauseLabel(isPaused));
@ -273,6 +278,7 @@ void AdvancedView::disableButtons()
stopButton->setEnabled(false);
pauseButton->setEnabled(false);
deleteButton->setEnabled(false);
dockerEnvButton->setEnabled(false);
sshButton->setEnabled(false);
dashboardButton->setEnabled(false);
basicButton->setEnabled(false);

View File

@ -32,6 +32,7 @@ signals:
void pause();
void delete_();
void refresh();
void dockerEnv();
void ssh();
void dashboard();
void basic();
@ -47,6 +48,7 @@ private:
QPushButton *pauseButton;
QPushButton *deleteButton;
QPushButton *refreshButton;
QPushButton *dockerEnvButton;
QPushButton *sshButton;
QPushButton *dashboardButton;
QPushButton *basicButton;

View File

@ -11,6 +11,7 @@ BasicView::BasicView()
pauseButton = new QPushButton(tr("Pause"));
deleteButton = new QPushButton(tr("Delete"));
refreshButton = new QPushButton(tr("Refresh"));
dockerEnvButton = new QPushButton(tr("docker-env"));
sshButton = new QPushButton(tr("SSH"));
dashboardButton = new QPushButton(tr("Dashboard"));
advancedButton = new QPushButton(tr("Advanced View"));
@ -24,6 +25,7 @@ BasicView::BasicView()
buttonLayout->addWidget(pauseButton);
buttonLayout->addWidget(deleteButton);
buttonLayout->addWidget(refreshButton);
buttonLayout->addWidget(dockerEnvButton);
buttonLayout->addWidget(sshButton);
buttonLayout->addWidget(dashboardButton);
buttonLayout->addWidget(advancedButton);
@ -34,6 +36,7 @@ BasicView::BasicView()
connect(pauseButton, &QAbstractButton::clicked, this, &BasicView::pause);
connect(deleteButton, &QAbstractButton::clicked, this, &BasicView::delete_);
connect(refreshButton, &QAbstractButton::clicked, this, &BasicView::refresh);
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);
@ -57,7 +60,6 @@ static QString getStartLabel(bool isRunning)
void BasicView::update(Cluster cluster)
{
startButton->setEnabled(true);
advancedButton->setEnabled(true);
refreshButton->setEnabled(true);
@ -69,8 +71,10 @@ void BasicView::update(Cluster cluster)
deleteButton->setEnabled(exists);
dashboardButton->setEnabled(isRunning);
#if __linux__ || __APPLE__
dockerEnvButton->setEnabled(isRunning);
sshButton->setEnabled(exists);
#else
dockerEnvButton->setEnabled(false);
sshButton->setEnabled(false);
#endif
pauseButton->setText(getPauseLabel(isPaused));
@ -83,6 +87,7 @@ void BasicView::disableButtons()
stopButton->setEnabled(false);
deleteButton->setEnabled(false);
pauseButton->setEnabled(false);
dockerEnvButton->setEnabled(false);
sshButton->setEnabled(false);
dashboardButton->setEnabled(false);
advancedButton->setEnabled(false);

View File

@ -22,6 +22,7 @@ signals:
void pause();
void delete_();
void refresh();
void dockerEnv();
void ssh();
void dashboard();
void advanced();
@ -32,6 +33,7 @@ private:
QPushButton *pauseButton;
QPushButton *deleteButton;
QPushButton *refreshButton;
QPushButton *dockerEnvButton;
QPushButton *sshButton;
QPushButton *dashboardButton;
QPushButton *advancedButton;

View File

@ -27,6 +27,7 @@ Operator::Operator(AdvancedView *advancedView, BasicView *basicView, CommandRunn
connect(m_basicView, &BasicView::pause, this, &Operator::pauseOrUnpauseMinikube);
connect(m_basicView, &BasicView::delete_, this, &Operator::deleteMinikube);
connect(m_basicView, &BasicView::refresh, this, &Operator::updateClusters);
connect(m_basicView, &BasicView::dockerEnv, this, &Operator::dockerEnv);
connect(m_basicView, &BasicView::ssh, this, &Operator::sshConsole);
connect(m_basicView, &BasicView::dashboard, this, &Operator::dashboardBrowser);
connect(m_basicView, &BasicView::advanced, this, &Operator::toAdvancedView);
@ -36,6 +37,7 @@ Operator::Operator(AdvancedView *advancedView, BasicView *basicView, CommandRunn
connect(m_advancedView, &AdvancedView::pause, this, &Operator::pauseOrUnpauseMinikube);
connect(m_advancedView, &AdvancedView::delete_, this, &Operator::deleteMinikube);
connect(m_advancedView, &AdvancedView::refresh, this, &Operator::updateClusters);
connect(m_advancedView, &AdvancedView::dockerEnv, this, &Operator::dockerEnv);
connect(m_advancedView, &AdvancedView::ssh, this, &Operator::sshConsole);
connect(m_advancedView, &AdvancedView::dashboard, this, &Operator::dashboardBrowser);
connect(m_advancedView, &AdvancedView::basic, this, &Operator::toBasicView);
@ -151,7 +153,7 @@ void Operator::toBasicView()
{
m_isBasicView = true;
m_stackedWidget->setCurrentIndex(0);
m_parent->resize(200, 275);
m_parent->resize(200, 300);
updateButtons();
}
@ -304,6 +306,8 @@ static QString minikubePath()
void Operator::sshConsole()
{
QString program = minikubePath();
QString commandArgs = QString("ssh -p %1").arg(selectedClusterName());
QString command = QString("%1 %2").arg(program, commandArgs);
#ifndef QT_NO_TERMWIDGET
QMainWindow *mainWindow = new QMainWindow();
int startnow = 0; // set shell program first
@ -317,8 +321,7 @@ void Operator::sshConsole()
console->setTerminalFont(font);
console->setColorScheme("Tango");
console->setShellProgram(program);
QStringList args = { "ssh", "-p", selectedClusterName() };
console->setArgs(args);
console->setArgs({ commandArgs });
console->startShellProgram();
QObject::connect(console, SIGNAL(finished()), mainWindow, SLOT(close()));
@ -328,9 +331,10 @@ void Operator::sshConsole()
mainWindow->setCentralWidget(console);
mainWindow->show();
#elif __APPLE__
QString command = program + " ssh -p " + selectedClusterName();
QStringList arguments = { "-e", "tell app \"Terminal\"", "-e", "activate",
"-e", "do script \"" + command + "\"", "-e", "end tell" };
QStringList arguments = { "-e", "tell app \"Terminal\"",
"-e", "do script \"" + command + "\"",
"-e", "activate",
"-e", "end tell" };
QProcess *process = new QProcess(this);
process->start("/usr/bin/osascript", arguments);
#else
@ -342,9 +346,56 @@ void Operator::sshConsole()
}
}
QStringList arguments = { "-e", QString("%1 ssh -p %2").arg(program, selectedClusterName()) };
QProcess *process = new QProcess(this);
process->start(QStandardPaths::findExecutable(terminal), arguments);
process->start(QStandardPaths::findExecutable(terminal), { "-e", commmand });
#endif
}
void Operator::dockerEnv()
{
QString program = minikubePath();
QString commandArgs = QString("$(%1 -p %2 docker-env)").arg(program, selectedClusterName());
QString command = QString("eval %1").arg(commandArgs);
#ifndef QT_NO_TERMWIDGET
QMainWindow *mainWindow = new QMainWindow();
int startnow = 0; // set shell program first
QTermWidget *console = new QTermWidget(startnow);
QFont font = QApplication::font();
font.setFamily("Monospace");
font.setPointSize(10);
console->setTerminalFont(font);
console->setColorScheme("Tango");
console->setShellProgram("eval");
console->setArgs({ commandArgs });
console->startShellProgram();
QObject::connect(console, SIGNAL(finished()), mainWindow, SLOT(close()));
mainWindow->setWindowTitle(nameLabel->text());
mainWindow->resize(800, 400);
mainWindow->setCentralWidget(console);
mainWindow->show();
#elif __APPLE__
QStringList arguments = { "-e", "tell app \"Terminal\"",
"-e", "do script \"" + command + "\"",
"-e", "activate",
"-e", "end tell" };
QProcess *process = new QProcess(this);
process->start("/usr/bin/osascript", arguments);
#else
QString terminal = qEnvironmentVariable("TERMINAL");
if (terminal.isEmpty()) {
terminal = "x-terminal-emulator";
if (QStandardPaths::findExecutable(terminal).isEmpty()) {
terminal = "xterm";
}
}
QProcess *process = new QProcess(this);
process->start(QStandardPaths::findExecutable(terminal), { "-e", command });
#endif
}

View File

@ -47,6 +47,7 @@ private:
QString selectedClusterName();
Cluster selectedCluster();
void sshConsole();
void dockerEnv();
void dashboardBrowser();
void dashboardClose();
void pauseMinikube();

View File

@ -116,7 +116,7 @@ Window::Window()
layout = new QVBoxLayout;
layout->addWidget(stackedWidget);
setLayout(layout);
resize(200, 275);
resize(200, 300);
setWindowTitle(tr("minikube"));
setWindowIcon(*trayIconIcon);
}