mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-12 20:29:59 +01:00
Image can be edited in the dock widget
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3944 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -16,8 +16,8 @@
|
||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "diagramimageitem.h"
|
||||
#include "diagramcommands.h"
|
||||
#include "diagram.h"
|
||||
#include "imagepropertiesdialog.h"
|
||||
|
||||
/**
|
||||
* @brief DiagramImageItem::DiagramImageItem
|
||||
@@ -27,10 +27,7 @@
|
||||
DiagramImageItem::DiagramImageItem(QetGraphicsItem *parent_item):
|
||||
QetGraphicsItem(parent_item)
|
||||
{
|
||||
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable);
|
||||
#if QT_VERSION >= 0x040600
|
||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||
#endif
|
||||
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemSendsGeometryChanges);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,10 +41,7 @@ DiagramImageItem::DiagramImageItem(const QPixmap &pixmap, QetGraphicsItem *paren
|
||||
pixmap_(pixmap)
|
||||
{
|
||||
setTransformOriginPoint(boundingRect().center());
|
||||
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable);
|
||||
#if QT_VERSION >= 0x040600
|
||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||
#endif
|
||||
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemSendsGeometryChanges);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,76 +79,14 @@ void DiagramImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief DiagramImageItem::setScale
|
||||
* @param scale the value of @scale must be betwen 1 and 200
|
||||
* @brief DiagramImageItem::editProperty
|
||||
* Open the approriate dialog to edit this image
|
||||
*/
|
||||
void DiagramImageItem::PreviewScale(int scale) {
|
||||
if (scale >= 1 && scale <= 200) {
|
||||
qreal new_scale = scale;
|
||||
new_scale /= 100;
|
||||
setScale(new_scale);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Edit the image with ....
|
||||
*/
|
||||
void DiagramImageItem::editProperty() {
|
||||
void DiagramImageItem::editProperty()
|
||||
{
|
||||
if (diagram() -> isReadOnly()) return;
|
||||
//the range for scale image and divisor factor
|
||||
int min_range = 1;
|
||||
int max_range = 200;
|
||||
int factor_range = 100;
|
||||
|
||||
//the dialog
|
||||
QDialog property_dialog(diagram()->views().at(0));
|
||||
property_dialog.setWindowTitle(tr("Éditer les propriétés d'une image", "window title"));
|
||||
//the main layout
|
||||
QVBoxLayout dialog_layout(&property_dialog);
|
||||
|
||||
//GroupBox for resizer image
|
||||
QGroupBox resize_groupe(tr("Dimension de l'image", "image size"));
|
||||
dialog_layout.addWidget(&resize_groupe);
|
||||
QHBoxLayout resize_layout(&resize_groupe);
|
||||
|
||||
//slider
|
||||
QSlider slider(Qt::Horizontal, &property_dialog);
|
||||
slider.setRange(min_range, max_range);
|
||||
qreal scale_= scale();
|
||||
slider.setValue(scale_*factor_range);
|
||||
//spinbox
|
||||
QSpinBox spin_box(&property_dialog);
|
||||
spin_box.setRange(min_range, max_range);
|
||||
spin_box.setValue(scale_*factor_range);
|
||||
spin_box.setSuffix(" %");
|
||||
//synchro slider with spinbox
|
||||
connect(&slider, SIGNAL(valueChanged(int)), &spin_box, SLOT(setValue(int)));
|
||||
connect(&slider, SIGNAL(valueChanged(int)), this, SLOT(PreviewScale(int)));
|
||||
connect(&spin_box, SIGNAL(valueChanged(int)), &slider, SLOT(setValue(int)));
|
||||
//add slider and spinbox to layout
|
||||
resize_layout.addWidget(&slider);
|
||||
resize_layout.addWidget(&spin_box);
|
||||
//check box for disable move
|
||||
QCheckBox cb(tr("Verrouiller la position"), &property_dialog);
|
||||
cb.setChecked(!is_movable_);
|
||||
dialog_layout.addWidget(&cb);
|
||||
|
||||
//dialog button, box
|
||||
QDialogButtonBox dbb(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
dialog_layout.addWidget(&dbb);
|
||||
connect(&dbb, SIGNAL(accepted()), &property_dialog, SLOT(accept()));
|
||||
connect(&dbb, SIGNAL(rejected()), &property_dialog, SLOT(reject()));
|
||||
|
||||
//dialog is accepted...
|
||||
if (property_dialog.exec() == QDialog::Accepted) {
|
||||
cb.isChecked() ? is_movable_=false : is_movable_=true;
|
||||
qreal new_scale = slider.value();
|
||||
new_scale /= factor_range;
|
||||
if (scale_ != new_scale) diagram()->undoStack().push(new ItemResizerCommand(this, scale_, new_scale, tr("une image")));
|
||||
}
|
||||
//...or not
|
||||
else setScale(scale_);
|
||||
return;
|
||||
ImagePropertiesDialog dialog(this, QApplication::activeWindow());
|
||||
dialog.exec();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user