Skip to content
Snippets Groups Projects
Commit aa990fa0 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

New JobRealTimeWidget to tune parameters in JobView.

parent 17361b02
No related branches found
No related tags found
No related merge requests found
#include "AdvModelTuningWidget.h"
#include "JobItem.h"
#include <QLabel>
#include <QVBoxLayout>
AdvModelTuningWidget::AdvModelTuningWidget(QWidget *parent)
: QWidget(parent)
, m_currentJobItem(0)
{
setMinimumSize(128, 128);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QVBoxLayout *mainLayout = new QVBoxLayout;
m_label = new QLabel();
mainLayout->addWidget(m_label);
setLayout(mainLayout);
}
void AdvModelTuningWidget::setCurrentItem(JobItem *item)
{
m_currentJobItem = item;
m_label->setText(item->getName());
}
#ifndef ADVMODELTUNINGWIDGET_H
#define ADVMODELTUNINGWIDGET_H
#include <QWidget>
class QLabel;
class JobItem;
class AdvModelTuningWidget : public QWidget
{
Q_OBJECT
public:
AdvModelTuningWidget(QWidget *parent = 0);
virtual ~AdvModelTuningWidget() {}
void setCurrentItem(JobItem *item);
private:
QLabel *m_label;
JobItem *m_currentJobItem;
};
#endif
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "JobItem.h" #include "JobItem.h"
#include "JobListViewDelegate.h" #include "JobListViewDelegate.h"
#include "styledbar.h" #include "styledbar.h"
#include "SimulationToolBar.h"
#include <QPushButton> #include <QPushButton>
#include <QListView> #include <QListView>
#include <QMenu> #include <QMenu>
...@@ -39,7 +40,8 @@ JobListWidget::JobListWidget(QWidget *parent) ...@@ -39,7 +40,8 @@ JobListWidget::JobListWidget(QWidget *parent)
mainLayout->setMargin(0); mainLayout->setMargin(0);
mainLayout->setSpacing(0); mainLayout->setSpacing(0);
Manhattan::StyledBar *bar = new Manhattan::StyledBar; // Manhattan::StyledBar *bar = new Manhattan::StyledBar;
SimulationToolBar *bar = new SimulationToolBar;
mainLayout->addWidget(bar); mainLayout->addWidget(bar);
// QHBoxLayout *buttonsLayout = new QHBoxLayout; // QHBoxLayout *buttonsLayout = new QHBoxLayout;
......
#include "JobRealTimeWidget.h"
#include "JobQueueModel.h"
#include "AdvModelTuningWidget.h"
#include "SimulationToolBar.h"
#include <QToolBar>
#include <QVBoxLayout>
#include <QPushButton>
#include <QStackedWidget>
#include <QAction>
#include <QLabel>
#include <QDebug>
#include "GUIHelpers.h"
JobRealTimeWidget::JobRealTimeWidget(JobQueueModel *jobQueueModel, QWidget *parent)
: QWidget(parent)
, m_jobQueueModel(0)
, m_stack(new QStackedWidget(this))
, m_toolBar(new SimulationToolBar)
{
setJobQueueModel(jobQueueModel);
setMinimumSize(100, 400);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setWindowTitle(QLatin1String("Job Real Time"));
setObjectName(QLatin1String("Job Real Time"));
m_stack->setMinimumSize(100, 400);
m_stack->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
mainLayout->addWidget(m_toolBar);
mainLayout->addWidget(m_stack);
setLayout(mainLayout);
connectSignals();
}
void JobRealTimeWidget::setJobQueueModel(JobQueueModel *jobQueueModel)
{
Q_ASSERT(jobQueueModel);
if(jobQueueModel != m_jobQueueModel) {
m_jobQueueModel = jobQueueModel;
connect(m_jobQueueModel,
SIGNAL( selectionChanged(JobItem *) ),
this,
SLOT( itemClicked(JobItem *) )
);
connect(m_jobQueueModel->getJobQueueData(), SIGNAL(jobIsFinished(QString))
, this, SLOT(onJobItemFinished(QString)));
connect(m_jobQueueModel, SIGNAL(aboutToDeleteJobItem(JobItem*))
, this, SLOT(onJobItemDelete(JobItem*)));
}
}
void JobRealTimeWidget::itemClicked(JobItem * item)
{
qDebug() << "JobOutputDataWidget::itemClicked()";
m_currentJobItem = item;
AdvModelTuningWidget *widget = m_jobItemToTuningWidget[item];
if( !widget && (item->getStatus() == JobItem::Completed || item->getStatus() == JobItem::Canceled)) {
qDebug() << "JobOutputDataWidget::itemClicked() -> creating";
widget = new AdvModelTuningWidget();
widget->setCurrentItem(item);
m_stack->addWidget(widget);
m_jobItemToTuningWidget[item] = widget;
}
else
{
if( m_stack->currentWidget())
{
m_stack->currentWidget()->hide();
}
}
if(widget)
{
qDebug() << "JobOutputDataWidget::itemClicked() -> setCurrentWidget";
if(widget->isHidden())
{
widget->show();
}
m_stack->setCurrentWidget(widget);
}
}
void JobRealTimeWidget::onJobItemFinished(const QString &identifier)
{
qDebug() << "JobOutputDataWidget::onJobItemFinished()";
JobItem *jobItem = m_jobQueueModel->getJobQueueData()->getJobItem(identifier);
if(jobItem == m_currentJobItem)
{
if((jobItem->getStatus() == JobItem::Completed || jobItem->getStatus() == JobItem::Canceled) && jobItem->getOutputDataItem())
{
qDebug() << "JobOutputDataWidget::dataChanged() JobItem::Completed";
itemClicked(jobItem);
}
}
}
void JobRealTimeWidget::connectSignals()
{
}
void JobRealTimeWidget::onJobItemDelete(JobItem *item)
{
qDebug() << "JobOutputDataWidget::onJobItemDelete()";
AdvModelTuningWidget *widget = m_jobItemToTuningWidget[item];
if( !widget ) {
// this is the case when user removes failed job which doesn't have propper widget
return;
}
QMap<JobItem *, AdvModelTuningWidget *>::iterator it = m_jobItemToTuningWidget.begin();
while(it!=m_jobItemToTuningWidget.end()) {
if(it.value() == widget) {
it = m_jobItemToTuningWidget.erase(it);
} else {
++it;
}
}
m_stack->removeWidget(widget);
delete widget;
}
#ifndef JOBREALTIMEWIDGET_H
#define JOBREALTIMEWIDGET_H
#include "WinDllMacros.h"
#include <QWidget>
#include <QMap>
class JobQueueModel;
class QStackedWidget;
class QModelIndex;
class JobItem;
class AdvModelTuningWidget;
class SimulationToolBar;
//! The JobRealTimeWidget provides tuning of sample parameters and run of the simulation in real time.
//! Located on the right side of JobView and is visible when realtime activity is selected.
class BA_CORE_API_ JobRealTimeWidget : public QWidget
{
Q_OBJECT
public:
explicit JobRealTimeWidget(JobQueueModel *jobQueueModel, QWidget *parent = 0);
void setJobQueueModel(JobQueueModel *jobQueueModel);
public slots:
void itemClicked(JobItem *item);
void onJobItemDelete(JobItem *item);
void onJobItemFinished(const QString &identifier);
private:
void connectSignals();
JobQueueModel *m_jobQueueModel;
JobItem *m_currentJobItem;
QStackedWidget *m_stack;
QMap<JobItem *, AdvModelTuningWidget *> m_jobItemToTuningWidget;
SimulationToolBar *m_toolBar;
};
#endif
...@@ -13,6 +13,7 @@ SimulationToolBar::SimulationToolBar(QWidget *parent) ...@@ -13,6 +13,7 @@ SimulationToolBar::SimulationToolBar(QWidget *parent)
: QToolBar(parent) : QToolBar(parent)
{ {
setMovable(false); setMovable(false);
setMinimumSize(128, 25);
const int size = style()->pixelMetric(QStyle::PM_SmallIconSize); const int size = style()->pixelMetric(QStyle::PM_SmallIconSize);
setIconSize(QSize(size, size)); setIconSize(QSize(size, size));
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "JobSelectorWidget.h" #include "JobSelectorWidget.h"
#include "JobOutputDataWidget.h" #include "JobOutputDataWidget.h"
#include "JobQueueModel.h" #include "JobQueueModel.h"
#include "JobRealTimeWidget.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "progressbar.h" #include "progressbar.h"
#include <QFrame> #include <QFrame>
...@@ -18,6 +19,7 @@ struct JobViewPrivate ...@@ -18,6 +19,7 @@ struct JobViewPrivate
JobQueueModel *m_jobQueueModel; JobQueueModel *m_jobQueueModel;
JobSelectorWidget *m_jobSelector; JobSelectorWidget *m_jobSelector;
JobOutputDataWidget *m_jobOutputDataWidget; JobOutputDataWidget *m_jobOutputDataWidget;
JobRealTimeWidget *m_jobRealTimeWidget;
Manhattan::ProgressBar *m_progressBar; //!< general progress bar Manhattan::ProgressBar *m_progressBar; //!< general progress bar
}; };
...@@ -124,6 +126,8 @@ void JobView::resetToDefaultLayout() ...@@ -124,6 +126,8 @@ void JobView::resetToDefaultLayout()
dockWidget->show(); dockWidget->show();
setTrackingEnabled(true); setTrackingEnabled(true);
onJobViewActivityRequest();
} }
...@@ -150,15 +154,14 @@ void JobView::initWindows() ...@@ -150,15 +154,14 @@ void JobView::initWindows()
m_d->m_jobSelector = new JobSelectorWidget(m_d->m_jobQueueModel, this); m_d->m_jobSelector = new JobSelectorWidget(m_d->m_jobQueueModel, this);
m_d->m_subWindows[JobListDock] = m_d->m_jobSelector; m_d->m_subWindows[JobListDock] = m_d->m_jobSelector;
TestView *realTimeWidget = new TestView(this); m_d->m_jobRealTimeWidget = new JobRealTimeWidget(m_d->m_jobQueueModel, this);
realTimeWidget->setWindowTitle("RealTimeWidget"); m_d->m_subWindows[RealTimeDock] = m_d->m_jobRealTimeWidget;
realTimeWidget->setObjectName("RealTimeWidget");
m_d->m_subWindows[RealTimeDock] = realTimeWidget;
} }
void JobView::connectSignals() void JobView::connectSignals()
{ {
connect(this, SIGNAL(resetLayout()), this, SLOT(resetToDefaultLayout()));
connect(m_d->m_jobQueueModel->getJobQueueData(), SIGNAL(globalProgress(int)), this, SLOT(updateGlobalProgressBar(int))); connect(m_d->m_jobQueueModel->getJobQueueData(), SIGNAL(globalProgress(int)), this, SLOT(updateGlobalProgressBar(int)));
connect(m_d->m_jobQueueModel->getJobQueueData(), SIGNAL(focusRequest(JobItem*)), this, SLOT(onFocusRequest(JobItem*))); connect(m_d->m_jobQueueModel->getJobQueueData(), SIGNAL(focusRequest(JobItem*)), this, SLOT(onFocusRequest(JobItem*)));
connect(m_d->m_jobOutputDataWidget, SIGNAL(jobViewActivityRequest()), this, SLOT(onJobViewActivityRequest())); connect(m_d->m_jobOutputDataWidget, SIGNAL(jobViewActivityRequest()), this, SLOT(onJobViewActivityRequest()));
......
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