Exemple #1
0
void
PlotWidget::saveMarkers (DataBase &db)
{
  // save plot markers
  QHashIterator<QString, Plot *> pit(_plots);
  while (pit.hasNext())
  {
    pit.next();
    Plot *p = pit.value();
    
    QHash<QString, Marker *> markers = p->markers();
    QHashIterator<QString, Marker *> mit(markers);
    while (mit.hasNext())
    {
      mit.next();
      Marker *m = mit.value();
    
      if (m->readOnly())
        continue;
      
      if (! m->modified())
        continue;
      
      Entity *e = m->settings();
      e->setName(mit.key());
      
      db.transaction();
      db.set(e);
      db.commit();
      
      m->setModified(FALSE);
    }
  }
}
Exemple #2
0
int
MarkerSell::move (PluginData *pd)
{
  if (! pd->data)
    return 0;
  
  Marker *sell = (Marker *) pd->data;
  
  switch (pd->status)
  {
    case PlotStatus::_MOVE:
    {
      Entity *e = sell->settings();
      
      QVariant *price = e->get(QString("price"));
      if (! price)
        return 0;

      QVariant *date = e->get(QString("date"));
      if (! date)
        return 0;
      
      QwtScaleMap map = sell->plot()->canvasMap(QwtPlot::xBottom);
      int x = map.invTransform((double) pd->point.x());

      if (! g_symbol)
        return 0;
      Bar *tbar = g_symbol->bar(x);
      if (! tbar)
        return 0;
      date->setValue(tbar->date());

      map = sell->plot()->canvasMap(QwtPlot::yRight);
      price->setValue(map.invTransform((double) pd->point.y()));
      
      sell->setModified(TRUE);

      sell->plot()->replot();
      break;
    }
    default:
      break;
  }
  
  return 1;
}
int
MarkerRetracement::move (PluginData *pd)
{
  if (! pd->data)
    return 0;
  
  Marker *m = (Marker *) pd->data;
  
  Entity *e = m->settings();
  
  switch (pd->status)
  {
    case PlotStatus::_MOVE:
    case PlotStatus::_CREATE_MOVE:
    {
      QVariant *date = e->get(QString("date"));
      if (! date)
        return 0;
  
      QVariant *date2 = e->get(QString("date2"));
      if (! date2)
        return 0;

      QVariant *high = e->get(QString("high"));
      if (! high)
        return 0;

      QVariant *low = e->get(QString("low"));
      if (! low)
        return 0;
      
      QwtScaleMap map = m->plot()->canvasMap(QwtPlot::xBottom);
      int x = map.invTransform((double) pd->point.x());

      Bar *bar = g_symbol->bar(x);
      if (! bar)
        return 0;
      date->setValue(bar->date());

      map = m->plot()->canvasMap(QwtPlot::yRight);
      high->setValue(map.invTransform((double) pd->point.y()));

      if (pd->status == PlotStatus::_CREATE_MOVE)
      {
        date2->setValue(bar->date());
        low->setValue(high->toDouble());
      }

      m->plot()->replot();

      m->setModified(TRUE);
      break;
    }
    case PlotStatus::_MOVE2:
    {
      QVariant *date2 = e->get(QString("date2"));
      if (! date2)
        return 0;

      QVariant *low = e->get(QString("low"));
      if (! low)
        return 0;

      QwtScaleMap map = m->plot()->canvasMap(QwtPlot::xBottom);
      int x = map.invTransform((double) pd->point.x());

      Bar *bar = g_symbol->bar(x);
      if (! bar)
        return 0;
      date2->setValue(bar->date());

      map = m->plot()->canvasMap(QwtPlot::yRight);
      low->setValue(map.invTransform((double) pd->point.y()));

      m->plot()->replot();

      m->setModified(TRUE);
      break;
    }
    default:
      break;
  }
  
  return 1;
}
int
MarkerTLine::move (PluginData *pd)
{
  if (! pd->data)
    return 0;
  
  Marker *tline = (Marker *) pd->data;
  
  Entity *e = tline->settings();
  
  switch (pd->status)
  {
    case PlotStatus::_MOVE:
    case PlotStatus::_CREATE_MOVE:
    {
      QVariant *price = e->get(QString("price"));
      if (! price)
        return 0;

      QVariant *date = e->get(QString("date"));
      if (! date)
        return 0;
  
      QVariant *price2 = e->get(QString("price2"));
      if (! price2)
        return 0;

      QVariant *date2 = e->get(QString("date2"));
      if (! date2)
        return 0;
      
      QwtScaleMap map = tline->plot()->canvasMap(QwtPlot::xBottom);
      int x = map.invTransform((double) pd->point.x());

      Bar *bar = g_symbol->bar(x);
      if (! bar)
        return 0;
      date->setValue(bar->date());

      map = tline->plot()->canvasMap(QwtPlot::yRight);
      price->setValue(map.invTransform((double) pd->point.y()));

      if (pd->status == PlotStatus::_CREATE_MOVE)
      {
        date2->setValue(bar->date());
        price2->setValue(price->toDouble());
      }

      tline->plot()->replot();

      tline->setModified(TRUE);
      break;
    }
    case PlotStatus::_MOVE2:
    {
      QVariant *price2 = e->get(QString("price2"));
      if (! price2)
        return 0;

      QVariant *date2 = e->get(QString("date2"));
      if (! date2)
        return 0;

      QwtScaleMap map = tline->plot()->canvasMap(QwtPlot::xBottom);
      int x = map.invTransform((double) pd->point.x());

      Bar *bar = g_symbol->bar(x);
      if (! bar)
        return 0;
      date2->setValue(bar->date());

      map = tline->plot()->canvasMap(QwtPlot::yRight);
      price2->setValue(map.invTransform((double) pd->point.y()));

      tline->plot()->replot();

      tline->setModified(TRUE);
      break;
    }
    default:
      break;
  }
  
  return 1;
}