|
|
|
@ -370,7 +370,9 @@ void CursorData::moveNegMultiTicks() {
|
|
|
|
|
|
|
|
|
|
GraticuleWidget::GraticuleWidget(TraceWidget* parent, const char* name) : TQWidget(parent, name),
|
|
|
|
|
m_base(parent),
|
|
|
|
|
m_graticulePixmap(0) {
|
|
|
|
|
m_graticulePixmap(0),
|
|
|
|
|
leftMouseDown(false),
|
|
|
|
|
middleMouseDown(false) {
|
|
|
|
|
setBackgroundMode(NoBackground);
|
|
|
|
|
setSizePolicy(TQSizePolicy(TQSizePolicy::MinimumExpanding, TQSizePolicy::MinimumExpanding));
|
|
|
|
|
|
|
|
|
@ -453,12 +455,64 @@ void GraticuleWidget::resizeEvent(TQResizeEvent *) {
|
|
|
|
|
updateGraticule();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GraticuleWidget::mousePressEvent(TQMouseEvent *) {
|
|
|
|
|
//
|
|
|
|
|
void GraticuleWidget::mousePressEvent(TQMouseEvent *e) {
|
|
|
|
|
if ((e->button() == TQt::LeftButton) && (!leftMouseDown) && (!middleMouseDown)) {
|
|
|
|
|
m_prevCursorRect = m_base->zoomCursorBox();
|
|
|
|
|
if (m_base->m_zoomBoxEnabled) {
|
|
|
|
|
leftMouseDown = true;
|
|
|
|
|
m_prevDownPos = e->pos();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if ((e->button() == TQt::MidButton) && (!leftMouseDown) && (!middleMouseDown)) {
|
|
|
|
|
m_prevCursorRect = m_base->zoomCursorBox();
|
|
|
|
|
if (m_base->m_zoomBoxEnabled) {
|
|
|
|
|
middleMouseDown = true;
|
|
|
|
|
m_prevDownPos = e->pos();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GraticuleWidget::mouseReleaseEvent(TQMouseEvent *) {
|
|
|
|
|
//
|
|
|
|
|
void GraticuleWidget::mouseReleaseEvent(TQMouseEvent *e) {
|
|
|
|
|
if (leftMouseDown) {
|
|
|
|
|
if (e->button() == TQt::LeftButton) {
|
|
|
|
|
leftMouseDown = false;
|
|
|
|
|
|
|
|
|
|
double x1 = m_prevDownPos.x();
|
|
|
|
|
double y1 = m_prevDownPos.y();
|
|
|
|
|
double x2 = e->x();
|
|
|
|
|
double y2 = e->y();
|
|
|
|
|
if ((x1 < width()) && (y1 < height()) && (x2 < width()) && (y2 < height()) && (x1 > 0) && (y1 > 0) && (x2 > 0) && (y2 > 0)) {
|
|
|
|
|
x1 = ((x1/width())*100.0);
|
|
|
|
|
y1 = ((y1/height())*100.0);
|
|
|
|
|
x2 = ((x2/width())*100.0);
|
|
|
|
|
y2 = ((y2/height())*100.0);
|
|
|
|
|
m_base->setZoomCursorBox(TQRectF(x1, y1, x2, y2));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Reset original zoom box
|
|
|
|
|
m_base->setZoomCursorBox(m_prevCursorRect);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (middleMouseDown) {
|
|
|
|
|
if (e->button() == TQt::MidButton) {
|
|
|
|
|
middleMouseDown = false;
|
|
|
|
|
|
|
|
|
|
double x1 = m_prevDownPos.x();
|
|
|
|
|
double y1 = m_prevDownPos.y();
|
|
|
|
|
double x2 = e->x();
|
|
|
|
|
double y2 = e->y();
|
|
|
|
|
if ((x1 < width()) && (y1 < height()) && (x2 < width()) && (y2 < height()) && (x1 > 0) && (y1 > 0) && (x2 > 0) && (y2 > 0)) {
|
|
|
|
|
TQPoint diff = e->pos() - m_prevDownPos;
|
|
|
|
|
diff = TQPoint(diff.x()*(100.0/width()), diff.y()*(100.0/height()));
|
|
|
|
|
m_base->setZoomCursorBox(TQRectF(m_prevCursorRect.x()+diff.x(), m_prevCursorRect.y()+diff.y(), m_prevCursorRect.width()+diff.x(), m_prevCursorRect.height()+diff.y()));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Reset original zoom box
|
|
|
|
|
m_base->setZoomCursorBox(m_prevCursorRect);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GraticuleWidget::mouseDoubleClickEvent(TQMouseEvent *) {
|
|
|
|
@ -486,6 +540,25 @@ void GraticuleWidget::mouseMoveEvent(TQMouseEvent *e) {
|
|
|
|
|
m_base->m_traceArray[trace]->graphStatusLabelInner->setText(m_base->m_traceArray[trace]->graphStatusLabel->text());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (leftMouseDown) {
|
|
|
|
|
double x1 = m_prevDownPos.x();
|
|
|
|
|
double y1 = m_prevDownPos.y();
|
|
|
|
|
double x2 = e->x();
|
|
|
|
|
double y2 = e->y();
|
|
|
|
|
if ((x1 < width()) && (y1 < height()) && (x2 < width()) && (y2 < height()) && (x1 > 0) && (y1 > 0) && (x2 > 0) && (y2 > 0)) {
|
|
|
|
|
x1 = ((x1/width())*100.0);
|
|
|
|
|
y1 = ((y1/height())*100.0);
|
|
|
|
|
x2 = ((x2/width())*100.0);
|
|
|
|
|
y2 = ((y2/height())*100.0);
|
|
|
|
|
m_base->setZoomCursorBox(TQRectF(x1, y1, x2, y2));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (middleMouseDown) {
|
|
|
|
|
TQPoint diff = e->pos() - m_prevDownPos;
|
|
|
|
|
diff = TQPoint(diff.x()*(100.0/width()), diff.y()*(100.0/height()));
|
|
|
|
|
m_base->setZoomCursorBox(TQRectF(m_prevCursorRect.x()+diff.x(), m_prevCursorRect.y()+diff.y(), m_prevCursorRect.width()+diff.x(), m_prevCursorRect.height()+diff.y()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GraticuleWidget::enterEvent(TQEvent *) {
|
|
|
|
@ -602,7 +675,7 @@ void TraceWidget::updateTraceText() {
|
|
|
|
|
offsetText = TQString(" +%1").arg(prettyFormat(fabs(offset), vertical_range, m_traceArray[trace]->verticalUnits));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
m_traceArray[trace]->paramLabel->setText(TQString("<qt><nobr>%1%2<br>%3/div%4/div<br>%5,%6<br>%7,%8</qt>").arg(m_traceArray[trace]->traceName).arg(offsetText).arg(prettyFormat(horizontal_units_per_division, horizontal_range, m_traceArray[trace]->horizontalUnits)).arg(prettyFormat(vertical_units_per_division, vertical_range, m_traceArray[trace]->verticalUnits)).arg(prettyFormat(m_traceArray[trace]->leftEdge, horizontal_range, m_traceArray[trace]->horizontalUnits)).arg(prettyFormat(m_traceArray[trace]->topEdge, vertical_range, m_traceArray[trace]->verticalUnits)).arg(prettyFormat(m_traceArray[trace]->rightEdge, horizontal_range, m_traceArray[trace]->horizontalUnits)).arg(prettyFormat(m_traceArray[trace]->bottomEdge, vertical_range, m_traceArray[trace]->verticalUnits)));
|
|
|
|
|
m_traceArray[trace]->paramLabel->setText(TQString("<qt><nobr>%1%2<br>%3/div,%4/div<br>%5,%6<br>%7,%8</qt>").arg(m_traceArray[trace]->traceName).arg(offsetText).arg(prettyFormat(horizontal_units_per_division, horizontal_range, m_traceArray[trace]->horizontalUnits)).arg(prettyFormat(vertical_units_per_division, vertical_range, m_traceArray[trace]->verticalUnits)).arg(prettyFormat(m_traceArray[trace]->leftEdge, horizontal_range, m_traceArray[trace]->horizontalUnits)).arg(prettyFormat(m_traceArray[trace]->topEdge, vertical_range, m_traceArray[trace]->verticalUnits)).arg(prettyFormat(m_traceArray[trace]->rightEdge, horizontal_range, m_traceArray[trace]->horizontalUnits)).arg(prettyFormat(m_traceArray[trace]->bottomEdge, vertical_range, m_traceArray[trace]->verticalUnits)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -765,6 +838,8 @@ void TraceWidget::setCursorPosition(uint cursorNumber, double position) {
|
|
|
|
|
|
|
|
|
|
m_cursorArray[cursorNumber]->position = position;
|
|
|
|
|
updateCursorText();
|
|
|
|
|
m_graticuleWidget->updateGraticule();
|
|
|
|
|
m_graticuleWidget->repaint(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TraceWidget::cursorEnabled(uint cursorNumber) {
|
|
|
|
@ -885,6 +960,118 @@ TQRectF TraceWidget::zoomBox() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TQRectF TraceWidget::zoomCursorBox() {
|
|
|
|
|
uint i;
|
|
|
|
|
|
|
|
|
|
if ((m_cursorArray.count() < 4) || (!m_zoomBoxEnabled)) {
|
|
|
|
|
return TQRectF();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Find the first two horizontal and first two vertical cursors
|
|
|
|
|
// If two of each cannot be found, return TQRectF()
|
|
|
|
|
double horiz[2];
|
|
|
|
|
double vert[2];
|
|
|
|
|
int j = 0;
|
|
|
|
|
int k = 0;
|
|
|
|
|
for (i=0;i<m_cursorArray.count(); i++) {
|
|
|
|
|
if (m_cursorArray[i]->orientation == TQt::Horizontal) {
|
|
|
|
|
if (j<2) {
|
|
|
|
|
vert[j] = m_cursorArray[i]->position;
|
|
|
|
|
j++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (k<2) {
|
|
|
|
|
horiz[k] = m_cursorArray[i]->position;
|
|
|
|
|
k++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((j>1) && (k>1)) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((j>1) && (k>1)) {
|
|
|
|
|
return TQRectF(horiz[0], vert[0], horiz[1], vert[1]);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return TQRectF();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TraceWidget::setZoomCursorBox(const TQRectF rect) {
|
|
|
|
|
uint i;
|
|
|
|
|
|
|
|
|
|
TQRectF boundedRect = rect;
|
|
|
|
|
|
|
|
|
|
if (boundedRect.x() < 0.0) {
|
|
|
|
|
boundedRect.setX(0.0);
|
|
|
|
|
}
|
|
|
|
|
if (boundedRect.x() > 100.0) {
|
|
|
|
|
boundedRect.setX(100.0);
|
|
|
|
|
}
|
|
|
|
|
if (boundedRect.y() < 0.0) {
|
|
|
|
|
boundedRect.setY(0.0);
|
|
|
|
|
}
|
|
|
|
|
if (boundedRect.y() > 100.0) {
|
|
|
|
|
boundedRect.setY(100.0);
|
|
|
|
|
}
|
|
|
|
|
if (boundedRect.width() < 0.0) {
|
|
|
|
|
boundedRect.setWidth(0.0);
|
|
|
|
|
}
|
|
|
|
|
if (boundedRect.width() > 100.0) {
|
|
|
|
|
boundedRect.setWidth(100.0);
|
|
|
|
|
}
|
|
|
|
|
if (boundedRect.height() < 0.0) {
|
|
|
|
|
boundedRect.setHeight(0.0);
|
|
|
|
|
}
|
|
|
|
|
if (boundedRect.height() > 100.0) {
|
|
|
|
|
boundedRect.setHeight(100.0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((m_cursorArray.count() < 4) || (!m_zoomBoxEnabled)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Find the first two horizontal and first two vertical cursors
|
|
|
|
|
// If two of each cannot be found, return TQRectF()
|
|
|
|
|
CursorData* horiz[2];
|
|
|
|
|
CursorData* vert[2];
|
|
|
|
|
int j = 0;
|
|
|
|
|
int k = 0;
|
|
|
|
|
for (i=0;i<m_cursorArray.count(); i++) {
|
|
|
|
|
if (m_cursorArray[i]->orientation == TQt::Horizontal) {
|
|
|
|
|
if (j<2) {
|
|
|
|
|
vert[j] = m_cursorArray[i];
|
|
|
|
|
j++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (k<2) {
|
|
|
|
|
horiz[k] = m_cursorArray[i];
|
|
|
|
|
k++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((j>1) && (k>1)) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((j>1) && (k>1)) {
|
|
|
|
|
// Set cursors...
|
|
|
|
|
vert[0]->position = boundedRect.y();
|
|
|
|
|
vert[1]->position = boundedRect.height();
|
|
|
|
|
horiz[0]->position = boundedRect.x();
|
|
|
|
|
horiz[1]->position = boundedRect.width();
|
|
|
|
|
|
|
|
|
|
updateCursorText();
|
|
|
|
|
m_graticuleWidget->updateGraticule();
|
|
|
|
|
m_graticuleWidget->repaint(true);
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TraceWidget::setZoomBoxEnabled(bool enabled) {
|
|
|
|
|
m_zoomBoxEnabled = enabled;
|
|
|
|
|
m_graticuleWidget->updateGraticule();
|
|
|
|
|