#include <ThreadLauncher.h>
List of all members.
Constructor & Destructor Documentation
References applyAllSelected(), and TRACE.
: QWidget(parent)
{
TRACE;
_runningProcess=0;
setupUi(this);
threadTable->setModel(new LaunchThreadItem(this) );
LaunchThreadDelegate * del=new LaunchThreadDelegate(this);
threadTable->setItemDelegate(del);
threadTable->setSelectionBehavior(QAbstractItemView::SelectRows);
threadTable->setSelectionMode(QAbstractItemView::ExtendedSelection);
threadTable->setEditTriggers(QAbstractItemView::AllEditTriggers);
threadTable->resizeColumnsToContents();
Settings::columnWidth(threadTable, "ThreadLauncher");
connect(del, SIGNAL(dataChanged()), this, SLOT(applyAllSelected()) );
connect(threadTable->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection & )),
this, SLOT(selectionChanged()));
}
References TRACE.
{
TRACE;
Settings::setColumnWidth(threadTable, "ThreadLauncher");
}
Member Function Documentation
References TRACE.
Referenced by ThreadLauncher().
{
TRACE;
QAbstractItemModel& model=*threadTable->model();
QModelIndex curIndex=threadTable->currentIndex();
QModelIndexList l=threadTable->selectionModel()->selectedRows();
if(l.count()>1) {
QVariant val=model.data(curIndex);
QModelIndex index;
foreach(index, l) {
model.setData(model.index(index.row(), curIndex.column()), val);
}
}
}
Prompt user if he wants to slect all of them. Return true if so. The processes are not really selected.
References MSG_ID, QGpCoreTools::tr(), and TRACE.
Referenced by clear(), remove(), start(), and stop().
{
TRACE;
if(Message::question(MSG_ID, title,
tr( "No run selected, do you want to %1 all of them?" ).arg(action),
Message::yes(), Message::cancel())==Message::Answer1) {
return false;
}
return true;
}
Return true is at least one process is selected
References TRACE.
Referenced by clear(), remove(), start(), and stop().
{
TRACE;
QModelIndexList l=threadTable->selectionModel()->selectedIndexes();
return !l.isEmpty();
}
References DinverCore::RealSpace::adjustRanges(), DinverCore::AbstractForward::clone(), dinverGui, DinverCore::RealSpace::humanInfo(), MSG_ID, DinverCore::AbstractForward::parameterSpace(), processBaseName(), processCompleteName(), processNameRank(), InversionThread::setForward(), InversionThread::setObjectName(), InversionThread::setReportDir(), InversionThread::setStorage(), InversionThread::setTuningParameters(), DinverCore::RealSpace::setVariableParameters(), str, QGpCoreTools::tr(), TRACE, and DinverCore::RealSpace::variableParameterCount().
{
TRACE;
int i=dinverGui->threads().count();
QString runName;
InversionThread * lastT=0;
if(i==0) {
runName="run_01";
} else {
lastT=dinverGui->threads().at(i-1);
QString str=lastT->objectName();
runName=processCompleteName(processBaseName( str), processNameRank(str) + 1);
}
InversionThread * t=new InversionThread;
t->setObjectName(runName);
dinverGui->logs()->setViewName(t, runName);
StreamRedirection sr(&App::stream(t));
AbstractForward * forwardTemplate=dinverGui->plugin()->createForward();
if(!dinverGui->plugin()->initForward(forwardTemplate)) {
Message::warning(MSG_ID, tr("New thread"), tr("Error creating a new inversion thread.\n\n%1")
.arg(dinverGui->logs()->text(t)), Message::ok());
delete forwardTemplate;
delete t;
return 0;
}
AbstractForward * forward=forwardTemplate->clone();
delete forwardTemplate;
RealSpace& parameterSpace=forward->parameterSpace();
parameterSpace.setVariableParameters();
if(parameterSpace.variableParameterCount()<=0) {
Message::warning(MSG_ID, tr("New thread"), tr("No variable parameters, check parameterization.\n\n%1")
.arg(dinverGui->logs()->text(t)), Message::ok());
delete forward;
delete t;
return 0;
}
if(!parameterSpace.adjustRanges()) {
Message::warning(MSG_ID, tr("New thread"), tr("Error creating a new inversion thread.\n\n%1")
.arg(dinverGui->logs()->text(t)), Message::ok());
delete forward;
delete t;
return 0;
}
parameterSpace.humanInfo();
t->setForward(forward);
t->setStorage();
t->setReportDir(dinverGui->currentReportDir());
if(lastT) t->setTuningParameters(lastT);
dinverGui->addThread(t);
dinverGui->setModified(true);
return t;
}
References str, and TRACE.
Referenced by newThread().
{
TRACE;
if(str.contains( "_" )) {
bool ok;
QString sufix=str.section( '_', -1);
sufix.toInt(&ok);
if(ok) return str.left(str.length() - sufix.length() - 1);
}
return str;
}
References TRACE.
Referenced by newThread().
{
TRACE;
if(str.contains( "_" )) {
bool ok;
int num=str.section( '_', -1).toInt(&ok);
if(ok) return num;
}
return 1;
}
Wait until all processes are finished (even the queued ones).
References TRACE.
{
TRACE;
while(_runningProcess>0 || !_processToStart.empty()) {
App::sleep(1000);
QCoreApplication::processEvents();
}
}
The documentation for this class was generated from the following files: