From 691ab5ae98ecd8796e60433fc0fcbe7dc34946a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 21 Jun 2018 08:08:35 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@411 a8b55f48-bf90-11e4-a774-851b48703e85 --- qad/blockview/blockview.cpp | 12 ++++++++++++ qad/blockview/blockview.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/qad/blockview/blockview.cpp b/qad/blockview/blockview.cpp index 52ba8da..241165f 100644 --- a/qad/blockview/blockview.cpp +++ b/qad/blockview/blockview.cpp @@ -68,6 +68,7 @@ void BlockView::_init() { nav_anim.setPropertyName("_nav"); nav_anim.setEasingCurve(QEasingCurve::InQuad); nav_anim.setDuration(200); + connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(checkPaste())); connect(&nav_anim, SIGNAL(finished()), this, SLOT(_navFinished())); connect(scene_, SIGNAL(sceneRectChanged(QRectF)), this, SLOT(adjustThumb())); connect(scene_, SIGNAL(selectionChanged()), this, SLOT(sceneSelectionChanged())); @@ -87,6 +88,7 @@ void BlockView::_init() { sel_rect.setPen(pen); sc.setAlphaF(0.2); sel_rect.setBrush(QBrush(sc)); + checkPaste(true); /*AlignedTextItem * ti = new AlignedTextItem("This is text!"); ti->setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -1655,6 +1657,16 @@ void BlockView::pinHoverInOut(BlockItemPin * pin) { } +void BlockView::checkPaste(bool queued) { + const QMimeData * mime = QApplication::clipboard()->mimeData(); + bool ret = false; + if (mime) + ret = mime->hasFormat(_BlockView_Mime_); + if (queued) QMetaObject::invokeMethod(this, "pasteEnabledChanged", Qt::QueuedConnection, Q_ARG(bool, ret)); + else emit pasteEnabledChanged(ret); +} + + void BlockView::newBranchTrace(BlockBusItem * item, QPointF to) { trace(item->press_pos, to, &tmp_bus); diff --git a/qad/blockview/blockview.h b/qad/blockview/blockview.h index e99309c..0957554 100644 --- a/qad/blockview/blockview.h +++ b/qad/blockview/blockview.h @@ -203,6 +203,7 @@ protected slots: void startBusPointMove(int bus_type); void endBusPointMove(); void pinHoverInOut(BlockItemPin * pin); + void checkPaste(bool queued = false); public slots: void setGridPen(const QPen & pen) {grid_pen = pen; _updateBack();} @@ -244,6 +245,7 @@ signals: void blockRemoved(BlockItem * item); void connectionsChanged(); void copyEnabledChanged(bool); + void pasteEnabledChanged(bool); };