From 00d27f0b9f10154b0af6cd00c18fc27d38a708bf Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 1 Mar 2019 14:53:39 +0100 Subject: Add button to open beamergui --- src/dialog.cpp | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/dialog.cpp') diff --git a/src/dialog.cpp b/src/dialog.cpp index 9472269..fb6b95e 100644 --- a/src/dialog.cpp +++ b/src/dialog.cpp @@ -22,6 +22,8 @@ #include "choosersettings.h" #include "filedownloader.h" +static bool isProcessRunning(const QString &binary); + Dialog::Dialog(int defaultTab, bool examMode, QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { model_[0] = new SessionTreeModel(parent); @@ -86,9 +88,16 @@ Dialog::Dialog(int defaultTab, bool examMode, QWidget *parent) this->selectPreviousSession(); } - ui->chkAdminMode->setVisible(g_allowVmEdit); + ui->chkAdminMode->setVisible(g_allowVmEdit); ui->chkAdminMode->setEnabled(false); + ui->btnScreenSetup->setVisible(isProcessRunning("beamergui")); + if (QApplication::screens().size() > 1) { + QFont copy = ui->btnScreenSetup->font(); + copy.setBold(true); + ui->btnScreenSetup->setFont(copy); + } + // TODO: Implement bug report dialog :) ui->buttonBugReport->setEnabled(false); QObject::connect(SessionsIconHolder::get(), SIGNAL(iconDownloaded(const QUrl&, const QIcon&)), @@ -245,6 +254,11 @@ void Dialog::on_pushButtonStart_clicked() { this->on_treeView_doubleClicked(ui->treeView->selectionModel()->currentIndex()); } +void Dialog::on_btnScreenSetup_clicked() { + qDebug() << "Wooo"; + QProcess::startDetached("beamergui", QStringList("-w")); +} + bool Dialog::selectSession(const QString& name) { QModelIndex root(ui->treeView->rootIndex()); @@ -879,3 +893,25 @@ void Dialog::checkAutostart() { return; } } + +static bool isProcessRunning(const QString &binary) +{ + bool full = binary.contains('/'); + QDir proc("/proc"); + for (auto entry : proc.entryInfoList(QStringList(), QDir::NoDotAndDotDot | QDir::AllDirs)) { + if (!entry.isReadable()) + continue; + QDir dest = QDir(entry.filePath() + "/exe"); + if (!dest.isReadable()) + continue; + QString wurst = dest.canonicalPath(); + if (wurst.isEmpty()) + continue; + qDebug() << wurst; + if (full && wurst == binary) + return true; + if (!full && wurst.mid(wurst.lastIndexOf('/') + 1) == binary) + return true; + } + return false; +} -- cgit v1.2.3-55-g7522