Brief description of class still missing. More...
#include <WaveformConsole.h>
Public Slots | |
void | agc () |
void | convolution () |
void | correlations () |
void | cut () |
void | decimateAmplitude () |
void | decimateTime () |
void | filter () |
void | merge () |
void | multiply () |
void | normalizedCorrelations () |
void | overSample () |
void | revert () |
void | rotate () |
void | shift () |
void | stalta () |
void | stddevClip () |
void | subtractSignals () |
void | subtractValue () |
void | taper () |
void | waveletTransform () |
void | whiten () |
Public Member Functions | |
void | addActions (QMenu *m) |
SubPoolWindow * | currentSubPool () const |
void | setCurrentSubPool (SubPoolWindow *w) |
WaveformConsole (QWidget *parent=0, Qt::WindowFlags f=0) | |
~WaveformConsole () |
Brief description of class still missing.
Full description of class still missing
WaveformConsole::WaveformConsole | ( | QWidget * | parent = 0 , |
Qt::WindowFlags | f = 0 |
||
) |
Description of constructor still missing
References TRACE.
: QWidget(parent, f) { TRACE; setupUi(this); commandHistory->setFontFamily("Monospace"); _subPoolWin=0; stepBut->setMenu(new QMenu(this)); runBut->setEnabled(false); stepBut->setEnabled(false); Settings::splitter(splitter, "WaveformConsole::splitter"); Settings::getWidget(this, "WaveformConsole", false); }
void WaveformConsole::addActions | ( | QMenu * | m | ) |
References agc(), convolution(), correlations(), cut(), decimateAmplitude(), decimateTime(), filter(), merge(), multiply(), normalizedCorrelations(), overSample(), revert(), rotate(), shift(), stalta(), stddevClip(), subtractSignals(), subtractValue(), taper(), QGpCoreTools::tr(), TRACE, waveletTransform(), and whiten().
{ TRACE; QAction * a; a=new QAction(tr("&Subtract value"), this); a->setObjectName("SubtractValue"); a->setShortcut(tr("Ctrl+Alt+S")); a->setStatusTip(tr("Subtraction by a constant, use for DC removal")); connect(a, SIGNAL(triggered()), this, SLOT(subtractValue())); m->addAction(a); a=new QAction(tr("Subtract signals"), this); a->setObjectName("S&ubtractSignals"); a->setShortcut(tr("Ctrl+Alt+Shift+S")); a->setStatusTip(tr("Subtract signals by other signals")); connect(a, SIGNAL(triggered()), this, SLOT(subtractSignals())); m->addAction(a); a=new QAction(tr("Multipl&y"), this); a->setObjectName("Multiply"); a->setShortcut(tr("Ctrl+Alt+Y")); a->setStatusTip(tr("Multiply amplitudes by a constant")); connect(a, SIGNAL(triggered()), this, SLOT(multiply())); m->addAction(a); a=new QAction(tr("&Filter"), this); a->setObjectName("Filter"); a->setShortcut(tr("Ctrl+Alt+F")); a->setStatusTip(tr("Frequency filters")); connect(a, SIGNAL(triggered()), this, SLOT(filter())); m->addAction(a); a=new QAction(tr("A&GC"), this); a->setObjectName("AGC"); a->setShortcut(tr("Ctrl+Alt+A")); a->setStatusTip(tr("Automatic gain control")); connect(a, SIGNAL(triggered()), this, SLOT(agc())); m->addAction(a); a=new QAction(tr("&Whiten"), this); a->setObjectName("Whiten"); a->setShortcut(tr("Ctrl+Alt+W")); a->setStatusTip(tr("Whiten spectra")); connect(a, SIGNAL(triggered()), this, SLOT(whiten())); m->addAction(a); a=new QAction(tr("Cl&ip"), this); a->setObjectName("Clip"); a->setShortcut(tr("Ctrl+Alt+L")); a->setStatusTip(tr("Clip all events with an amplitude over 3 standard deviations.")); connect(a, SIGNAL(triggered()), this, SLOT(stddevClip())); m->addAction(a); a=new QAction(tr("&Phase shift"), this); a->setObjectName("Shift"); a->setShortcut(tr("Ctrl+Alt+P")); a->setStatusTip(tr("Shift the signals by a fraction of the sampling period (Fourier interpolation).")); connect(a, SIGNAL(triggered()), this, SLOT(shift())); m->addAction(a); a=new QAction(tr("&Over sample"), this); a->setObjectName("OverSample"); a->setShortcut(tr("Ctrl+Alt+O")); a->setStatusTip(tr("Multiply the sampling frequency by any factor greater than 1.")); connect(a, SIGNAL(triggered()), this, SLOT(overSample())); m->addAction(a); a=new QAction(tr("&Taper"), this); a->setObjectName("Taper"); a->setShortcut(tr("Ctrl+Alt+T")); a->setStatusTip(tr("Apply a taper to all signals of the current viewer (in time domain)")); connect(a, SIGNAL(triggered()), this, SLOT(taper())); m->addAction(a); a=new QAction(tr("&Cut"), this); a->setObjectName("Cut"); a->setShortcut(tr("Ctrl+Alt+C")); a->setStatusTip(tr("Cut signals of the current viewer (in time domain)")); connect(a, SIGNAL(triggered()), this, SLOT(cut())); m->addAction(a); a=new QAction(tr("&Merge"), this); a->setObjectName("Merge"); a->setShortcut(tr("Ctrl+Alt+M")); a->setStatusTip(tr("Merge signals of the current viewer (in time domain)")); connect(a, SIGNAL(triggered()), this, SLOT(merge())); m->addAction(a); a=new QAction(tr("Decimate amplitu&de"), this); a->setObjectName("DecimateAmplitude"); a->setShortcut(tr("Ctrl+Alt+I")); a->setStatusTip(tr("Reduce amplitude sampling, may also binarize signals")); connect(a, SIGNAL(triggered()), this, SLOT(decimateAmplitude())); m->addAction(a); a=new QAction(tr("Decimate tim&e"), this); a->setObjectName("DecimateTime"); a->setShortcut(tr("Ctrl+Alt+E")); a->setStatusTip(tr("Reduce frequency sampling (including anti-aliasing filter)")); connect(a, SIGNAL(triggered()), this, SLOT(decimateTime())); m->addAction(a); m->addSeparator(); a=new QAction(tr("Wavelet tra&nsform"), this); a->setObjectName("Wavelet"); a->setStatusTip(tr("Compute the convolution of the signals with the modified Morlet wavelet.")); connect(a, SIGNAL(triggered()), this, SLOT(waveletTransform())); m->addAction(a); a=new QAction(tr("STA/<A"), this); a->setObjectName("STA_LTA"); a->setStatusTip(tr("Compute the Short Term Average over Long Term Average ratio (in time domain)")); connect(a, SIGNAL(triggered()), this, SLOT(stalta())); m->addAction(a); m->addSeparator(); a=new QAction(tr("Rot&ate components"), this); a->setObjectName("Rotate"); a->setStatusTip(tr("Rotate the components of the current viewer")); connect(a, SIGNAL(triggered()), this, SLOT(rotate())); m->addAction(a); a=new QAction(tr("Co&rrelations"), this); a->setObjectName("Correlations"); a->setStatusTip(tr("Compute all possible correlations (all pairs of signals or with one reference signal).")); connect(a, SIGNAL(triggered()), this, SLOT(correlations())); m->addAction(a); a=new QAction(tr("Normali&zed correlations"), this); a->setObjectName("NormalizedCorrelations"); a->setStatusTip(tr("Compute all possible normalized correlations (all pairs of signals or with one reference signal).")); connect(a, SIGNAL(triggered()), this, SLOT(normalizedCorrelations())); m->addAction(a); a=new QAction(tr("Con&volution"), this); a->setObjectName("Convolution"); a->setStatusTip(tr("Compute products of convolution (with one reference signal).")); connect(a, SIGNAL(triggered()), this, SLOT(convolution())); m->addAction(a); m->addSeparator(); a=new QAction(tr("Revert to original"), this); a->setObjectName("Revert"); a->setStatusTip(tr("Revert to original signals. To undo one single step use 'Waveform console'.")); connect(a, SIGNAL(triggered()), this, SLOT(revert())); m->addAction(a); }
void WaveformConsole::agc | ( | ) | [slot] |
References GeopsyCore::SignalProcess::agc(), GeopsyGui::SubPoolWindow::signalProcess(), TRACE, and w.
Referenced by addActions().
void WaveformConsole::convolution | ( | ) | [slot] |
References GeopsyCore::SignalProcess::convolution(), Convolution::setSubPool(), Convolution::signalIndex(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyGui::SubPoolWindow::subPool(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; Convolution * d=new Convolution(this); Settings::getWidget(d); SubSignalPool& subPool=_subPoolWin->subPool(); d->setSubPool(&subPool); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); _subPoolWin->signalProcess()->convolution(d->signalIndex()); processUpdate(); } delete d; }
void WaveformConsole::correlations | ( | ) | [slot] |
References GeopsyCore::SignalProcess::correlations(), Correlations::setSubPool(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyGui::SubPoolWindow::subPool(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; Correlations * d=new Correlations(this); Settings::getWidget(d); SubSignalPool& subPool=_subPoolWin->subPool(); d->setSubPool(&subPool); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); double tw=d->maximumDelay->text().toDouble(); if(d->referenceSignal->isChecked()) { _subPoolWin->signalProcess()->correlations(tw, d->signalList->currentIndex()); } else { _subPoolWin->signalProcess()->correlations(tw); } processUpdate(); } delete d; }
SubPoolWindow* WaveformConsole::currentSubPool | ( | ) | const [inline] |
{return _subPoolWin;}
void WaveformConsole::cut | ( | ) | [slot] |
References GeopsyCore::SignalProcess::cut(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyGui::SubPoolWindow::subPool(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; CutSignal * d=new CutSignal(this); d->timeLimits->setPicks(&_subPoolWin->subPool()); Settings::getWidget(d); d->timeLimits->updateAllFields(); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); TimeRangeParameters tlparam; d->timeLimits->getParameters(tlparam); _subPoolWin->signalProcess()->cut(tlparam); processUpdate(); } delete d; }
void WaveformConsole::decimateAmplitude | ( | ) | [slot] |
References GeopsyCore::SignalProcess::decimateAmplitude(), GeopsyGui::SubPoolWindow::signalProcess(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; DecimateAmplitude * d=new DecimateAmplitude(this); Settings::getWidget(d); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); double maxRef; if(d->maxType->currentIndex()==0) maxRef=d->maxRef->text().toDouble(); else maxRef=-1; _subPoolWin->signalProcess()->decimateAmplitude(d->maxCount->text().toInt(), maxRef); processUpdate(); } delete d; }
void WaveformConsole::decimateTime | ( | ) | [slot] |
References GeopsyCore::SignalProcess::decimateTime(), MSG_ID, GeopsyGui::SubPoolWindow::signalProcess(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; bool ok; QString text=Settings::getText(QApplication::activeWindow(), tr("Decimate time"), tr("Decimation factor (integer greater than 1, anti-aliasing filter included)"), QLineEdit::Normal, "2", &ok); if(!ok) return; int nSamples=text.toInt(&ok); if(!ok || nSamples<=1) { Message::warning(MSG_ID, tr("Decimate time"), tr("Decimation factor must be an integer greater than 1")); return; } _subPoolWin->signalProcess()->decimateTime(nSamples); processUpdate(); }
void WaveformConsole::filter | ( | ) | [slot] |
References GeopsyCore::SignalProcess::filter(), GeopsyGui::FilterParameterWidget::getParameters(), QGpGuiTools::Dialog::setMainWidget(), GeopsyGui::SubPoolWindow::signalProcess(), QGpCoreTools::tr(), TRACE, and GeopsyGui::FilterParameterWidget::updateAllFields().
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; Dialog * d=new Dialog(this); d->setWindowTitle(tr("Frequency filter")); FilterParameterWidget * dw=new FilterParameterWidget(); d->setMainWidget(dw); Settings::getWidget(d, "FilterParameterWidget"); dw->updateAllFields(); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d, "FilterParameterWidget"); FilterParameters param; dw->getParameters(param); _subPoolWin->signalProcess()->filter(param); processUpdate(); } delete d; return; }
void WaveformConsole::merge | ( | ) | [slot] |
References GeopsyCore::SignalProcess::merge(), GeopsyCore::SignalProcess::mergeStations(), MSG_ID, GeopsyGui::SubPoolWindow::signalProcess(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{ TRACE; MessageContext mc; if(!_subPoolWin) return ; switch (Message::question(MSG_ID, tr("Merging signals"), tr("Do you want to merge signals by station and component?"), Message::yes(), Message::no(), Message::cancel())) { case Message::Answer0: _subPoolWin->signalProcess()->mergeStations(); processUpdate(); break; case Message::Answer1: _subPoolWin->signalProcess()->merge(); processUpdate(); break; default: break; } }
void WaveformConsole::multiply | ( | ) | [slot] |
References GeopsyCore::SignalProcess::multiply(), GeopsyGui::SubPoolWindow::signalProcess(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; bool ok; QString text=Settings::getText(QApplication::activeWindow(), tr("Multiply signals"), tr("Multiplication factor"), QLineEdit::Normal, "1.00", &ok); if(!ok) return; _subPoolWin->signalProcess()->multiply(text.toDouble()); processUpdate(); }
void WaveformConsole::normalizedCorrelations | ( | ) | [slot] |
References GeopsyCore::SignalProcess::normalizedCorrelations(), Correlations::setSubPool(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyGui::SubPoolWindow::subPool(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; Correlations * d=new Correlations(this); Settings::getWidget(d); SubSignalPool& subPool=_subPoolWin->subPool(); d->setSubPool(&subPool); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); double tw=d->maximumDelay->text().toDouble(); if(d->referenceSignal->isChecked()) { _subPoolWin->signalProcess()->normalizedCorrelations(tw, d->signalList->currentIndex()); } else { _subPoolWin->signalProcess()->normalizedCorrelations(tw); } processUpdate(); } delete d; }
void WaveformConsole::overSample | ( | ) | [slot] |
References MSG_ID, GeopsyCore::SignalProcess::overSample(), GeopsyGui::SubPoolWindow::signalProcess(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; bool ok; QString text=Settings::getText(QApplication::activeWindow(), tr("Over sample"), tr("Sampling frequency factor (greater than 1)"), QLineEdit::Normal, "2.00", &ok); if(!ok) return; double factor= text.toDouble(&ok); if(!ok || factor <=1) { Message::warning(MSG_ID, tr("Over sample"), tr("Sampling factor must be greater than 1")); return; } _subPoolWin->signalProcess()->overSample(factor); processUpdate(); }
void WaveformConsole::revert | ( | ) | [slot] |
References GeopsyCore::SignalProcess::restoreStep(), GeopsyGui::SubPoolWindow::signalProcess(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; _subPoolWin->signalProcess()->restoreStep(0); processUpdate(); }
void WaveformConsole::rotate | ( | ) | [slot] |
References GeopsyCore::SubSignalPool::associate3Components(), RotateComponents::parameters(), GeopsyCore::SignalProcess::rotateComponents(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyGui::SubPoolWindow::subPool(), GeopsyGui::SubPoolWindow::subPoolUpdate(), TRACE, and RotateComponents::updateAll().
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; if(!_subPoolWin->subPool().associate3Components()) return ; _subPoolWin->subPoolUpdate(); RotateComponents * d=new RotateComponents(this); Settings::getWidget(d); d->updateAll(); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); _subPoolWin->signalProcess()->rotateComponents(d->parameters()); processUpdate(); } delete d; }
void WaveformConsole::setCurrentSubPool | ( | SubPoolWindow * | w | ) |
References GeopsyCore::SignalProcess::history(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyCore::SignalProcess::steps(), GeopsyGui::SubPoolWindow::tool(), and TRACE.
Referenced by GeopsyMainWindow::activeWindowChanged().
{ TRACE; if(w && !w->tool()) { runBut->setEnabled(true); stepBut->setEnabled(true); if(w->signalProcess()) { commandHistory->setPlainText(w->signalProcess()->history()); setSteps(w->signalProcess()->steps()); } } else { commandHistory->clear(); runBut->setEnabled(false); stepBut->setEnabled(false); } _subPoolWin=w; }
void WaveformConsole::shift | ( | ) | [slot] |
References GeopsyCore::SignalProcess::shift(), GeopsyGui::SubPoolWindow::signalProcess(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; bool ok; QString text=Settings::getText(QApplication::activeWindow(), tr("Phase shift"), tr("Time delay (seconds), if positive, the signal is shifted in the past."), QLineEdit::Normal, "0.001", &ok); if(!ok) return; _subPoolWin->signalProcess()->shift(text.toDouble()); processUpdate(); }
void WaveformConsole::stalta | ( | ) | [slot] |
References GeopsyGui::SignalLayer::setOffset(), GraphicWindow::signalLayer(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyCore::SignalProcess::stalta(), TRACE, and w.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; StaLta * d=new StaLta(this); Settings::getWidget(d); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); _subPoolWin->signalProcess()->stalta(d->staLength->value(), d->ltaLength->value()); GraphicWindow * w=qobject_cast<GraphicWindow *>(_subPoolWin); if(w) { w->signalLayer()->setOffset(SignalLayer::NoOffset); } processUpdate(); } delete d; }
void WaveformConsole::stddevClip | ( | ) | [slot] |
References GeopsyGui::SubPoolWindow::signalProcess(), GeopsyCore::SignalProcess::stddevClip(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; bool ok; QString text=Settings::getText(QApplication::activeWindow(), tr("Clip signals"), tr("Clip above standard deviation times"), QLineEdit::Normal, "3.00", &ok); if(!ok) return; _subPoolWin->signalProcess()->stddevClip(text.toDouble()); processUpdate(); }
void WaveformConsole::subtractSignals | ( | ) | [slot] |
References SubtractSignals::group(), MSG_ID, GeopsyCore::AbstractSignalGroup::pathName(), SubtractSignals::setSubPool(), GeopsyGui::SubPoolWindow::signalProcess(), GeopsyGui::SubPoolWindow::subPool(), GeopsyCore::SignalProcess::subtractSignal(), GeopsyCore::SignalProcess::subtractSignals(), QGpCoreTools::tr(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; SubtractSignals * d=new SubtractSignals(this); Settings::getWidget(d); SubSignalPool& subPool=_subPoolWin->subPool(); d->setSubPool(&subPool); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); if(d->bySignal->isChecked()) { _subPoolWin->signalProcess()->subtractSignal(d->signalList->currentIndex()); } else { AbstractSignalGroup * g=d->group(); if(g) { _subPoolWin->signalProcess()->subtractSignals(g->pathName()); } else { Message::warning(MSG_ID, tr("Subtract signals"), tr("No group was selected, nothing subtracted.")); } } processUpdate(); } delete d; }
void WaveformConsole::subtractValue | ( | ) | [slot] |
References GeopsyGui::SubPoolWindow::signalProcess(), GeopsyCore::SignalProcess::subtractValue(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; SubtractValue * d=new SubtractValue(this); Settings::getWidget(d); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); _subPoolWin->signalProcess()->subtractValue(d->meanBut->isChecked() ? 0.0 : d->valEdit->text().toDouble()); processUpdate(); } delete d; }
void WaveformConsole::taper | ( | ) | [slot] |
References GeopsyGui::SubPoolWindow::signalProcess(), GeopsyGui::SubPoolWindow::subPool(), GeopsyCore::SignalProcess::taper(), and TRACE.
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return ; Taper * d=new Taper(this); Settings::getWidget(d); d->windowShape->updateAllFields(); d->timeLimits->setPicks(&_subPoolWin->subPool()); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d); TimeRangeParameters tlparam; d->timeLimits->getParameters(tlparam); TaperParameters taperparam; d->windowShape->getParameters(taperparam); _subPoolWin->signalProcess()->taper(tlparam, taperparam); processUpdate(); } delete d; }
void WaveformConsole::waveletTransform | ( | ) | [slot] |
References GeopsyGui::MorletParameterWidget::getParameters(), QGpGuiTools::Dialog::setMainWidget(), GeopsyGui::SubPoolWindow::signalProcess(), QGpCoreTools::tr(), TRACE, GeopsyGui::MorletParameterWidget::updateAllFields(), and GeopsyCore::SignalProcess::waveletTransform().
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; Dialog * d=new Dialog(this); d->setWindowTitle(tr("Wavelet transform")); MorletParameterWidget * dw=new MorletParameterWidget; d->setMainWidget(dw); Settings::getWidget(d, "MorletParamWidget"); dw->updateAllFields(); if(d->exec()==QDialog::Accepted) { Settings::setWidget(d, "MorletParamWidget"); MorletParameters param; dw->getParameters(param); _subPoolWin->signalProcess()->waveletTransform(param); processUpdate(); } delete d; }
void WaveformConsole::whiten | ( | ) | [slot] |
References GeopsyGui::SubPoolWindow::signalProcess(), TRACE, and GeopsyCore::SignalProcess::whiten().
Referenced by addActions().
{ TRACE; if(!_subPoolWin) return; _subPoolWin->signalProcess()->whiten(); processUpdate(); }