All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Signals | Public Member Functions
GeopsySLinkGui::SeedLinkLoader Class Reference

Brief description of class still missing. More...

#include <SeedLinkLoader.h>

List of all members.

Signals

void dataChanged (Signal *sig, TimeRange tw)
void started ()
void stopped ()

Public Member Functions

void removeOptions ()
void removeView ()
 SeedLinkLoader (QWidget *parent=0)
void selectStreams (QString selection)
void setBufferType (SeedLinkStream::BufferType bt)
void setFromTime (QDateTime f)
void setMaximumDuration (double d)
void setServer (QString serverAddress, int serverPort)
 ~SeedLinkLoader ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

References dataChanged(), GeopsySLinkGui::SeedLinkLoaderOptions::restore(), and TRACE.

    : QWidget(parent)
{
  TRACE;
  setupUi(this);

  streamView->setModel(new SeedLinkStreamItem(this));
  streamView->setSelectionBehavior(QAbstractItemView::SelectRows);
  streamView->setSelectionMode(QAbstractItemView::ExtendedSelection);
  streamView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  streamView->setContextMenuPolicy(Qt::CustomContextMenu);
  connect(streamView, SIGNAL(customContextMenuRequested (const QPoint & )),
           this, SLOT(showContextMenu( const QPoint & )) );

  _seedLink=new SeedLink(this);
  connect(_seedLink,SIGNAL(infoAvailable()), this, SLOT(streamInfoAvailable()), Qt::QueuedConnection);
  connect(_seedLink,SIGNAL(dataChanged(Signal *, TimeRange)),
           this, SLOT(monitorDataChange(Signal *, TimeRange)), Qt::QueuedConnection);
  connect(_seedLink, SIGNAL(error(GeopsySLink::SeedLink::Error)),
           this, SLOT(seedLinkError(GeopsySLink::SeedLink::Error)), Qt::QueuedConnection);
  SeedLinkLoaderOptions::restore(_seedLink);
  seedLinkActivity->setMeasurementDelay(1.0);
  seedLinkActivity->setDisplayRange(120.0);

  // Create log stream for seed link thread
  Application::instance()->setStream(logView , _seedLink);

  Settings::getSize(this, "SeedLinkLoader" );
  Settings::splitter(splitter, "SeedLinkLoader" );
  serverName->addItems(Settings::getHistory("SeedLinkServers"));
  selectEdit->addItems(Settings::getHistory("SeedLinkSelectExpressions"));
  Settings::columnWidth(streamView, "SeedLinkLoader");
  Settings::getWidget(this, "SeedLinkLoader" );
}

Description of destructor still missing

References GeopsySLink::SeedLink::stop(), and TRACE.

{
  TRACE;
  if(_seedLink->isRunning()) {
    _seedLink->stop();
  }
  Settings::setSize(this, "SeedLinkLoader" );
  Settings::setColumnWidth(streamView, "SeedLinkLoader");
  Settings::setSplitter(splitter, "SeedLinkLoader");
  Settings::setWidget(this, "SeedLinkLoader" );
  logView->remove();
}

Member Function Documentation

Referenced by SeedLinkLoader().

References TRACE.

{
  TRACE;
  delete optionsBut;
  optionsBut=0;
}

References TRACE.

{
  TRACE;
  delete viewBut;
  viewBut=0;
}
void GeopsySLinkGui::SeedLinkLoader::selectStreams ( QString  selection)

Define the streams to select. Specification of streams is either the same as for slinktool or regular expressions:

SL:stream1[:selectors1],stream2[:selectors2],... RX:stream1RX[:selectors1RX,...

'stream' is in NET_STA format, followed by a selection of streams. If no selector is given, all streams are started.

Examples: "SL:WA_WAU01:HHZ HHE HHN, WA_WAU02:HH?,WA_WAU03,..." "RX:WA_WAU[0-9]{2}"

References GeopsySLink::SeedLinkServer::at(), GeopsySLinkGui::SeedLinkStreamItem::index(), GeopsySLink::SeedLinkServer::indexOf(), GeopsySLink::SeedLinkStation::indexOf(), GeopsySLinkGui::SeedLinkStreamItem::rowCount(), GeopsySLink::SeedLink::serverInfo(), str, and TRACE.

Referenced by GeopsyMainWindow::seedlink().

{
  TRACE;
  Settings::setHistory("SeedLinkSelectExpressions", selection);
  selectEdit->clear();
  selectEdit->addItems(Settings::getHistory("SeedLinkSelectExpressions"));

  SeedLinkStreamItem * model=static_cast<SeedLinkStreamItem *>(streamView->model());
  if(model->rowCount()==0) { /* Stream list is still not available, postpone selection and start when the stream list
                                 will be available: see streamInfoAvailable(SeedLinkServer * s)*/
    _streamSelection=selection;
    return;
  }
  // First identify the type of selectors
  enum SelectorType {SeedLinkSelector, RegExpSelector};
  SelectorType selectorType;
  if(selection.startsWith("SL:")) {
    selectorType=SeedLinkSelector;
    selection=selection.mid(3);
  } else if(selection.startsWith("RX:")) {
    selectorType=RegExpSelector;
    selection=selection.mid(3);
  } else {
    selectorType=RegExpSelector;
  }
  QItemSelectionModel * selModel=streamView->selectionModel();
  selModel->clear();
  const SeedLinkServer& serverInfo=_seedLink->serverInfo();
  // Parse selection string, sl_parse_streamlist does not help because streams are not separated
  QStringList selectors=selection.split(",");
  for(QStringList::iterator itSel=selectors.begin(); itSel!=selectors.end();itSel++) {
    QString& str=*itSel;
    int selectorIndex=str.indexOf(":");
    QList<int> stationIndexes=serverInfo.indexOf(QRegExp( str.left(selectorIndex)) );
    for(QList<int>::iterator itStat=stationIndexes.begin(); itStat!=stationIndexes.end(); itStat++) {
      const SeedLinkStation * station=serverInfo.at(*itStat);
      QModelIndex stationModelIndex=model->index(*itStat, 0);
      QRegExp streamExp;
      if(selectorIndex==-1) {
        streamExp.setPattern(".*");
      } else {
        switch(selectorType) {
        case SeedLinkSelector:
          streamExp=SeedLinkStation::selectorExpression(str.mid(selectorIndex+1));
          break;
        case RegExpSelector:
          streamExp.setPattern(str.mid(selectorIndex+1));
          break;
        }
      }
      QList<int> streamIndexes=station->indexOf(streamExp);
      for(QList<int>::iterator it=streamIndexes.begin();it!=streamIndexes.end();it++) {
        selModel->select(model->index(*it, 0, stationModelIndex),
                         QItemSelectionModel::Rows | QItemSelectionModel::Select);
      }
    }
  }
}
{_seedLink->setBufferType(bt);}
void GeopsySLinkGui::SeedLinkLoader::setFromTime ( QDateTime  f) [inline]
{_seedLink->setFromTime(f);}
{_seedLink->setMaximumDuration(d);}
void GeopsySLinkGui::SeedLinkLoader::setServer ( QString  serverAddress,
int  serverPort 
)

References GeopsySLink::SeedLink::serverName(), GeopsySLink::SeedLink::serverPort(), serverPort, GeopsySLink::SeedLink::setServer(), GeopsySLink::SeedLink::streams(), and TRACE.

Referenced by GeopsyMainWindow::seedlink().

{
  TRACE;
  // If current server is different than the one requested, stop current acquisition
  if(serverAddress!=_seedLink->serverName() || serverPort!=_seedLink->serverPort()) {
    Settings::setHistory("SeedLinkServers", serverAddress);
    serverName->clear();
    serverName->addItems(Settings::getHistory("SeedLinkSelectExpressions"));
    serverName->setEditText(serverAddress);  // Useful if this function is not called via the gui
    _seedLink->setServer(serverAddress.toAscii(), serverPort);
    port->setValue(serverPort);
  }
  static_cast<SeedLinkStreamItem *>(streamView->model())->setServer(0);
  _seedLink->streams();
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines