From 1ea223239cc12801c257e3a434c1033687a55f54 Mon Sep 17 00:00:00 2001 From: ucart <ucart_groundstation@iastate.edu> Date: Wed, 26 Apr 2017 00:14:51 -0500 Subject: [PATCH] Added scripts menu --- groundStation/gui/MicroCART/MicroCART.pro | 6 +++-- groundStation/gui/MicroCART/mainwindow.cpp | 11 ++++++++ groundStation/gui/MicroCART/mainwindow.ui | 6 +++++ groundStation/gui/MicroCART/slotprocess.cpp | 30 +++++++++++++++++++++ groundStation/gui/MicroCART/slotprocess.h | 19 +++++++++++++ 5 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 groundStation/gui/MicroCART/slotprocess.cpp create mode 100644 groundStation/gui/MicroCART/slotprocess.h diff --git a/groundStation/gui/MicroCART/MicroCART.pro b/groundStation/gui/MicroCART/MicroCART.pro index 094787c0f..d2c2206c6 100644 --- a/groundStation/gui/MicroCART/MicroCART.pro +++ b/groundStation/gui/MicroCART/MicroCART.pro @@ -18,12 +18,14 @@ SOURCES += main.cpp\ mainwindow.cpp \ trackerworker.cpp \ controlworker.cpp \ - quaditem.cpp + quaditem.cpp \ + slotprocess.cpp HEADERS += mainwindow.h \ trackerworker.h \ controlworker.h \ - quaditem.h + quaditem.h \ + slotprocess.h FORMS += mainwindow.ui diff --git a/groundStation/gui/MicroCART/mainwindow.cpp b/groundStation/gui/MicroCART/mainwindow.cpp index 04c334746..0c0b3ffdc 100644 --- a/groundStation/gui/MicroCART/mainwindow.cpp +++ b/groundStation/gui/MicroCART/mainwindow.cpp @@ -12,6 +12,7 @@ #include "controlworker.h" #include "graph_blocks.h" #include "quaditem.h" +#include "slotprocess.h" #include <iostream> MainWindow::MainWindow(QWidget *parent) : @@ -100,6 +101,16 @@ MainWindow::MainWindow(QWidget *parent) : /* Connect various things that can result in sending setpoints */ connect(ui->pbSendSetpoint, SIGNAL (clicked()), this, SLOT (sendSetpoints())); connect(ui->setpointList, SIGNAL (doubleClicked(QModelIndex)), this, SLOT (sendSelectedSetpoint())); + + /* Populate scripts list */ + QDir scriptsDir("scripts/"); + QStringList scripts = scriptsDir.entryList(); + for (int i = 0; i < scripts.size(); i++) { + QAction * action = ui->menuScripts->addAction(scripts[i]); + SlotProcess * scriptProcess = new SlotProcess(action); + scriptProcess->setProgram(scriptsDir.filePath(scripts[i])); + connect(action, SIGNAL (triggered()), scriptProcess, SLOT (startProcess())); + } } MainWindow::~MainWindow() diff --git a/groundStation/gui/MicroCART/mainwindow.ui b/groundStation/gui/MicroCART/mainwindow.ui index 4412aa3c3..da97a7a4b 100644 --- a/groundStation/gui/MicroCART/mainwindow.ui +++ b/groundStation/gui/MicroCART/mainwindow.ui @@ -1131,6 +1131,12 @@ <height>27</height> </rect> </property> + <widget class="QMenu" name="menuScripts"> + <property name="title"> + <string>Scripts</string> + </property> + </widget> + <addaction name="menuScripts"/> </widget> <widget class="QToolBar" name="mainToolBar"> <attribute name="toolBarArea"> diff --git a/groundStation/gui/MicroCART/slotprocess.cpp b/groundStation/gui/MicroCART/slotprocess.cpp new file mode 100644 index 000000000..f12cb0fe5 --- /dev/null +++ b/groundStation/gui/MicroCART/slotprocess.cpp @@ -0,0 +1,30 @@ +#include "slotprocess.h" +#include <QDebug> + +void SlotProcess::startProcess() +{ + qInfo() << "Started process " + program(); + setProcessChannelMode(QProcess::ForwardedChannels); + connect(this, SIGNAL (finished(int, QProcess::ExitStatus)), this, SLOT (notifyFinished(int, QProcess::ExitStatus))); + connect(this, SIGNAL (errorOccurred(QProcess::ProcessError)), this, SLOT (notifyError(QProcess::ProcessError))); + start(); +} + +void SlotProcess::notifyFinished(int status, QProcess::ExitStatus exitStatus) +{ + qInfo() << "Finished process " + program(); + if (exitStatus != QProcess::NormalExit) { + qInfo() << "Did not exit normally!" + QString::number(status); + } +} + +void SlotProcess::notifyError(QProcess::ProcessError error) +{ + qInfo() << "Error with process " + program() + " " + errorString(); +} + +SlotProcess::SlotProcess(QObject * parent) : + QProcess(parent) +{ + +} diff --git a/groundStation/gui/MicroCART/slotprocess.h b/groundStation/gui/MicroCART/slotprocess.h new file mode 100644 index 000000000..ce86da25f --- /dev/null +++ b/groundStation/gui/MicroCART/slotprocess.h @@ -0,0 +1,19 @@ +#ifndef SLOTPROCESS_H +#define SLOTPROCESS_H + +#include <QObject> +#include <QProcess> + +class SlotProcess : public QProcess +{ + Q_OBJECT +public: + SlotProcess(QObject *); + +public slots: + void startProcess(); + void notifyFinished(int status, QProcess::ExitStatus); + void notifyError(QProcess::ProcessError error); +}; + +#endif // SLOTPROCESS_H -- GitLab