diff --git a/clients/tde/src/part/commanalyzer/layout.ui b/clients/tde/src/part/commanalyzer/layout.ui
index 172fc93..fca0baa 100644
--- a/clients/tde/src/part/commanalyzer/layout.ui
+++ b/clients/tde/src/part/commanalyzer/layout.ui
@@ -64,27 +64,35 @@
unnamed
-
+
- traceWidget
-
-
-
- 80
- 80
-
-
-
-
-
- traceZoomWidget
-
-
-
- 80
- 80
-
-
+ splitter1
+
+
+ Vertical
+
+
+
+ traceWidget
+
+
+
+ 0
+ 0
+
+
+
+
+
+ traceZoomWidget
+
+
+
+ 0
+ 0
+
+
+
diff --git a/clients/tde/src/part/scope/layout.ui b/clients/tde/src/part/scope/layout.ui
index 038bf7f..9390e82 100644
--- a/clients/tde/src/part/scope/layout.ui
+++ b/clients/tde/src/part/scope/layout.ui
@@ -64,27 +64,35 @@
unnamed
-
+
- traceWidget
-
-
-
- 80
- 80
-
-
-
-
-
- traceZoomWidget
-
-
-
- 80
- 80
-
-
+ splitter1
+
+
+ Vertical
+
+
+
+ traceWidget
+
+
+
+ 0
+ 0
+
+
+
+
+
+ traceZoomWidget
+
+
+
+ 0
+ 0
+
+
+
diff --git a/clients/tde/src/part/scope/part.cpp b/clients/tde/src/part/scope/part.cpp
index d6dda20..9909e65 100644
--- a/clients/tde/src/part/scope/part.cpp
+++ b/clients/tde/src/part/scope/part.cpp
@@ -62,7 +62,7 @@ K_EXPORT_COMPONENT_FACTORY( libremotelab_scope, RemoteLab::Factory )
ScopePart::ScopePart( TQWidget *parentWidget, const char *widgetName, TQObject *parent, const char *name, const TQStringList& )
: RemoteInstrumentPart( parent, name ), m_traceWidget(0), m_commHandlerState(-1), m_commHandlerMode(0), m_commHandlerCommandState(0), m_connectionActiveAndValid(false),
- m_base(0), stopTraceUpdate(false)
+ m_triggerChannel(-1), m_base(0), stopTraceUpdate(false)
{
// Initialize important base class variables
m_clientLibraryName = CLIENT_LIBRARY;
@@ -103,7 +103,7 @@ ScopePart::ScopePart( TQWidget *parentWidget, const char *widgetName, TQObject *
m_traceWidget->setCursorOrientation(2, TQt::Horizontal);
m_traceWidget->setCursorOrientation(3, TQt::Vertical);
m_traceWidget->setCursorOrientation(4, TQt::Vertical);
- m_traceWidget->setCursorEnabled(0, true);
+ m_traceWidget->setCursorEnabled(0, false);
m_traceWidget->setCursorEnabled(1, true);
m_traceWidget->setCursorEnabled(2, true);
m_traceWidget->setCursorEnabled(3, true);
@@ -972,6 +972,8 @@ void ScopePart::recallWaveforms() {
ds >> cursorPos;
m_traceWidget->setCursorPosition(cursorno, cursorPos);
}
+ m_triggerChannel = -1;
+ m_triggerLevel = 0;
updateGraticule();
postProcessTrace();
// HACK
@@ -1008,10 +1010,16 @@ void ScopePart::updateGraticule() {
m_base->traceZoomWidget->setNumberOfHorizontalDivisions(m_hdivs);
m_base->traceZoomWidget->setNumberOfVerticalDivisions(m_vdivs);
- TraceNumberList activeTraces;
- activeTraces.append(m_triggerChannel-1);
- m_traceWidget->setCursorActiveTraceList(0, activeTraces);
- m_traceWidget->setCursorPosition(0, (50.0-((m_triggerLevel*100.0)/(m_voltsDiv[m_triggerChannel]*m_vdivs))));
+ if ((m_triggerChannel > 0) && (m_triggerChannel <= m_maxNumberOfTraces)) {
+ TraceNumberList activeTraces;
+ activeTraces.append(m_triggerChannel-1);
+ m_traceWidget->setCursorActiveTraceList(0, activeTraces);
+ m_traceWidget->setCursorPosition(0, (50.0-((m_triggerLevel*100.0)/(m_voltsDiv[m_triggerChannel]*m_vdivs))));
+ m_traceWidget->setCursorEnabled(0, true);
+ }
+ else {
+ m_traceWidget->setCursorEnabled(0, false);
+ }
m_traceWidget->setTraceColor(0, TQColor(255, 255, 255));
m_traceWidget->setTraceColor(1, TQColor(128, 255, 128));
diff --git a/clients/tde/src/widgets/tracewidget.cpp b/clients/tde/src/widgets/tracewidget.cpp
index e62bdb0..6375a13 100644
--- a/clients/tde/src/widgets/tracewidget.cpp
+++ b/clients/tde/src/widgets/tracewidget.cpp
@@ -336,20 +336,22 @@ CursorData::~CursorData() {
}
void CursorData::drawCursor(TQPainter* p, int graticule_width, int graticule_height) {
- if (highlighted) {
- p->setPen(highlightColor.dark(parentWidget->m_cursorDarkness));
- }
- else {
- p->setPen(color.dark(parentWidget->m_cursorDarkness));
- }
+ if (enabled) {
+ if (highlighted) {
+ p->setPen(highlightColor.dark(parentWidget->m_cursorDarkness));
+ }
+ else {
+ p->setPen(color.dark(parentWidget->m_cursorDarkness));
+ }
- if (orientation == TQt::Vertical) {
- int x = abs(((position)/(100.0))*(graticule_width));
- p->drawLine(x, 0, x, graticule_height);
- }
- else {
- int y = abs(((position)/(100.0))*(graticule_height));
- p->drawLine(0, y, graticule_width, y);
+ if (orientation == TQt::Vertical) {
+ int x = abs(((position)/(100.0))*(graticule_width));
+ p->drawLine(x, 0, x, graticule_height);
+ }
+ else {
+ int y = abs(((position)/(100.0))*(graticule_height));
+ p->drawLine(0, y, graticule_width, y);
+ }
}
}
@@ -603,6 +605,7 @@ void GraticuleWidget::mouseReleaseEvent(TQMouseEvent *e) {
if (m_base->m_cursorArray[m_movingCursor]->position > 100.0) {
m_base->m_cursorArray[m_movingCursor]->position = 100.0;
}
+ emit(cursorPositionChanged(m_movingCursor, m_base->m_cursorArray[m_movingCursor]->position));
m_movingCursor = -1;
updateGraticule();
repaint(false);
@@ -770,6 +773,7 @@ void GraticuleWidget::mouseMoveEvent(TQMouseEvent *e) {
if (m_base->m_cursorArray[m_movingCursor]->position > 100.0) {
m_base->m_cursorArray[m_movingCursor]->position = 100.0;
}
+ emit(cursorPositionChanged(m_movingCursor, m_base->m_cursorArray[m_movingCursor]->position));
updateGraticule();
repaint(false);
cursorHighlightChanged = false;
@@ -811,6 +815,7 @@ TraceWidget::TraceWidget(TQWidget* parent, const char* name) : TQWidget(parent,
m_primaryLayout = new TQGridLayout(this);
m_graticuleWidget = new GraticuleWidget(this);
+ connect(m_graticuleWidget, SIGNAL(cursorPositionChanged(uint, double)), this, SLOT(processChangedCursor(uint, double)));
m_primaryLayout->addMultiCellWidget(m_graticuleWidget, 0, 254, 0, 254);
m_rightPaneLayout = new TQGridLayout;
m_traceLabelLayout = new TQGridLayout;
@@ -1139,6 +1144,7 @@ void TraceWidget::setCursorPosition(uint cursorNumber, double position) {
if (position > 100.0) position = 100.0;
m_cursorArray[cursorNumber]->position = position;
+ emit(cursorPositionChanged(cursorNumber, m_cursorArray[cursorNumber]->position));
updateCursorText();
m_graticuleWidget->updateGraticule();
m_graticuleWidget->repaint(false);
@@ -1376,18 +1382,22 @@ void TraceWidget::setZoomCursorBox(const TQRectF rect) {
// If two of each cannot be found, return TQRectF()
CursorData* horiz[2];
CursorData* vert[2];
+ uint horizIndex[2];
+ uint vertIndex[2];
int j = 0;
int k = 0;
for (i=m_zoomCursorStartIndex;iorientation == TQt::Horizontal) {
if (j<2) {
vert[j] = m_cursorArray[i];
+ vertIndex[j] = i;
j++;
}
}
else {
if (k<2) {
horiz[k] = m_cursorArray[i];
+ horizIndex[j] = i;
k++;
}
}
@@ -1398,9 +1408,13 @@ void TraceWidget::setZoomCursorBox(const TQRectF rect) {
if ((j>1) && (k>1)) {
// Set cursors...
vert[0]->position = boundedRect.y();
+ emit(cursorPositionChanged(vertIndex[0], m_cursorArray[vertIndex[0]]->position));
vert[1]->position = boundedRect.height();
+ emit(cursorPositionChanged(vertIndex[1], m_cursorArray[vertIndex[1]]->position));
horiz[0]->position = boundedRect.x();
+ emit(cursorPositionChanged(horizIndex[0], m_cursorArray[horizIndex[0]]->position));
horiz[1]->position = boundedRect.width();
+ emit(cursorPositionChanged(horizIndex[1], m_cursorArray[horizIndex[1]]->position));
updateCursorText();
m_graticuleWidget->updateGraticule();
@@ -1514,6 +1528,10 @@ void TraceWidget::processChangedOffset(double offset) {
}
}
+void TraceWidget::processChangedCursor(uint cursorNumber, double newPosition) {
+ emit(cursorPositionChanged(cursorNumber, newPosition));
+}
+
void TraceWidget::resizeTraceArray(uint newsize) {
uint oldcount = m_traceArray.count();
diff --git a/clients/tde/src/widgets/tracewidget.h b/clients/tde/src/widgets/tracewidget.h
index 130904f..7ca1e24 100644
--- a/clients/tde/src/widgets/tracewidget.h
+++ b/clients/tde/src/widgets/tracewidget.h
@@ -149,6 +149,9 @@ class GraticuleWidget : public TQWidget
virtual void enterEvent(TQEvent *);
virtual void leaveEvent(TQEvent *);
+ signals:
+ void cursorPositionChanged(uint cursorNumber, double newPosition);
+
private slots:
void updateGraticule();
@@ -233,10 +236,12 @@ class TraceWidget : public TQWidget
void updateTraceText();
void updateCursorText();
void processChangedOffset(double offset);
+ void processChangedCursor(uint cursorNumber, double newPosition);
signals:
void zoomBoxChanged(const TQRectF&);
void offsetChanged(uint traceNumber, double offset);
+ void cursorPositionChanged(uint cursorNumber, double newPosition);
private:
void resizeTraceArray(uint newsize);