diff --git a/src/app/valentina/dialogs/dialogpatternproperties.cpp b/src/app/valentina/dialogs/dialogpatternproperties.cpp index 9b5e739a7..bab98d197 100644 --- a/src/app/valentina/dialogs/dialogpatternproperties.cpp +++ b/src/app/valentina/dialogs/dialogpatternproperties.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include "../xml/vpattern.h" #include "../vpatterndb/vcontainer.h" #include "../core/vapplication.h" @@ -65,7 +66,6 @@ DialogPatternProperties::DialogPatternProperties(VPattern *doc, VContainer *pat connect(ui->plainTextEditTechNotes, &QPlainTextEdit::textChanged, this, &DialogPatternProperties::DescEdited); InitImage(); - connect(ui->deleteImageButton, &QPushButton::clicked, this, &DialogPatternProperties::DeleteImage); connect(ui->buttonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &DialogPatternProperties::Ok); connect(ui->buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, this, @@ -620,8 +620,20 @@ void DialogPatternProperties::InitImage() QBuffer buffer(&ba); buffer.open(QIODevice::ReadOnly); image.load(&buffer, "PNG"); // writes image into ba in PNG format + ui->imageLabel->setPixmap(QPixmap::fromImage(image)); + ui->imageLabel->setContextMenuPolicy(Qt::CustomContextMenu); + connect(ui->changeImageButton, &QPushButton::clicked, this, &DialogPatternProperties::SetNewImage); + connect(ui->deleteImageButton, &QPushButton::clicked, this, &DialogPatternProperties::DeleteImage); + connect(ui->imageLabel, &QWidget::customContextMenuRequested, this, &DialogPatternProperties::ShowContextMenu); + + deleteAction = new QAction("Delete image", this); + changeImageAction = new QAction("Change image", this); + saveImageAction = new QAction("Save image to file", this); + showImageAction = new QAction("Show image", this); + connect(deleteAction, &QAction::triggered, this, &DialogPatternProperties::DeleteImage); + connect(changeImageAction, &QAction::triggered, this, &DialogPatternProperties::SetNewImage); } //--------------------------------------------------------------------------------------------------------------------- @@ -658,3 +670,15 @@ void DialogPatternProperties::DeleteImage() doc->DeleteImage(); ui->imageLabel->setText("Change image"); } + +//--------------------------------------------------------------------------------------------------------------------- +void DialogPatternProperties::ShowContextMenu() +{ + QMenu menu(this); + menu.addAction(deleteAction); + menu.addAction(changeImageAction); + menu.addAction(saveImageAction); + menu.addAction(showImageAction); + menu.exec(QCursor::pos()); + menu.show(); +} diff --git a/src/app/valentina/dialogs/dialogpatternproperties.h b/src/app/valentina/dialogs/dialogpatternproperties.h index 4e504b840..80c58bc66 100644 --- a/src/app/valentina/dialogs/dialogpatternproperties.h +++ b/src/app/valentina/dialogs/dialogpatternproperties.h @@ -58,6 +58,7 @@ public slots: void CheckStateSize(int state); void DescEdited(); void SetNewImage(); + void ShowContextMenu(); protected: virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; private slots: @@ -80,6 +81,10 @@ private: bool defaultChanged; bool securityChanged; bool isInitialized; + QAction *deleteAction; + QAction *changeImageAction; + QAction *saveImageAction; + QAction *showImageAction; void SetHeightsChecked(bool enabled); void SetSizesChecked(bool enabled);