connect(analog_data, SIGNAL(min_max_changed(float, float)),
this, SLOT(on_min_max_changed(float, float)));
- GlobalSettings::register_change_handler(GlobalSettings::Key_View_ConversionThresholdDispMode,
- bind(&AnalogSignal::on_settingViewConversionThresholdDispMode_changed, this, _1));
+ GlobalSettings::add_change_handler(this);
GlobalSettings gs;
conversion_threshold_disp_mode_ =
update_scale();
}
+AnalogSignal::~AnalogSignal()
+{
+ GlobalSettings::remove_change_handler(this);
+}
+
shared_ptr<pv::data::SignalData> AnalogSignal::data() const
{
return base_->analog_data();
update_scale();
}
+void AnalogSignal::on_setting_changed(const QString &key, const QVariant &value)
+{
+ if (key == GlobalSettings::Key_View_ConversionThresholdDispMode)
+ on_settingViewConversionThresholdDispMode_changed(value);
+}
+
void AnalogSignal::paint_back(QPainter &p, ViewItemPaintParams &pp)
{
if (!base_->enabled())
if (segment_display_mode_ == ShowLastSegmentOnly)
segment = segments.back();
- if (segment_display_mode_ == ShowSingleSegmentOnly) {
+ if ((segment_display_mode_ == ShowSingleSegmentOnly) ||
+ (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
try {
segment = segments.at(current_segment_);
} catch (out_of_range) {
- qDebug() << "Current analog segment out of range for signal" << base_->name();
+ qDebug() << "Current analog segment out of range for signal" << base_->name() << ":" << current_segment_;
}
}
}
if (segment_display_mode_ == ShowLastSegmentOnly)
segment = segments.back();
- if (segment_display_mode_ == ShowSingleSegmentOnly) {
+ if ((segment_display_mode_ == ShowSingleSegmentOnly) ||
+ (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
try {
segment = segments.at(current_segment_);
} catch (out_of_range) {
- qDebug() << "Current logic segment out of range for signal" << base_->name();
+ qDebug() << "Current logic segment out of range for signal" << base_->name() << ":" << current_segment_;
}
}
}