#include <QPainter>
+#include <pv/widgets/popup.h>
+
using namespace std;
namespace pv {
_view(view),
_colour(colour),
_time(time),
- _value_action(&view),
- _value_widget(&view),
+ _value_action(NULL),
+ _value_widget(NULL),
_updating_value_widget(false)
{
- _value_action.setDefaultWidget(&_value_widget);
-
- _value_widget.setValue(time);
- _value_widget.setDecimals(6);
- _value_widget.setSuffix("s");
- _value_widget.setSingleStep(1e-6);
-
- connect(&_value_widget, SIGNAL(valueChanged(double)),
- this, SLOT(on_value_changed(double)));
}
double TimeMarker::time() const
return _time;
}
+float TimeMarker::get_x() const
+{
+ return (_time - _view.offset()) / _view.scale();
+}
+
void TimeMarker::set_time(double time)
{
_time = time;
- _updating_value_widget = true;
- _value_widget.setValue(time);
- _updating_value_widget = false;
+
+ if (_value_widget) {
+ _updating_value_widget = true;
+ _value_widget->setValue(time);
+ _updating_value_widget = false;
+ }
+
time_changed();
}
void TimeMarker::paint(QPainter &p, const QRect &rect)
{
- const float x = (_time - _view.offset()) / _view.scale();
+ const float x = get_x();
p.setPen(_colour);
p.drawLine(QPointF(x, rect.top()), QPointF(x, rect.bottom()));
}
-const list<QAction*> TimeMarker::get_context_bar_actions()
+pv::widgets::Popup* TimeMarker::create_popup(QWidget *parent)
{
- list<QAction*> actions;
- actions.push_back(&_value_action);
- return actions;
+ using pv::widgets::Popup;
+
+ Popup *const popup = new Popup(parent);
+ QFormLayout *const form = new QFormLayout(popup);
+ popup->setLayout(form);
+
+ _value_widget = new QDoubleSpinBox(parent);
+ _value_widget->setValue(_time);
+ _value_widget->setDecimals(6);
+ _value_widget->setSuffix("s");
+ _value_widget->setSingleStep(1e-6);
+
+ connect(_value_widget, SIGNAL(valueChanged(double)),
+ this, SLOT(on_value_changed(double)));
+
+ form->addRow(tr("Time"), _value_widget);
+
+ return popup;
}
void TimeMarker::on_value_changed(double value)