git-svn-id: svn://db.shs.com.ru/libs@237 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2017-06-15 14:31:12 +00:00
parent 10f8898d2e
commit 4e90eef9bc

View File

@@ -166,11 +166,11 @@ bool Graphic::eventFilter(QObject * o, QEvent * e) {
//qDebug() << "event" << o << e;
if (o == canvas) {
switch (e->type()) {
case QEvent::Gesture:
foreach (QGesture * g, ((QGestureEvent*)e)->gestures())
procGesture(g);
case QEvent::Gesture:
foreach (QGesture * g, ((QGestureEvent*)e)->gestures())
procGesture(g);
break;
default: break;
default: break;
}
}
return QFrame::eventFilter(o, e);
@@ -265,34 +265,34 @@ void Graphic::canvasMouseMoveEvent(QMouseEvent * e) {
if (!navigation) return;
if (curaction != gaMove && (e->buttons() & Qt::RightButton) == Qt::RightButton) return;
switch (curaction) {
case gaZoomInRect:
ui->status->setText(tr("Selection") + ": " + pointCoords(srp) + " -> " +
pointCoords(crp) + ", " + tr("Size") + ": " + pointCoords(absPoint(crp - srp)));
repaintCanvas(true);
case gaZoomInRect:
ui->status->setText(tr("Selection") + ": " + pointCoords(srp) + " -> " +
pointCoords(crp) + ", " + tr("Size") + ": " + pointCoords(absPoint(crp - srp)));
repaintCanvas(true);
break;
case gaZoomRangeX:
ui->status->setText(tr("Range") + ": " + QString::number(srp.x(), 'f', 3) +
" -> " + QString::number(crp.x(), 'f', 3) + ", " + tr("Length") + ": " +
QString::number(qAbs(crp.x() - srp.x()), 'f', 3));
repaintCanvas(true);
case gaZoomRangeX:
ui->status->setText(tr("Range") + ": " + QString::number(srp.x(), 'f', 3) +
" -> " + QString::number(crp.x(), 'f', 3) + ", " + tr("Length") + ": " +
QString::number(qAbs(crp.x() - srp.x()), 'f', 3));
repaintCanvas(true);
break;
case gaZoomRangeY:
ui->status->setText(tr("Range") + ": " + QString::number(srp.y(), 'f', 3) +
" -> " + QString::number(crp.y(), 'f', 3) + ", " + tr("Length") + ": " +
QString::number(qAbs(crp.y() - srp.y()), 'f', 3));
repaintCanvas(true);
case gaZoomRangeY:
ui->status->setText(tr("Range") + ": " + QString::number(srp.y(), 'f', 3) +
" -> " + QString::number(crp.y(), 'f', 3) + ", " + tr("Length") + ": " +
QString::number(qAbs(crp.y() - srp.y()), 'f', 3));
repaintCanvas(true);
break;
case gaMove:
dp = e->pos() - prevpos;
dp.rx() *= selrect.width() / double(gridborder.x() + 5 - lastw);
dp.ry() *= selrect.height() / double(lasth - legy - gridborder.y() - 5);
selrect.translate(dp);
isFit = false;
emit visualRectChanged();
update(true);
setRectToLines();
case gaMove:
dp = e->pos() - prevpos;
dp.rx() *= selrect.width() / double(gridborder.x() + 5 - lastw);
dp.ry() *= selrect.height() / double(lasth - legy - gridborder.y() - 5);
selrect.translate(dp);
isFit = false;
emit visualRectChanged();
update(true);
setRectToLines();
break;
default: break;
default: break;
}
prevpos = e->pos();
}
@@ -325,12 +325,12 @@ void Graphic::canvasMousePressEvent(QMouseEvent * e) {
else if (e->modifiers() == Qt::ShiftModifier) curaction = gaZoomRangeY;
else curaction = gaZoomInRect;
switch (curaction) {
case gaZoomInRect:
case gaZoomRangeX:
case gaZoomRangeY:
swapToBuffer();
case gaZoomInRect:
case gaZoomRangeX:
case gaZoomRangeY:
swapToBuffer();
break;
default: break;
default: break;
}
}
setCurrentAction(curaction);
@@ -359,20 +359,20 @@ void Graphic::canvasMouseReleaseEvent(QMouseEvent * e) {
brp = canvas2real(sr.bottomRight());
isFit = false;
switch (curaction) {
case gaZoomInRect:
if (sr.width() <= 1 || sr.height() <= 1) break;
selrect.setCoords(tlp.x(), brp.y(), brp.x(), tlp.y());
setRectToLines();
case gaZoomInRect:
if (sr.width() <= 1 || sr.height() <= 1) break;
selrect.setCoords(tlp.x(), brp.y(), brp.x(), tlp.y());
setRectToLines();
break;
case gaZoomRangeX:
if (sr.width() <= 1) break;
findGraphicsRect(tlp.x(), brp.x());
case gaZoomRangeX:
if (sr.width() <= 1) break;
findGraphicsRect(tlp.x(), brp.x());
break;
case gaZoomRangeY:
if (sr.height() <= 1) break;
findGraphicsRect(0., 0., brp.y(), tlp.y());
case gaZoomRangeY:
if (sr.height() <= 1) break;
findGraphicsRect(0., 0., brp.y(), tlp.y());
break;
default: return;
default: return;
}
}
swapToNormal();
@@ -442,8 +442,8 @@ void Graphic::canvasLeaveEvent(QEvent * ) {
void Graphic::canvasKeyPressEvent(QKeyEvent * e) {
switch (e->key()) {
case Qt::Key_Escape: leaveFullscreen();
default: break;
case Qt::Key_Escape: leaveFullscreen();
default: break;
};
}
@@ -568,13 +568,13 @@ void Graphic::setButtonsPosition(Graphic::Alignment a) {
ui->widgetLeft->hide();
ui->widgetRight->hide();
switch (a) {
case Graphic::Left:
ui->widgetLeft->setLayout(ui->layoutButtons);
ui->widgetLeft->show();
case Graphic::Left:
ui->widgetLeft->setLayout(ui->layoutButtons);
ui->widgetLeft->show();
break;
case Graphic::Right:
ui->widgetRight->setLayout(ui->layoutButtons);
ui->widgetRight->show();
case Graphic::Right:
ui->widgetRight->setLayout(ui->layoutButtons);
ui->widgetRight->show();
break;
}
}
@@ -692,8 +692,8 @@ void Graphic::setGraphicsCount(int arg, bool update) {
void Graphic::setHistogramData(const QVector<float> & g, int graphic) {
graphics[graphic].polyline.clear();
if (g.isEmpty()) {
graphics[graphic].polyline.clear();
if (g.isEmpty()) {
return;
}
QVector<float> data = g;
@@ -820,20 +820,20 @@ void Graphic::drawAction() {
painter->setPen(selpen);
painter->setBrush(selbrush);
switch (curaction) {
case gaZoomInRect:
painter->drawRect(QRect(startpos, curpos));
case gaZoomInRect:
painter->drawRect(QRect(startpos, curpos));
break;
case gaZoomRangeX:
painter->drawLine(sx, hei, sx, 0);
painter->drawLine(cx, hei, cx, 0);
painter->fillRect(sx, 0, cx - sx, hei, selbrush);
case gaZoomRangeX:
painter->drawLine(sx, hei, sx, 0);
painter->drawLine(cx, hei, cx, 0);
painter->fillRect(sx, 0, cx - sx, hei, selbrush);
break;
case gaZoomRangeY:
painter->drawLine(gridborder.x(), sy, wid, sy);
painter->drawLine(gridborder.x(), cy, wid, cy);
painter->fillRect(gridborder.x(), sy, wid - gridborder.x(), cy - sy, selbrush);
case gaZoomRangeY:
painter->drawLine(gridborder.x(), sy, wid, sy);
painter->drawLine(gridborder.x(), cy, wid, cy);
painter->fillRect(gridborder.x(), sy, wid - gridborder.x(), cy - sy, selbrush);
break;
default: break;
default: break;
}
}
@@ -853,7 +853,7 @@ void Graphic::drawGrid() {
cy = 0;
cx = gbx - 5;
grid_pen.setWidth(qMax<int>(qRound(thick / 1.4), 1));
QFont sf = font();
QFont sf = font();
QFont nf = sf;
sf.setPointSizeF(qMax<qreal>(sf.pointSizeF() / 1.6, 7.));
QFontMetrics fm(nf), sfm(sf);
@@ -1185,21 +1185,21 @@ double Graphic::real2canvasY(double py) const {
void Graphic::setCurrentAction(GraphicAction action) {
curaction = action;
switch (action) {
case gaNone:
if (guides) setCanvasCursor(Qt::BlankCursor);
else setCanvasCursor(Qt::ArrowCursor);
case gaNone:
if (guides) setCanvasCursor(Qt::BlankCursor);
else setCanvasCursor(Qt::ArrowCursor);
break;
case gaZoomInRect:
setCanvasCursor(Qt::CrossCursor);
case gaZoomInRect:
setCanvasCursor(Qt::CrossCursor);
break;
case gaZoomRangeX:
setCanvasCursor(Qt::SplitHCursor);
case gaZoomRangeX:
setCanvasCursor(Qt::SplitHCursor);
break;
case gaZoomRangeY:
setCanvasCursor(Qt::SplitVCursor);
case gaZoomRangeY:
setCanvasCursor(Qt::SplitVCursor);
break;
case gaMove:
setCanvasCursor(Qt::SizeAllCursor);
case gaMove:
setCanvasCursor(Qt::SizeAllCursor);
break;
}
}
@@ -1350,16 +1350,18 @@ void Graphic::on_checkGuides_toggled(bool checked) {
void Graphic::updateLegend(bool es) {
if (!ui->widgetLegend->isVisible()) {
emit graphicSettingsChanged();
if (!ui->widgetLegend->isVisibleTo(this)) {
if (es) emit graphicSettingsChanged();
// qDebug() << "skip updateLegend";
return;
}
// qDebug() << "updateLegend" << graphics.size();
leg_update = false;
int ps = 100;
for (int i = 0; i < graphics.size(); i++) {
while (!graphics[i].pb->actions().isEmpty()) graphics[i].pb->removeAction(graphics[i].pb->actions()[0]);
delete graphics[i].pb;
//qDebug() << "new legend item" << graphics[i].name;
// qDebug() << "new legend item" << graphics[i].name;
QPixmap pix(60, 22);
pix.fill(back_color);
QPainter p(&pix);
@@ -1386,16 +1388,17 @@ void Graphic::updateLegend(bool es) {
}
int maxcol = qMax<int>(ui->widgetLegend->width() / ps - 1, 1);
int row = 0, col = 0;
bool lv = ui->widgetLegend->isVisible();
bool lv = ui->widgetLegend->isVisibleTo(this);
ui->widgetLegend->hide();
for (int i = 0; i < graphics.size(); i++) {
ui->layoutLegend->addWidget(graphics[i].pb,row,col);
graphics[i].pb->show();
col++;
if (col > maxcol) {col = 0; row++;}
}
ui->widgetLegend->setVisible(lv);
leg_update = true;
emit graphicSettingsChanged();
if (es) emit graphicSettingsChanged();
}
@@ -1418,7 +1421,7 @@ void Graphic::graphicVisibleChange(bool checked) {
if (isFit) on_buttonAutofit_clicked();
else update();
emit graphicSettingsChanged();
// update();
// update();
}
@@ -1471,29 +1474,30 @@ bool Graphic::statusVisible() const {
bool Graphic::legendVisible() const {
return ui->widgetLegend->isVisible();
return ui->widgetLegend->isVisible();
}
QByteArray Graphic::save() {
QByteArray ba;
QDataStream s(&ba, QIODevice::ReadWrite);
s << openGL() << antialiasing() << borderInputsVisible() << statusVisible() << legendVisible();
s << graphics;
return ba;
QByteArray ba;
QDataStream s(&ba, QIODevice::ReadWrite);
s << openGL() << antialiasing() << borderInputsVisible() << statusVisible() << legendVisible();
s << graphics;
return ba;
}
void Graphic::load(QByteArray ba) {
if (ba.isEmpty()) return;
QDataStream s(ba);
QDataStream s(ba);
bool a;
s >> a; setOpenGL(a);
s >> a; setAntialiasing(a);
s >> a; setBorderInputsVisible(a);
s >> a; setStatusVisible(a);
s >> a; setLegendVisible(a);
s >> graphics;
s >> a; setOpenGL(a);
s >> a; setAntialiasing(a);
s >> a; setBorderInputsVisible(a);
s >> a; setStatusVisible(a);
s >> a;
s >> graphics;
setLegendVisible(a);
}