Skip to content
Snippets Groups Projects
Commit 07de5304 authored by Langella Olivier's avatar Langella Olivier
Browse files

WIP: stop button

parent acfbac05
No related branches found
No related tags found
No related merge requests found
......@@ -33,7 +33,8 @@
#include <QFileInfo>
#include <QDebug>
TandemBatchProcess::TandemBatchProcess(WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch) {
TandemBatchProcess::TandemBatchProcess(MainWindow * p_main_window, WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch) {
_p_main_window = p_main_window;
_tandem_run_batch = tandem_run_batch;
_p_monitor = p_monitor;
_tmp_database_file.setAutoRemove(true);
......@@ -43,6 +44,9 @@ TandemBatchProcess::~TandemBatchProcess() {
}
bool TandemBatchProcess::shouldIstop() {
if (_p_main_window->stopWorkerThread()) {
return true;
}
return false;
}
void TandemBatchProcess::writeXmlDatabaseFile (QXmlStreamWriter * p_out) {
......
......@@ -33,11 +33,12 @@
#include "../../utils/workmonitor.h"
#include <QTemporaryFile>
#include <QXmlStreamWriter>
#include "../../gui/mainwindow.h"
class TandemBatchProcess
{
public:
TandemBatchProcess(WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch);
TandemBatchProcess(MainWindow * p_main_window, WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch);
virtual ~TandemBatchProcess();
virtual void run();
......@@ -45,9 +46,9 @@ protected:
void writeXmlDatabaseFile (QXmlStreamWriter * p_out);
void writeXmlInputFile (QXmlStreamWriter * p_out, const QString & mz_file);
virtual void prepareXmlDatabaseFile();
bool shouldIstop();
private:
void runOne(const QString & mz_file);
bool shouldIstop();
protected:
QString _preset_file;
......@@ -60,6 +61,7 @@ private:
QTemporaryFile _tmp_database_file;
MainWindow * _p_main_window=nullptr;
};
#endif // TANDEMBATCHPROCESS_H
......@@ -36,7 +36,7 @@
#include <QThread>
#include "../../input/condorqxmlsaxhandler.h"
TandemCondorProcess::TandemCondorProcess(WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch) : TandemBatchProcess(p_monitor, tandem_run_batch) {
TandemCondorProcess::TandemCondorProcess(MainWindow * p_main_window, WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch) : TandemBatchProcess(p_main_window,p_monitor, tandem_run_batch) {
/*
Universe = vanilla
notification = Error
......
......@@ -36,7 +36,7 @@
class TandemCondorProcess: public TandemBatchProcess
{
public:
TandemCondorProcess(WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch);
TandemCondorProcess(MainWindow * p_main_window, WorkMonitorInterface * p_monitor, const TandemRunBatch & tandem_run_batch);
virtual ~TandemCondorProcess();
virtual void prepareXmlDatabaseFile();
......
......@@ -108,6 +108,10 @@ MainWindow::~MainWindow()
}
bool MainWindow::stopWorkerThread() {
return _p_waiting_message_dialog->stopWorkerThread();
}
void MainWindow::closeEvent(QCloseEvent * event) {
if (true) {
event->accept();
......
......@@ -55,6 +55,11 @@ public:
explicit MainWindow(QWidget * parent = 0);
~MainWindow();
/** @brief tells if the worker should stop running his job
* @param bool true asks to stop
*/
bool stopWorkerThread();
public slots:
void loadResults();
......
......@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>746</width>
<height>86</height>
<height>150</height>
</rect>
</property>
<property name="windowTitle">
......@@ -46,14 +46,59 @@
<item>
<widget class="QPlainTextEdit" name="console_plaintextedit"/>
</item>
<item>
<layout class="QHBoxLayout" name="stop_horizontal_layout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="stop_push_button">
<property name="text">
<string>Stop</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
<connections>
<connection>
<sender>stop_push_button</sender>
<signal>toggled(bool)</signal>
<receiver>WaitingMessageDialog</receiver>
<slot>toggledStopButton(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>704</x>
<y>130</y>
</hint>
<hint type="destinationlabel">
<x>806</x>
<y>197</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>chooseFiles()</slot>
<slot>reject()</slot>
<slot>accept()</slot>
<slot>clearFileList()</slot>
<slot>toggledStopButton(bool)</slot>
</slots>
</ui>
......@@ -25,6 +25,7 @@
#include "waitingmessagedialog.h"
#include <QDebug>
#include <QLabel>
#include <QMutexLocker>
WaitingMessageDialog::WaitingMessageDialog(QWidget * parent):
QDialog(parent),
......@@ -44,10 +45,11 @@ WaitingMessageDialog::WaitingMessageDialog(QWidget * parent):
}
ui->movie_label->setMovie(_p_movie);
ui->progress_bar->setVisible(false);
ui->progress_bar->setMaximum(100);
ui->progress_bar->setMinimum(0);
ui->console_plaintextedit->setHidden(true);
ui->stop_push_button->setVisible(false);
//movie->start();
qDebug() << "WaitingMessageDialog::WaitingMessageDialog end";
}
......@@ -59,8 +61,25 @@ WaitingMessageDialog::~WaitingMessageDialog()
qDebug() << "WaitingMessageDialog::~WaitingMessageDialog end";
}
void WaitingMessageDialog::toggledStopButton(bool pushed) {
QMutexLocker mutex_locker(&_mutex);
_asked_to_stop = true;
}
bool WaitingMessageDialog::stopWorkerThread() {
QMutexLocker mutex_locker(&_mutex);
if (!ui->stop_push_button->isVisible()) {
ui->stop_push_button->setChecked(false);
ui->stop_push_button->setVisible(true);
_asked_to_stop = false;
return false;
}
return _asked_to_stop;
}
void WaitingMessageDialog::message(const QString & message) {
ui->progress_bar->setVisible(false);
ui->message_label->setText(message);
}
......@@ -75,7 +94,7 @@ void WaitingMessageDialog::message(const QString & message, int progress_value)
void WaitingMessageDialog::appendText(char * text) {
ui->console_plaintextedit->setHidden(false);
//ui->console_plaintextedit->appendText(text);
ui->console_plaintextedit->moveCursor (QTextCursor::End);
ui->console_plaintextedit->insertPlainText (text);
}
......@@ -85,8 +104,8 @@ void WaitingMessageDialog::hideEvent( QHideEvent* event ) {
qDebug() << "WaitingMessageDialog::hideEvent";
_p_movie->stop();
ui->console_plaintextedit->setHidden(true);
}
}
void WaitingMessageDialog::showEvent( QShowEvent* event ) {
QWidget::showEvent( event );
_p_movie->start();
}
}
......@@ -27,6 +27,7 @@
#include <QDialog>
#include <QStringListModel>
#include <QMovie>
#include <QMutex>
#include "../project_view/automatic_filter_widget/automaticfilterwidget.h"
......@@ -48,10 +49,20 @@ public:
void appendText(char * text);
void showEvent( QShowEvent* event );
void hideEvent( QHideEvent* event );
bool stopWorkerThread();
private slots:
void toggledStopButton(bool pushed);
private:
Ui::WaitingMessageDialog *ui;
QMovie * _p_movie;
bool _asked_to_stop = false;
QMutex _mutex;
};
......
......@@ -340,11 +340,11 @@ void WorkerThread::doRunningXtandem(TandemRunBatch tandem_run_batch) {
QString default_location = settings.value("condor/tmp_dir", "").toString();
if (default_location.isEmpty()) {
TandemBatchProcess xt_process (_p_work_monitor, tandem_run_batch);
TandemBatchProcess xt_process (_p_main_window ,_p_work_monitor, tandem_run_batch);
xt_process.run();
}
else {
TandemCondorProcess xt_process (_p_work_monitor, tandem_run_batch);
TandemCondorProcess xt_process (_p_main_window ,_p_work_monitor, tandem_run_batch);
xt_process.run();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment