diff --git a/src/MainWindow.h b/src/MainWindow.h index 41870d46..a169b096 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -196,6 +196,7 @@ private slots: void actionExportSVG(); void actionExportCSG(); void actionExportImage(); + void actionExportToClipboard(); void actionFlushCaches(); public: diff --git a/src/MainWindow.ui b/src/MainWindow.ui index 422b3b2c..1dabbd86 100644 --- a/src/MainWindow.ui +++ b/src/MainWindow.ui @@ -274,6 +274,7 @@ + @@ -1261,6 +1262,11 @@ &Cheat Sheet + + + Export to Clipboard + + diff --git a/src/QGLView.cc b/src/QGLView.cc index 0803ffe8..bef57441 100644 --- a/src/QGLView.cc +++ b/src/QGLView.cc @@ -294,11 +294,12 @@ void QGLView::mouseReleaseEvent(QMouseEvent*) releaseMouse(); } -void QGLView::grabFrame() +const QImage & QGLView::grabFrame() { // Force reading from front buffer. Some configurations will read from the back buffer here. glReadBuffer(GL_FRONT); this->frame = grabFrameBuffer(); + return this->frame; } bool QGLView::save(const char *filename) diff --git a/src/QGLView.h b/src/QGLView.h index ca5fccb0..697d3b57 100644 --- a/src/QGLView.h +++ b/src/QGLView.h @@ -43,7 +43,7 @@ public: float getDPI() { return this->devicePixelRatio(); } #endif - void grabFrame(); + const QImage & grabFrame(); bool save(const char *filename); void resetView(); void viewAll(); diff --git a/src/mainwin.cc b/src/mainwin.cc index 55490590..76da5735 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -362,6 +362,7 @@ MainWindow::MainWindow(const QString &filename) connect(this->fileActionExportSVG, SIGNAL(triggered()), this, SLOT(actionExportSVG())); connect(this->fileActionExportCSG, SIGNAL(triggered()), this, SLOT(actionExportCSG())); connect(this->fileActionExportImage, SIGNAL(triggered()), this, SLOT(actionExportImage())); + connect(this->fileActionExportClipboard, SIGNAL(triggered()), this, SLOT(actionExportToClipboard())); connect(this->designActionFlushCaches, SIGNAL(triggered()), this, SLOT(actionFlushCaches())); // View menu @@ -2184,6 +2185,13 @@ void MainWindow::actionExportImage() return; } +void MainWindow::actionExportToClipboard() +{ + const QImage & image = qglview->grabFrame(); + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setImage(image); +} + void MainWindow::actionFlushCaches() { GeometryCache::instance()->clear();