/* # Copyright (c) 2010 - OpenSLX Project, Computer Center University of Freiburg # # This program is free software distributed under the GPL version 2. # See http://openslx.org/COPYING # # If you have any feedback please consult http://openslx.org/feedback and # send your suggestions, praise, or complaints to feedback@openslx.org # # General information about OpenSLX can be found at http://openslx.org/ # ----------------------------------------------------------------------------- # processWidget.cpp Widget to start/stop processes on a client. This widget is used in processesDialog.cpp as a tab in the QTabWidget # ----------------------------------------------------------------------------- */ #include "processesDialog.h" #include "processWidget.h" #include "ui_processWidget.h" ProcessWidget::ProcessWidget(QWidget *parent, PVSClient *cl): QWidget(parent), prowui(new Ui::ProcessWidget) { prowui->setupUi(this); client = cl; connect( prowui->startButton, SIGNAL( clicked()), this, SLOT( startProcess())); connect( prowui->refreshButton, SIGNAL( clicked()), this, SLOT( refrProcessList())); connect( prowui->stopButton, SIGNAL( clicked()), this, SLOT( stopProcess())); connect( client, SIGNAL( processVectorReady(bool)), this, SLOT( refrProcessList())); sendCommand("SHOWPROCESSES", ""); } void ProcessWidget::startProcess() { QMessageBox::StandardButton start = QMessageBox::question(0, tr("PVS Start Process"), tr("Do you want to start the process: ") + prowui->processLineEdit->text() + tr(" on User '") + client->getDesktopName() + tr("' ?"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok); if (start == QMessageBox::Ok) { sendCommand("STARTPROCESS", prowui->processLineEdit->text()); sendCommand("SHOWPROCESSES", ""); } prowui->processLineEdit->clear(); } void ProcessWidget::refrProcessList() { for(int i=prowui->processTable->rowCount(); i == 0; i--) { prowui->processTable->removeRow(i); } prowui->processTable->setRowCount(0); QVector processes = client->getProcessesVector(); for (int i=0; iprocessTable->setRowCount(i+1); QStringList processesList = processes.at(i).split(QRegExp("<#>")); for (int j=0; jprocessTable->setItem(i,j,new QTableWidgetItem(processesList.at(j),0)); } } prowui->processTable->selectRow(0); } void ProcessWidget::stopProcess() { if (prowui->processTable->rowCount() > 0) { QMessageBox::StandardButton start = QMessageBox::question(0, tr("PVS Start Process"), tr("Do you want to stop the process: ") + prowui->processTable->item(prowui->processTable->currentRow(),1)->text() + tr(" on User '") + client->getDesktopName() + tr("' ?"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok); if (start == QMessageBox::Ok) { sendCommand("KILLPROCESS", prowui->processTable->item(prowui->processTable->currentRow(),0)->text()); sendCommand("SHOWPROCESSES", ""); } } } void ProcessWidget::sendCommand(QString ident, QString message) { client->sendMessage(PVSCOMMAND, ident, message); } ProcessWidget::~ProcessWidget() { delete prowui; }