|
|
@@ -613,14 +613,35 @@ void MainWindow::onContextMenuRequested(const std::string &path, int groupId,
|
|
|
|
|
|
QMenu menu;
|
|
|
QAction *copyAction = menu.addAction(tr("Copy Full Path(&C)"));
|
|
|
+ QAction *copyImageAction = menu.addAction(tr("Copy Image(&I)"));
|
|
|
QAction *openAction =
|
|
|
menu.addAction(isUrl ? tr("Open URL(&O)") : tr("Open File Location(&O)"));
|
|
|
menu.addSeparator();
|
|
|
QAction *removeAction = menu.addAction(tr("Remove from List(&R)"));
|
|
|
|
|
|
QAction *selectedAction = menu.exec(globalPos);
|
|
|
- if (selectedAction == copyAction) {
|
|
|
+ if (selectedAction == copyAction) {
|
|
|
QApplication::clipboard()->setText(qPath);
|
|
|
+ } else if (selectedAction == copyImageAction && !isUrl) {
|
|
|
+ QImage img(path.c_str());
|
|
|
+ if (!img.isNull()) {
|
|
|
+ QApplication::clipboard()->setPixmap(QPixmap::fromImage(img));
|
|
|
+ } else {
|
|
|
+ QFile file(QString::fromStdString(path));
|
|
|
+ if (file.open(QIODevice::ReadOnly)) {
|
|
|
+ QByteArray data = file.readAll();
|
|
|
+ cv::Mat mat = cv::imdecode(
|
|
|
+ cv::Mat(1, data.size(), CV_8U, data.data()), cv::IMREAD_COLOR);
|
|
|
+ if (!mat.empty()) {
|
|
|
+ cv::Mat rgb;
|
|
|
+ cv::cvtColor(mat, rgb, cv::COLOR_BGR2RGB);
|
|
|
+ QImage qImg((uchar*)rgb.data, rgb.cols, rgb.rows,
|
|
|
+ static_cast<int>(rgb.step), QImage::Format_RGB888);
|
|
|
+ QApplication::clipboard()
|
|
|
+ ->setPixmap(QPixmap::fromImage(qImg.copy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} else if (selectedAction == removeAction) {
|
|
|
removeGroupFromView(groupId);
|
|
|
} else if (selectedAction == openAction) {
|