summaryrefslogtreecommitdiffstats
path: root/clients/tde/src/widgets/tracewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clients/tde/src/widgets/tracewidget.cpp')
-rw-r--r--clients/tde/src/widgets/tracewidget.cpp167
1 files changed, 134 insertions, 33 deletions
diff --git a/clients/tde/src/widgets/tracewidget.cpp b/clients/tde/src/widgets/tracewidget.cpp
index 6f11ffc..04a2a00 100644
--- a/clients/tde/src/widgets/tracewidget.cpp
+++ b/clients/tde/src/widgets/tracewidget.cpp
@@ -205,7 +205,7 @@ void TraceLabelLayout::setGeometry(const TQRect &rect) {
int font_vertical_offset = font_height/2;
int graticule_height = m_traceWidget->m_graticuleWidget->height();
- int y = (((currentTrace->offset-currentTrace->topEdge)/(currentTrace->bottomEdge-currentTrace->topEdge))*(graticule_height))-font_vertical_offset;
+ int y = ((((currentTrace->offset+currentTrace->textOffset)-currentTrace->topEdge)/(currentTrace->bottomEdge-currentTrace->topEdge))*(graticule_height))-font_vertical_offset;
if (m_traceWidget->m_showLeftTraceInfoArea) {
if ((y < 0) || ((y+font_height) > graticule_height)) {
currentTrace->leftLabel->hide();
@@ -228,6 +228,7 @@ void TraceLabelLayout::invalidate() {
TQSize TraceLabelLayout::sizeHint() const
{
+ TQSize size;
if (!m_traceWidget->m_showLeftTraceInfoArea) {
return TQSize(0, 0);
}
@@ -239,11 +240,19 @@ TQSize TraceLabelLayout::sizeHint() const
++it;
s = s.expandedTo(item->sizeHint());
}
- return s + TQSize(spacing(), spacing());
+ size = s + TQSize(spacing(), spacing());
+
+ if (m_traceWidget->m_leftTraceInfoLabelsFit && list.getFirst()) {
+ return TQSize(size.width(), ((list.getFirst()->sizeHint().height() + m_traceWidget->m_leftTraceInfoAreaFitSpacing) * list.count()));
+ }
+ else {
+ return size;
+ }
}
TQSize TraceLabelLayout::minimumSize() const
{
+ TQSize minSize;
if (!m_traceWidget->m_showLeftTraceInfoArea) {
return TQSize(0, 0);
}
@@ -255,7 +264,14 @@ TQSize TraceLabelLayout::minimumSize() const
++it;
s = s.expandedTo(item->minimumSize());
}
- return s + TQSize(spacing(), spacing());
+ minSize = s + TQSize(spacing(), spacing());
+
+ if (m_traceWidget->m_leftTraceInfoLabelsFit && list.getFirst()) {
+ return TQSize(minSize.width(), ((list.getFirst()->minimumSize().height()+ m_traceWidget->m_leftTraceInfoAreaFitSpacing) * list.count()));
+ }
+ else {
+ return minSize;
+ }
}
TraceData::TraceData(TraceWidget* parent, TQWidget* labelParent) : TQObject(), parentWidget(parent) {
@@ -264,6 +280,7 @@ TraceData::TraceData(TraceWidget* parent, TQWidget* labelParent) : TQObject(), p
leftEdgeIndex = -1;
rightEdgeIndex = -1;
offset = 0.0;
+ textOffset = 0.0;
leftEdge = 0;
rightEdge = 0;
topEdge = 0;
@@ -286,7 +303,7 @@ TraceData::TraceData(TraceWidget* parent, TQWidget* labelParent) : TQObject(), p
leftLabel = new TQLabel(labelParent);
leftLabel->setPaletteBackgroundColor(labelParent->paletteBackgroundColor());
leftLabel->setPaletteForegroundColor(color);
- leftLabel->setAlignment(TQt::AlignHCenter|TQt::AlignVCenter|TQt::SingleLine);
+ leftLabel->setAlignment(TQt::AlignLeft|TQt::AlignVCenter|TQt::SingleLine);
font = leftLabel->font();
font.setPointSize(font.pointSize()-1);
leftLabel->setFont(font);
@@ -421,7 +438,7 @@ void TraceData::drawTrace(TQPainter* p, int graticule_width, int graticule_heigh
int font_height = p->fontMetrics().boundingRect("→").height();
x = 0;
- y = (((offset-topEdge)/(bottomEdge-topEdge))*(graticule_height))+(font_height/2)-(font_vertical_offset/2);
+ y = ((((offset+textOffset)-topEdge)/(bottomEdge-topEdge))*(graticule_height))+(font_height/2)-(font_vertical_offset/2);
if (y > graticule_height) {
font_height = p->fontMetrics().boundingRect("↓").height();
y = graticule_height-font_vertical_offset;
@@ -1047,7 +1064,10 @@ TraceWidget::TraceWidget(TQWidget* parent, const char* name) : TQWidget(parent,
m_zoomCursorStartIndex(0),
m_zoomBoxEnabled(false),
m_useAbsoluteHorizontalRange(true),
- m_showLeftTraceInfoArea(false) {
+ m_showLeftTraceInfoArea(false),
+ m_leftTraceInfoLabelsFit(false),
+ m_leftTraceInfoAreaFitSpacing(0),
+ m_minimumPixelsPerHorizDiv(0) {
setBackgroundMode(NoBackground);
setSizePolicy(TQSizePolicy(TQSizePolicy::MinimumExpanding, TQSizePolicy::MinimumExpanding));
@@ -1115,17 +1135,28 @@ void TraceWidget::setBackgroundColor(const TQColor color) {
}
}
-void TraceWidget::setNumberOfSamples(uint traceNumber, unsigned int samples) {
+void TraceWidget::setNumberOfSamples(uint traceNumber, unsigned int samples, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
+ int i;
+ int prev_samples = m_traceArray[traceNumber]->sampleArray.count();
+
m_traceArray[traceNumber]->numberOfSamples = samples;
m_traceArray[traceNumber]->sampleArray.resize(samples);
m_traceArray[traceNumber]->positionArray.resize(samples);
m_traceArray[traceNumber]->leftEdgeIndex = -1;
m_traceArray[traceNumber]->rightEdgeIndex = -1;
- m_graticuleWidget->updateGraticule();
- updateTraceText();
+ // Zero the uninitialized portion of the data arrays to avoid ugly drawing artifacts on resize
+ for (i=prev_samples; i<samples; i++) {
+ m_traceArray[traceNumber]->sampleArray[i] = 0;
+ m_traceArray[traceNumber]->positionArray[i] = 0;
+ }
+
+ if (!deferUpdate) {
+ m_graticuleWidget->updateGraticule();
+ updateTraceText();
+ }
}
void TraceWidget::setNumberOfHorizontalDivisions(unsigned int divisions) {
@@ -1142,7 +1173,7 @@ void TraceWidget::setNumberOfVerticalDivisions(unsigned int divisions) {
updateCursorText();
}
-void TraceWidget::setDisplayLimits(uint traceNumber, TQRectF limits) {
+void TraceWidget::setDisplayLimits(uint traceNumber, TQRectF limits, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->leftEdge = limits.x();
@@ -1152,10 +1183,12 @@ void TraceWidget::setDisplayLimits(uint traceNumber, TQRectF limits) {
m_traceArray[traceNumber]->leftEdgeIndex = -1;
m_traceArray[traceNumber]->rightEdgeIndex = -1;
- m_graticuleWidget->updateGraticule();
- m_graticuleWidget->repaint(false);
- updateTraceText();
- updateCursorText();
+ if (!deferUpdate) {
+ m_graticuleWidget->updateGraticule();
+ m_graticuleWidget->repaint(false);
+ updateTraceText();
+ updateCursorText();
+ }
}
TQRectF TraceWidget::displayLimits(uint traceNumber) {
@@ -1266,13 +1299,15 @@ TQDoubleArray& TraceWidget::samples(uint traceNumber) {
return m_traceArray[traceNumber]->sampleArray;
}
-void TraceWidget::setSamples(uint traceNumber, TQDoubleArray& tqda) {
+void TraceWidget::setSamples(uint traceNumber, TQDoubleArray& tqda, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->sampleArray = tqda;
m_traceArray[traceNumber]->numberOfSamples = tqda.size();
- m_graticuleWidget->repaint(false);
+ if (!deferUpdate) {
+ m_graticuleWidget->repaint(false);
+ }
}
TQDoubleArray& TraceWidget::positions(uint traceNumber) {
@@ -1281,7 +1316,7 @@ TQDoubleArray& TraceWidget::positions(uint traceNumber) {
return m_traceArray[traceNumber]->positionArray;
}
-void TraceWidget::setPositions(uint traceNumber, TQDoubleArray& tqda) {
+void TraceWidget::setPositions(uint traceNumber, TQDoubleArray& tqda, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->positionArray = tqda;
@@ -1289,7 +1324,9 @@ void TraceWidget::setPositions(uint traceNumber, TQDoubleArray& tqda) {
m_traceArray[traceNumber]->leftEdgeIndex = -1;
m_traceArray[traceNumber]->rightEdgeIndex = -1;
- m_graticuleWidget->repaint(false);
+ if (!deferUpdate) {
+ m_graticuleWidget->repaint(false);
+ }
}
TQColor TraceWidget::traceColor(uint traceNumber) {
@@ -1314,12 +1351,12 @@ bool TraceWidget::traceEnabled(uint traceNumber) {
return m_traceArray[traceNumber]->enabled;
}
-void TraceWidget::setTraceEnabled(uint traceNumber, bool enabled, bool showText) {
+void TraceWidget::setTraceEnabled(uint traceNumber, bool enabled, TextDisplayType showText, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->enabled = enabled;
if (enabled) {
- if (showText) {
+ if (showText == FullText) {
m_traceArray[traceNumber]->paramLabel->show();
m_traceArray[traceNumber]->leftLabel->show();
m_traceArray[traceNumber]->graphStatusLabel->show();
@@ -1333,7 +1370,12 @@ void TraceWidget::setTraceEnabled(uint traceNumber, bool enabled, bool showText)
m_traceArray[traceNumber]->paramLabel->hide();
m_traceArray[traceNumber]->leftLabel->hide();
m_traceArray[traceNumber]->graphStatusLabel->hide();
- m_traceArray[traceNumber]->graphStatusLabelInner->show();
+ if (showText == SummaryText) {
+ m_traceArray[traceNumber]->graphStatusLabelInner->show();
+ }
+ else {
+ m_traceArray[traceNumber]->graphStatusLabelInner->hide();
+ }
m_traceArray[traceNumber]->singleIncrBtn->hide();
m_traceArray[traceNumber]->singleDecrBtn->hide();
m_traceArray[traceNumber]->posResetBtn->hide();
@@ -1351,9 +1393,11 @@ void TraceWidget::setTraceEnabled(uint traceNumber, bool enabled, bool showText)
m_traceArray[traceNumber]->posSetBtn->hide();
}
- m_graticuleWidget->updateGraticule();
- m_graticuleWidget->repaint(false);
- updateTraceText();
+ if (!deferUpdate) {
+ m_graticuleWidget->updateGraticule();
+ m_graticuleWidget->repaint(false);
+ updateTraceText();
+ }
}
TQString TraceWidget::traceName(uint traceNumber) {
@@ -1362,11 +1406,13 @@ TQString TraceWidget::traceName(uint traceNumber) {
return m_traceArray[traceNumber]->traceName;
}
-void TraceWidget::setTraceName(uint traceNumber, TQString name) {
+void TraceWidget::setTraceName(uint traceNumber, TQString name, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->traceName = name;
- updateTraceText();
+ if (!deferUpdate) {
+ updateTraceText();
+ }
}
TQString TraceWidget::traceHorizontalUnits(uint traceNumber) {
@@ -1375,11 +1421,13 @@ TQString TraceWidget::traceHorizontalUnits(uint traceNumber) {
return m_traceArray[traceNumber]->horizontalUnits;
}
-void TraceWidget::setTraceHorizontalUnits(uint traceNumber, TQString units) {
+void TraceWidget::setTraceHorizontalUnits(uint traceNumber, TQString units, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->horizontalUnits = units;
- updateTraceText();
+ if (!deferUpdate) {
+ updateTraceText();
+ }
}
TQString TraceWidget::traceVerticalUnits(uint traceNumber) {
@@ -1388,11 +1436,13 @@ TQString TraceWidget::traceVerticalUnits(uint traceNumber) {
return m_traceArray[traceNumber]->verticalUnits;
}
-void TraceWidget::setTraceVerticalUnits(uint traceNumber, TQString units) {
+void TraceWidget::setTraceVerticalUnits(uint traceNumber, TQString units, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->verticalUnits = units;
- updateTraceText();
+ if (!deferUpdate) {
+ updateTraceText();
+ }
}
double TraceWidget::cursorPosition(uint cursorNumber) {
@@ -1714,6 +1764,20 @@ void TraceWidget::showLeftTraceInfoArea(bool show) {
}
}
+void TraceWidget::fitLeftTraceInfoArea(bool fit) {
+ m_leftTraceInfoLabelsFit = fit;
+ m_traceLeftLabelLayout->invalidate();
+}
+
+void TraceWidget::setLeftTraceInfoAreaFitSpacing(int spacing) {
+ m_leftTraceInfoAreaFitSpacing = spacing;
+ m_traceLeftLabelLayout->invalidate();
+}
+
+void TraceWidget::setMinimumPixelsPerHorizDiv(unsigned int pixels) {
+ m_minimumPixelsPerHorizDiv = pixels;
+}
+
TQString TraceWidget::prettyFormat(double value, double rangeDetectValue, TQString baseUnits, unsigned int precision) {
TQString result;
TQString unitMultiplier;
@@ -1789,12 +1853,39 @@ double TraceWidget::traceOffset(uint traceNumber) {
}
void TraceWidget::setTraceOffset(uint traceNumber, double offset) {
+ setTraceOffset(traceNumber, offset, false);
+}
+
+void TraceWidget::setTraceOffset(uint traceNumber, double offset, bool deferUpdate) {
VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->offset = offset;
- m_graticuleWidget->repaint(false);
- updateTraceText();
+ if (!deferUpdate) {
+ m_graticuleWidget->repaint(false);
+ updateTraceText();
+ }
+}
+
+double TraceWidget::traceTextOffset(uint traceNumber) {
+ VERIFY_TRACE_ARRAY_SIZE
+
+ return m_traceArray[traceNumber]->textOffset;
+}
+
+void TraceWidget::setTraceTextOffset(uint traceNumber, double offset) {
+ setTraceOffset(traceNumber, offset, false);
+}
+
+void TraceWidget::setTraceTextOffset(uint traceNumber, double offset, bool deferUpdate) {
+ VERIFY_TRACE_ARRAY_SIZE
+
+ m_traceArray[traceNumber]->textOffset = offset;
+
+ if (!deferUpdate) {
+ m_graticuleWidget->repaint(false);
+ updateTraceText();
+ }
}
void TraceWidget::processChangedOffset(double offset) {
@@ -1904,6 +1995,16 @@ void TraceWidget::resizeCursorArray(uint newsize) {
}
}
+TQSize TraceWidget::sizeHint() const {
+ TQSize widgetSizeHint = TQWidget::sizeHint();
+ unsigned int minimumHorizWidth = m_horizDivs * m_minimumPixelsPerHorizDiv;
+ return TQSize(TQMAX(minimumHorizWidth, widgetSizeHint.height()), widgetSizeHint.height());
+}
+
+TQSize TraceWidget::minimumSizeHint() const {
+ return TQWidget::minimumSizeHint();
+}
+
TraceScrollWidget::TraceScrollWidget(TQWidget* parent, const char* name) : TQScrollView(parent, name) {
m_traceWidget = new TraceWidget(viewport());
addChild(m_traceWidget);
@@ -1915,7 +2016,7 @@ TraceScrollWidget::~TraceScrollWidget() {
}
TQSize TraceScrollWidget::sizeHint() const {
- return m_traceWidget->sizeHint();
+ return TQScrollView::sizeHint();
}
TQSize TraceScrollWidget::minimumSizeHint() const {