50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#include "runapplet.h"
|
|
#include "ui_runapplet.h"
|
|
|
|
#include <QLineEdit>
|
|
#include <QProcess>
|
|
#include <QMessageBox>
|
|
|
|
RunApplet::RunApplet(QWidget *parent)
|
|
: QDialog(parent)
|
|
, ui(new Ui::RunApplet)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
ui->label->setPixmap(QIcon::fromTheme("system-run-symbolic").pixmap(42, 42));
|
|
// https://forum.qt.io/post/291563
|
|
ui->cancelBtn->setIcon(style()->standardIcon(QStyle::SP_DialogCancelButton));
|
|
ui->okBtn->setIcon(style()->standardIcon(QStyle::SP_DialogOkButton));
|
|
ui->browseBtn->setIcon(style()->standardIcon(QStyle::SP_DialogOpenButton));
|
|
|
|
connect(ui->cancelBtn, &QPushButton::clicked, this, [&]() {
|
|
qApp->quit();
|
|
});
|
|
|
|
connect(ui->okBtn, &QPushButton::clicked, this, &RunApplet::runApp);
|
|
}
|
|
|
|
void RunApplet::runApp() {
|
|
QString command = ui->comboBox->currentText();
|
|
QStringList args = command.split(" ");
|
|
QProcess *process = new QProcess;
|
|
process->setProgram(args[0]);
|
|
args.remove(0);
|
|
process->setArguments(args);
|
|
bool status = process->startDetached();
|
|
|
|
if (status) {
|
|
qApp->quit();
|
|
}
|
|
|
|
// QString errorMessage = process->errorString();
|
|
|
|
QMessageBox messageBox;
|
|
messageBox.critical(0, process->program(), QString(tr("Windows cannot find '%1'. Make sure you typed the name correctly, and then try again.")).arg(process->program()));
|
|
messageBox.setFixedSize(500,200);
|
|
}
|
|
|
|
RunApplet::~RunApplet()
|
|
{
|
|
delete ui;
|
|
}
|