#include <WinResults.h>
Signals | |
| void | categoryChanged () |
| void | peakChanged () |
Public Member Functions | |
| virtual void | addActions () |
| int | indexOf (AbstractStation *c) |
| void | restoreMakeUp (QString fileName) |
| void | setLayout (int nPlotsPerLine, double pageHeight) |
| virtual void | setLimits (double maxAmplitude) |
| virtual void | setStations (QList< AbstractStation * > stations) |
| virtual void | setWindowTitle (QString subPoolName)=0 |
| AbstractStation * | station (int index) const |
| AbstractStation * | station (const QString &name) const |
| int | stationCount () const |
| WinResults (QWidget *parent=0) | |
Public Attributes | |
| QMenu * | menuTools |
Protected Slots | |
| void | categoriesToGroups () |
| void | editPeaks () |
| void | groupsToCategories () |
| virtual void | loadResults () |
| void | options () |
| void | saveResults () |
| void | setCategories () |
| void | setPeaks () |
| void | studentTest () |
Protected Member Functions | |
| virtual void | closeEvent (QCloseEvent *e) |
| void | loadResults (QStringList fileNames) |
| bool | selectAll (QString title) |
Protected Attributes | |
| QList< AbstractStation * > | _stations |
| QString | _yAxisTitle |
| MonoStation::WinResults::WinResults | ( | QWidget * | parent = 0 | ) |
References TRACE.
: GraphicSheetMenu(parent) { TRACE; setGeometry(5, 80, 500, 500); }
| void MonoStation::WinResults::addActions | ( | ) | [virtual] |
Reimplemented from SciFigs::GraphicSheetMenu.
Reimplemented in SpectrumWinResults, HVRotateWinResults, and SpectrumRotateWinResults.
References SciFigs::GraphicSheetMenu::addMenu(), categoriesToGroups(), editPeaks(), groupsToCategories(), loadResults(), SciFigs::GraphicSheetMenu::menuFormat, menuTools, options(), saveResults(), setCategories(), studentTest(), QGpCoreTools::tr(), and TRACE.
{
TRACE;
QAction * a;
menuFormat->addSeparator();
a=new QAction(tr("&Options"), this);
connect(a, SIGNAL(triggered()), this, SLOT(options()));
menuFormat->addAction(a);
menuTools=addMenu(tr("&Tools"));
a=new QAction(tr("&Load results"), this);
a->setStatusTip(tr("Plot results previously saved"));
QObject::connect(a, SIGNAL(triggered()), this, SLOT(loadResults()));
menuTools->addAction(a);
a=new QAction(tr("&Save results"), this);
a->setStatusTip(tr("Save results of spectral analysis in a text file with process information (.log file)"));
connect(a, SIGNAL(triggered()), this, SLOT(saveResults()));
menuTools->addAction(a);
menuTools->addSeparator();
a=new QAction(tr("&Edit peaks"), this);
a->setStatusTip(tr( "Do you think that the automatically computed peak frequency is not correct? Fix it ..."));
connect(a, SIGNAL(triggered()), this, SLOT(editPeaks()) );
menuTools->addAction(a);
a=new QAction(tr("&Statistical comparison"), this);
a->setStatusTip(tr("Use statistical tests to quantify how well two spectral curves compare."));
connect(a, SIGNAL(triggered()), this, SLOT(studentTest()) );
menuTools->addAction(a);
a=new QAction(tr("&Set categories"), this);
a->setStatusTip(tr("Sort results into categories."));
connect(a, SIGNAL(triggered()), this, SLOT(setCategories()));
menuTools->addAction(a);
a=new QAction(tr("&Categories to groups"), this);
a->setStatusTip(tr( "Create signal groups from categories."));
connect(a, SIGNAL(triggered()), this, SLOT(categoriesToGroups()));
menuTools->addAction(a);
a=new QAction(tr("&Groups to categories"), this);
a->setStatusTip(tr("Set categories from signal groups."));
connect(a, SIGNAL(triggered()), this, SLOT(groupsToCategories()));
menuTools->addAction(a);
}
| void MonoStation::WinResults::categoriesToGroups | ( | ) | [protected, slot] |
Creates groups from categories of selected stations.
References _stations, GeopsyCore::SignalGroup::addSignals(), MonoStation::StationResults::category(), GeopsyCore::GeopsyCoreEngine::currentDB(), GeopsyCore::AbstractSignalGroup::find(), GeopsyCore::geopsyCore, MonoStation::AbstractStation::isSelected(), GeopsyCore::SignalDB::masterGroup(), MonoStation::AbstractStation::name(), MonoStation::AbstractStation::nComponents(), GeopsyCore::StationSignals::originals(), MonoStation::AbstractStation::originalSignals(), MonoStation::AbstractStation::results(), selectAll(), GeopsyCore::StationGroup::setName(), GeopsyCore::AbstractSignalGroup::setName(), GeopsyCore::AbstractSignalGroup::setParent(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{
TRACE;
if(_stations.isEmpty()) return;
static const QString title=tr("Categories to groups");
if(!selectAll(title)) return;
SignalGroupFolder * baseFolder=new SignalGroupFolder;
baseFolder->setParent(geopsyCore->currentDB()->masterGroup());
baseFolder->setName(tr("categories-%1").arg(QDateTime::currentDateTime().toString("yyyyMMdd-hhmmss")));
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation * stat=*it;
if(stat->isSelected()) {
QString cat=stat->results(0)->category();
SignalGroupFolder * catFolder;
if(!cat.isEmpty()) {
catFolder=static_cast<SignalGroupFolder *>(baseFolder->find(cat));
if(!catFolder) {
catFolder=new SignalGroupFolder(baseFolder);
catFolder->setName(cat);
}
} else {
catFolder=baseFolder;
}
StationGroup * g=new StationGroup(catFolder);
g->setName(stat->name());
int n=stat->nComponents();
for(int i=0; i<n; i++) {
g->addSignals(stat->originalSignals()->originals(i));
}
}
}
}
| void MonoStation::WinResults::categoryChanged | ( | ) | [signal] |
Referenced by groupsToCategories(), and setCategories().
| void MonoStation::WinResults::closeEvent | ( | QCloseEvent * | e | ) | [protected, virtual] |
| void MonoStation::WinResults::editPeaks | ( | ) | [protected, slot] |
References _stations, peakChanged(), selectAll(), QGpGuiTools::Dialog::setMainWidget(), setPeaks(), MonoStation::PeakEditor::setStations(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{
TRACE;
static const QString title=tr("Edit peaks");
if(!selectAll(title)) return;
Dialog * d=new Dialog(this);
PeakEditor * e=new PeakEditor(this);
d->setMainWidget(e, Dialog::Close);
e->setStations(_stations);
connect(e, SIGNAL(touched()), this, SLOT(setPeaks()));
Settings::getRect(d, "PeakEditor");
if(d->exec() ==QDialog::Accepted) {
Settings::setRect(d, "PeakEditor");
}
emit peakChanged();
delete d;
}
| void MonoStation::WinResults::groupsToCategories | ( | ) | [protected, slot] |
Sets categories from signal groups.
References _stations, MonoStation::CategoryGroupItem::belongsTo(), categoryChanged(), GeopsyCore::GeopsyCoreEngine::currentDB(), QGpCoreTools::endl(), GeopsyCore::geopsyCore, GeopsyGui::SignalGroupItem::group(), MonoStation::AbstractStation::isSelected(), GeopsyCore::AbstractSignalGroup::name(), MonoStation::AbstractStation::name(), MonoStation::AbstractStation::results(), selectAll(), MonoStation::StationResults::setCategory(), GeopsyGui::SignalGroupItem::setDatabase(), QGpGuiTools::Dialog::setMainWidget(), MonoStation::CategoryGroupItem::setSignals(), QGpCoreTools::tr(), TRACE, and w.
Referenced by addActions().
{
TRACE;
if(_stations.isEmpty()) return;
static const QString title=tr("Group to categories");
if(!selectAll(title)) return;
Dialog * d=new Dialog(this);
QTreeView * w=new QTreeView;
CategoryGroupItem * model=new CategoryGroupItem(w);
model->setDatabase(geopsyCore->currentDB());
model->setSignals(_stations);
w->setModel(model);
w->setSelectionMode(QAbstractItemView::ExtendedSelection);
w->setEditTriggers(QAbstractItemView::NoEditTriggers);
w->setHeaderHidden(true);
d->setMainWidget(w, Dialog::OkCancel);
d->setWindowTitle(title);
Settings::getRect(d, "GroupsToCategories");
if(d->exec()==QDialog::Accepted) {
Settings::setRect(d, "GroupsToCategories");
QModelIndexList sel=w->selectionModel()->selectedIndexes();
for(QModelIndexList::iterator it=sel.begin(); it!=sel.end(); it++) {
AbstractSignalGroup * g=model->group(*it);
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation * stat=*it;
if(stat->isSelected()) {
if(CategoryGroupItem::belongsTo(stat, g)) {
App::stream() << tr("station %1 belongs to category %2").arg(stat->name()).arg(g->name()) << endl;
stat->results(0)->setCategory(g->name());
}
}
}
}
emit categoryChanged();
}
}
| int MonoStation::WinResults::indexOf | ( | AbstractStation * | c | ) | [inline] |
Referenced by MonoStation::StudentTestCurveModel::parent().
{return _stations.indexOf(c);}
| virtual void MonoStation::WinResults::loadResults | ( | ) | [inline, protected, virtual, slot] |
Reimplemented in SpectrumWinResults, StructureWinResults, and HVWinResults.
Referenced by addActions().
{}
| void MonoStation::WinResults::loadResults | ( | QStringList | fileNames | ) | [protected] |
References SciFigs::GraphicSheetMenu::_sheet, _stations, _yAxisTitle, SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphicSheetMenu::addText(), MonoStation::StationResults::load(), MSG_ID, MonoStation::AbstractStation::name(), peakChanged(), SciFigs::GraphicSheet::printBottom(), SciFigs::GraphicObject::printHeight, MonoStation::AbstractStation::results(), SciFigs::GraphicObject::setAnchor(), MonoStation::StationResults::setGraph(), SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::GraphicObject::setObjectName(), SciFigs::GraphicObject::setPrintXAnchor(), SciFigs::GraphicObject::setPrintYAnchor(), SciFigs::Axis::setRange(), SciFigs::TextEdit::setText(), SciFigs::Axis::setTitle(), station(), QGpCoreTools::tr(), TRACE, SciFigs::TextEdit::update(), SciFigs::GraphicObject::updateGeometry(), w, and SciFigs::AxisWindow::yAxis().
{
TRACE;
if(_stations.isEmpty()) return;
if(fileNames.count()>0) {
// Check that either all stations exist or none of them exist. If not, ask user
enum LoadType {Unknown, NewStations, ExistingStations, Mixed};
LoadType loadType=Unknown;
QString newStation, existingStation;
for(QStringList::Iterator it=fileNames.begin();it!=fileNames.end();++it) {
QFileInfo fi(*it);
AbstractStation * s=station(fi.baseName());
switch(loadType) {
case Unknown:
loadType=s ? ExistingStations : NewStations;
break;
case NewStations:
if(s) {
loadType=Mixed;
}
break;
case ExistingStations:
if(!s) {
loadType=Mixed;
}
break;
case Mixed:
break;
}
if(s) {
existingStation+=s->name()+"\n";
} else {
newStation+=fi.baseName()+"\n";
}
}
if(loadType==Mixed) {
switch(Message::warning(MSG_ID, tr("Loading results"),
tr("Some of the selected files are not part of the current processing.\n\n"
"Station(s) in the current processing:\n"
"%1\n"
"New station(s):\n"
"%2\n"
"Do you want to add them as new plots?").arg(existingStation).arg(newStation),
Message::yes(), Message::no(), Message::cancel())) {
case Message::Answer0:
break;
case Message::Answer1:
loadType=ExistingStations;
break;
case Message::Answer2:
return;
}
}
double y=_sheet.printBottom();
// Grab y axis limits from last station
double maximumY=_stations.last()->results(0)->graph()->yAxis()->maximum();
for(QStringList::Iterator it=fileNames.begin();it!=fileNames.end();++it) {
QFileInfo fi(*it);
AbstractStation * s=station(fi.baseName());
if(s) {
// TODO: take result index into account
s->results(0)->load(*it);
} else if(loadType!=ExistingStations) {
AxisWindow * w=addGraph();
w->setAnchor(GraphicObject::TopRight);
setGraphGeometry(w, 9.0, 7.5, y, 7.5, Axis::AxisSize);
w->setObjectName("result_"+fi.baseName());
StationResults res;
res.setGraph(w);
res.load(*it);
w->yAxis()->setTitle(_yAxisTitle);
// Set y axis limits from last station
w->yAxis()->setRange(0.0, maximumY);
TextEdit * t=addText(9.0, y, 4.0, 1.0);
t->setAnchor(GraphicObject::BottomRight);
t->setPrintXAnchor(9.0);
t->setPrintYAnchor(y);
t->setText(fi.fileName());
t->update(); // Forces size adjustment
t->updateGeometry();
y+=7.5+t->printHeight();
}
}
emit peakChanged();
}
}
| void MonoStation::WinResults::options | ( | ) | [protected, slot] |
References _stations, SciFigs::AxisWindow::deepUpdate(), MonoStation::StationResults::graph(), MonoStation::AbstractStation::graphCount(), SciFigs::GraphicObject::isSelected(), MonoStation::AbstractStation::results(), selectAll(), QGpGuiTools::Dialog::setMainWidget(), MonoStation::WinResultsOptions::setVisibleLayers(), QGpCoreTools::tr(), TRACE, MonoStation::WinResultsOptions::visibleLayers(), and w.
Referenced by addActions().
{
TRACE;
if(_stations.isEmpty()) return;
static const QString title=tr("Options");
if( !selectAll(title) ) return;
Dialog * d=new Dialog(this);
WinResultsOptions * optionWidget=new WinResultsOptions;
d->setMainWidget(optionWidget);
Settings::getWidget(optionWidget);
optionWidget->setVisibleLayers(_stations.first()->results(0));
if(d->exec()==QDialog::Accepted) {
Settings::setWidget(optionWidget);
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++ ) {
StationResults * sr=s.results(igs);
AxisWindow * w=sr->graph();
if(w->isSelected()) {
optionWidget->visibleLayers(sr);
w->deepUpdate();
}
}
}
}
delete d;
}
| void MonoStation::WinResults::peakChanged | ( | ) | [signal] |
Referenced by editPeaks(), and loadResults().
| void MonoStation::WinResults::restoreMakeUp | ( | QString | fileName | ) |
References _stations, MonoStation::AbstractStation::graphCount(), SciFigs::GraphicObject::restoreMakeUp(), MonoStation::AbstractStation::resultGraph(), TRACE, and w.
{
TRACE;
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++) {
AxisWindow * w=s.resultGraph(igs);
w->restoreMakeUp(fileName);
}
}
}
| void MonoStation::WinResults::saveResults | ( | ) | [protected, slot] |
References _stations, MonoStation::StationResults::graph(), MonoStation::AbstractStation::graphCount(), SciFigs::GraphicObject::isSelected(), GeopsyCore::StationSignals::name(), MonoStation::AbstractStation::originalSignals(), MonoStation::AbstractStation::results(), MonoStation::AbstractStation::save(), selectAll(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{
TRACE;
static const QString title=tr("Save results");
if(!selectAll(title)) return;
// Checks if all stations have a name, a condition to export everything in a directory
bool hasEmptyNames=false;
for(QList<AbstractStation *>::iterator it=_stations.begin(); it!=_stations.end(); it++) {
AbstractStation& s=**it;
if(s.originalSignals()->name().isEmpty()) {
hasEmptyNames=true;
break;
}
}
// Count selected stations
int nSelected=0;
for(QList<AbstractStation *>::iterator it=_stations.begin(); it!=_stations.end(); it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++) {
if(s.results(igs)->graph()->isSelected()) {
nSelected++;
break;
}
}
}
QString dirName;
if(!hasEmptyNames) {
dirName=Message::getExistingDirectory(title);
if(dirName.isEmpty()) {
return;
}
}
QDir d(dirName);
for(QList<AbstractStation *>::iterator it=_stations.begin(); it!=_stations.end(); it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++) {
if(s.results(igs)->graph()->isSelected()) {
s.save(igs, d, nSelected==1 || hasEmptyNames);
}
}
}
}
| bool MonoStation::WinResults::selectAll | ( | QString | title | ) | [protected] |
References SciFigs::GraphicSheetMenu::_sheet, _stations, MonoStation::StationResults::graph(), MonoStation::AbstractStation::graphCount(), SciFigs::GraphicObject::isSelected(), MonoStation::AbstractStation::results(), and SciFigs::GraphicSheet::selectAll().
Referenced by categoriesToGroups(), editPeaks(), groupsToCategories(), options(), saveResults(), and setCategories().
{
if(_stations.count()==1) {
_sheet.selectAll();
return true;
} else {
for(QList<AbstractStation *>::iterator it=_stations.begin(); it!=_stations.end(); it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++) {
if(s.results(igs)->graph()->isSelected()) {
return true;
}
}
}
return _sheet.selectAll(title);
}
}
| void MonoStation::WinResults::setCategories | ( | ) | [protected, slot] |
TODO: operate on StationResults rather than stations
References _stations, MonoStation::StationResults::category(), categoryChanged(), MonoStation::SetCategory::currentCategory(), MonoStation::AbstractStation::isSelected(), MSG_ID, MonoStation::AbstractStation::name(), MonoStation::AbstractStation::results(), selectAll(), MonoStation::StationResults::setCategory(), MonoStation::SetCategory::setCategoryNames(), MonoStation::SetCategory::setCurrentCategory(), QGpCoreTools::tr(), TRACE, and QGpCoreTools::unique().
Referenced by addActions().
{
TRACE;
if(_stations.isEmpty()) return;
static const QString title=tr("Categories");
if( !selectAll(title) ) return;
QString msg;
// Build a message with a summary of all categories and search for the most used
QStringList allCategories;
QMap<QString, int> selCategories;
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation * stat=*it;
QString cat=stat->results(0)->category();
if(stat->isSelected()) {
QMap<QString, int>::iterator itcat=selCategories.find(cat);
if(itcat==selCategories.end()) {
selCategories.insert(cat, 1);
} else {
itcat.value()++;
}
msg+=stat->name();
msg+=": ";
msg+=cat;
msg+="\n";
}
allCategories.append(cat);
}
qSort(allCategories);
unique(allCategories);
QString cat;
if(selCategories.count()>1) {
if(Message::information(MSG_ID, tr("Categories"), tr("Selected stations belong to different categories:\n\n"
"%1\nDo you realy want to change them?").arg(msg),
Message::yes(), Message::no())==Message::Answer1) {
return;
}
int maxi=0;
for(QMap<QString,int>::iterator it=selCategories.begin(); it!=selCategories.end(); it++ ) {
if(it.value()>maxi) {
cat=it.key();
maxi=it.value();
}
}
} else {
cat=selCategories.keys().first();
}
SetCategory * d=new SetCategory(this);
d->setCategoryNames(allCategories);
Settings::getWidget(d);
d->setCurrentCategory(cat);
if(d->exec()==QDialog::Accepted) {
Settings::setWidget(d);
QString catName=d->currentCategory();
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation * stat=*it;
if(stat->isSelected()) {
stat->results(0)->setCategory(catName);
}
}
emit categoryChanged();
}
}
| void MonoStation::WinResults::setLayout | ( | int | nPlotsPerLine, |
| double | pageHeight | ||
| ) |
References _stations, MonoStation::AbstractStation::graphCount(), SciFigs::GraphicObject::printHeight, SciFigs::GraphicObject::printLeft(), SciFigs::GraphicObject::printRight(), SciFigs::GraphicObject::printTop(), SciFigs::GraphicObject::printWidth, MonoStation::AbstractStation::resultGraph(), MonoStation::AbstractStation::resultLabel(), SAFE_UNINITIALIZED, SciFigs::GraphicObject::setPrintBottom(), SciFigs::GraphicObject::setPrintLeft(), SciFigs::GraphicObject::setPrintRight(), SciFigs::GraphicObject::setPrintTop(), TRACE, SciFigs::TextEdit::update(), SciFigs::AxisWindow::updateGeometry(), SciFigs::GraphicObject::updateGeometry(), and w.
{
TRACE;
double x, y, dx=-1.0, dy=-1.0, minx, maxx, miny;
SAFE_UNINITIALIZED(x,0);
SAFE_UNINITIALIZED(y,0);
SAFE_UNINITIALIZED(minx,0);
SAFE_UNINITIALIZED(miny,0);
SAFE_UNINITIALIZED(maxx,0);
int pageIndex=0;
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++ ) {
TextEdit * t=s.resultLabel(igs);
AxisWindow * w=s.resultGraph(igs);
if(dx<0.0) { // Init geometry parameters from geometry of first graph
minx=w->printLeft();
miny=w->printTop();
if(miny>pageHeight) miny=0.5;
dx=minx+w->printWidth();
dy=miny+w->printHeight();
x=minx;
y=miny;
maxx=minx+nPlotsPerLine*dx;
} else {
x+=dx;
if(x+dx>maxx) {
x=minx;
y+=dy;
}
if(y+dy>(pageIndex+1)*pageHeight) {
pageIndex++;
y=miny+pageIndex*pageHeight;
}
}
w->setPrintLeft(x);
w->setPrintTop(y);
w->updateGeometry();
t->setPrintBottom(w->printTop());
t->setPrintRight(w->printRight());
t->update(); // Forces size adjustment
t->updateGeometry();
}
}
}
| void MonoStation::WinResults::setLimits | ( | double | maxAmplitude | ) | [virtual] |
Reimplemented in HVRotateWinResults, and SpectrumRotateWinResults.
References _stations, SciFigs::LineLayer::boundingRect(), MonoStation::StationResults::graph(), MonoStation::AbstractStation::graphCount(), MonoStation::AbstractStation::results(), SciFigs::Axis::setRange(), MonoStation::StationResults::stddevLayer(), TRACE, w, MonoStation::StationResults::windowCount(), QGpCoreTools::Rect::x1(), QGpCoreTools::Rect::x2(), SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().
{
TRACE;
if(_stations.isEmpty()) return;
QList<AbstractStation *>::iterator it;
// Grab x axis limits from first station with time windows: it is the same for all stations
const StationResults * res=0;
for(it=_stations.begin(); it!=_stations.end(); it++) {
AbstractStation& s=**it;
res=s.results(0);
if(res->windowCount()>0) break;
res=0;
}
if(!res) return;
Rect r=res->stddevLayer()->boundingRect();
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++ ) {
AxisWindow * w=s.results(igs)->graph();
w->xAxis()->setRange(r.x1(), r.x2());
w->yAxis()->setRange(0.0, maxAmplitude);
}
}
}
| void MonoStation::WinResults::setPeaks | ( | ) | [protected, slot] |
References _stations, SciFigs::AxisWindow::deepUpdate(), MonoStation::StationResults::graph(), MonoStation::AbstractStation::graphCount(), SciFigs::GraphicObject::isSelected(), MonoStation::AbstractStation::results(), and w.
Referenced by editPeaks().
{
for(QList<AbstractStation *>::iterator it=_stations.begin();it!=_stations.end();it++) {
AbstractStation& s=**it;
int nGraphs=s.graphCount();
for(int igs=0; igs<nGraphs; igs++) {
StationResults * sr=s.results(igs);
AxisWindow * w=sr->graph();
if(w->isSelected()) {
w->deepUpdate();
}
}
}
}
| void MonoStation::WinResults::setStations | ( | QList< AbstractStation * > | stations | ) | [virtual] |
Reimplemented in HVRotateWinResults, and SpectrumRotateWinResults.
References _stations, _yAxisTitle, SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphicSheetMenu::addText(), geopsyGui, SciFigs::GraphicObject::setAnchor(), SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::GraphicObject::setObjectName(), SciFigs::GraphicObject::setPrintXAnchor(), SciFigs::GraphicSheet::setStatusBar(), SciFigs::TextEdit::setText(), SciFigs::Axis::setTitle(), SciFigs::GraphicSheetMenu::sheet(), TRACE, SciFigs::TextEdit::update(), SciFigs::AxisWindow::updateExternalGeometry(), SciFigs::AxisWindow::updateGeometry(), SciFigs::GraphicObject::updateGeometry(), w, and SciFigs::AxisWindow::yAxis().
{
TRACE;
_stations=stations;
int n=_stations.count();
sheet()->setStatusBar(geopsyGui->statusBar());
int ig=0;
for(int is=0; is<n; is++) {
int nGraphs=_stations[is]->graphCount();
for(int igs=0; igs<nGraphs; igs++, ig++) {
AxisWindow * w=addGraph();
w->setAnchor(GraphicObject::TopRight);
setGraphGeometry(w, 9.0, 7.5, 1.0, 7.5, Axis::AxisSize);
w->setObjectName("result_"+QString::number(ig));
w->yAxis()->setTitle(_yAxisTitle);
_stations[is]->setResultGraph(igs, w);
w->updateExternalGeometry();
w->updateGeometry();
TextEdit * t=addText(9.0, 1.0, 4.0, 1.0);
t->setObjectName("stationLabel_"+QString::number(ig));
t->setAnchor(GraphicObject::BottomRight);
t->setPrintXAnchor(9.0);
t->setText(_stations[is]->name(igs));
t->update(); // Forces size adjustment
t->updateGeometry();
_stations[is]->setResultLabel(igs, t);
}
}
}
| void MonoStation::WinResults::setWindowTitle | ( | QString | subPoolName | ) | [pure virtual] |
Implemented in HVRotateWinResults, SpectrumRotateWinResults, SpectrumWinResults, HVWinResults, and StructureWinResults.
References geopsyGui, and TRACE.
{
TRACE;
QWidget::setWindowTitle(t);
geopsyGui->updateWindowTitle(this);
}
| AbstractStation* MonoStation::WinResults::station | ( | int | index | ) | const [inline] |
Referenced by MonoStation::StudentTestCurveModel::index(), loadResults(), and MonoStation::StudentTestCurveModel::setWindowList().
{return _stations.at(index);}
| AbstractStation * MonoStation::WinResults::station | ( | const QString & | name | ) | const |
| int MonoStation::WinResults::stationCount | ( | ) | const [inline] |
Referenced by MonoStation::StudentTestCurveModel::rowCount(), and MonoStation::StudentTestCurveModel::setWindowList().
{return _stations.count();}
| void MonoStation::WinResults::studentTest | ( | ) | [protected, slot] |
References _yAxisTitle, MonoStation::StationResults::averageCurve(), MonoStation::StudentTest::firstCurve(), MonoStation::StudentTest::init(), MonoStation::StudentTest::makeUp(), MSG_ID, QGpCoreTools::Curve< pointType >::sameSampling(), MonoStation::StudentTest::secondCurve(), MonoStation::StudentTest::significance(), QGpCoreTools::tr(), TRACE, and w.
Referenced by addActions().
{
TRACE;
StudentTest * d=new StudentTest(this);
// Gather all similar WinResults (with the same Y axis title)
QWorkspace * ws=qobject_cast<QWorkspace *>(parentWidget()->parentWidget());
ASSERT(ws);
QWidgetList windows=ws->windowList(QWorkspace::StackingOrder);
// Get the list of widget that can serve as test
QList<WinResults *> tests;
for(int i=0; i<windows.count(); ++i) {
WinResults * w=qobject_cast<WinResults *>(windows.at(i));
if(w && w->_yAxisTitle==_yAxisTitle) {
tests.append(w);
}
}
d->init(tests);
Settings::getWidget(d);
if(d->exec()==QDialog::Accepted) {
Settings::setWidget(d);
const StationResults * r1=d->firstCurve();
const StationResults * r2=d->secondCurve();
if(r1 && r2) {
if(r1==r2) {
Message::warning(MSG_ID, tr("Student test"), tr("Identical stations selected."));
} else {
if(r1->averageCurve().sameSampling(r2->averageCurve())) {
StatisticResults::studentTest(r1, r2, d->significance(), d->makeUp());
} else {
Message::warning(MSG_ID, tr("Student test"), tr("Selected curves have not a compatible frequency sampling."));
}
}
} else {
Message::warning(MSG_ID, tr("Student test"), tr("Missing at least one station."));
}
}
delete d;
}
QList<AbstractStation *> MonoStation::WinResults::_stations [protected] |
Referenced by categoriesToGroups(), editPeaks(), groupsToCategories(), loadResults(), options(), restoreMakeUp(), saveResults(), selectAll(), setCategories(), setLayout(), SpectrumRotateWinResults::setLimits(), HVRotateWinResults::setLimits(), setLimits(), setPeaks(), StructureWinResults::setRatioLimits(), StructureWinResults::setSpectrumLimits(), SpectrumRotateWinResults::setStations(), HVRotateWinResults::setStations(), setStations(), and station().
QString MonoStation::WinResults::_yAxisTitle [protected] |
Referenced by SpectrumWinResults::addActions(), and addActions().