Files
qelectrotech-source-mirror/sources/dvevent/dveventaddimage.cpp
scorpio810 81c684ca49 Merge Qt5 branch sources folder to trunk
-Cette ligne, et les suivantes ci-dessous, seront ignorées--

M    sources/aboutqet.cpp
M    sources/bordertitleblock.cpp
M    sources/conductorproperties.h
M    sources/configdialog.cpp
M    sources/configpages.cpp
M    sources/configpages.h
M    sources/createdxf.h
M    sources/diagram.cpp
M    sources/diagram.h
M    sources/diagramcommands.cpp
M    sources/diagramcommands.h
M    sources/diagramprintdialog.cpp
M    sources/diagramprintdialog.h
M    sources/diagramschooser.cpp
M    sources/diagramschooser.h
M    sources/diagramview.cpp
M    sources/diagramview.h
M    sources/dvevent/dveventaddimage.cpp
M    sources/dvevent/dveventaddshape.cpp
M    sources/editor/arceditor.cpp
M    sources/editor/arceditor.h
M    sources/editor/editorcommands.cpp
M    sources/editor/editorcommands.h
M    sources/editor/elementitemeditor.h
M    sources/editor/elementprimitivedecorator.cpp
M    sources/editor/elementscene.cpp
M    sources/editor/elementscene.h
M    sources/editor/elementview.cpp
M    sources/editor/ellipseeditor.cpp
M    sources/editor/ellipseeditor.h
M    sources/editor/esevent/eseventaddtext.cpp
M    sources/editor/esevent/eseventaddtextfield.cpp
M    sources/editor/esevent/eseventinterface.cpp
M    sources/editor/graphicspart/customelementpart.h
M    sources/editor/graphicspart/parttext.cpp
M    sources/editor/graphicspart/parttext.h
M    sources/editor/graphicspart/parttextfield.cpp
M    sources/editor/graphicspart/parttextfield.h
M    sources/editor/lineeditor.cpp
M    sources/editor/lineeditor.h
M    sources/editor/polygoneditor.cpp
M    sources/editor/qetelementeditor.cpp
M    sources/editor/qetelementeditor.h
M    sources/editor/rectangleeditor.cpp
M    sources/editor/rectangleeditor.h
M    sources/editor/styleeditor.cpp
M    sources/editor/styleeditor.h
M    sources/editor/terminaleditor.cpp
M    sources/editor/terminaleditor.h
M    sources/editor/texteditor.cpp
M    sources/editor/texteditor.h
M    sources/editor/textfieldeditor.cpp
M    sources/editor/textfieldeditor.h
M    sources/editor/ui/elementpropertieseditorwidget.cpp
M    sources/elementdefinition.cpp
M    sources/elementdeleter.cpp
M    sources/elementdeleter.h
M    sources/elementdialog.cpp
M    sources/elementscategorieslist.h
M    sources/elementscategorieswidget.cpp
M    sources/elementscategorieswidget.h
M    sources/elementscategory.cpp
M    sources/elementscategorydeleter.cpp
M    sources/elementscategorydeleter.h
M    sources/elementscategoryeditor.cpp
M    sources/elementscategoryeditor.h
M    sources/elementscollection.cpp
M    sources/elementscollectioncache.cpp
M    sources/elementspanel.cpp
M    sources/elementspanel.h
M    sources/elementspanelwidget.cpp
M    sources/elementspanelwidget.h
M    sources/elementtextsmover.h
M    sources/exportdialog.cpp
M    sources/exportdialog.h
M    sources/exportproperties.cpp
M    sources/exportpropertieswidget.cpp
M    sources/exportpropertieswidget.h
M    sources/genericpanel.cpp
M    sources/integrationmoveelementshandler.cpp
M    sources/integrationmoveelementshandler.h
M    sources/interactivemoveelementshandler.cpp
M    sources/nameslistwidget.cpp
M    sources/nameslistwidget.h
M    sources/newelementwizard.cpp
M    sources/newelementwizard.h
M    sources/nomenclature.cpp
M    sources/nomenclature.h
M    sources/projectconfigpages.cpp
M    sources/projectview.cpp
M    sources/projectview.h
M    sources/qet.cpp
M    sources/qetapp.cpp
M    sources/qetapp.h
M    sources/qetdiagrameditor.cpp
M    sources/qetdiagrameditor.h
M    sources/qetgraphicsitem/conductor.cpp
M    sources/qetgraphicsitem/conductortextitem.cpp
M    sources/qetgraphicsitem/customelement.cpp
M    sources/qetgraphicsitem/diagramimageitem.cpp
M    sources/qetgraphicsitem/diagramtextitem.cpp
M    sources/qetgraphicsitem/diagramtextitem.h
M    sources/qetgraphicsitem/element.cpp
M    sources/qetgraphicsitem/ghostelement.cpp
M    sources/qetgraphicsitem/qetshapeitem.cpp
M    sources/qetgraphicsitem/terminal.cpp
M    sources/qetgraphicsitem/terminal.h
M    sources/qeticons.cpp
M    sources/qeticons.h
M    sources/qetmainwindow.cpp
M    sources/qetmessagebox.cpp
M    sources/qetmessagebox.h
M    sources/qetprintpreviewdialog.cpp
M    sources/qetprintpreviewdialog.h
M    sources/qetproject.cpp
M    sources/qetsingleapplication.cpp
M    sources/qettabbar.h
M    sources/qfilenameedit.cpp
M    sources/qtextorientationspinboxwidget.cpp
M    sources/qtextorientationspinboxwidget.h
M    sources/qtextorientationwidget.cpp
M    sources/qtextorientationwidget.h
M    sources/richtext/richtexteditor.cpp
M    sources/richtext/richtexteditor_p.h
M    sources/richtext/ui_addlinkdialog.h
M    sources/titleblock/dimensionwidget.h
M    sources/titleblock/gridlayoutanimation.h
M    sources/titleblock/helpercell.h
M    sources/titleblock/integrationmovetemplateshandler.cpp
M    sources/titleblock/integrationmovetemplateshandler.h
M    sources/titleblock/qettemplateeditor.cpp
M    sources/titleblock/qettemplateeditor.h
M    sources/titleblock/templatecellsset.h
M    sources/titleblock/templatecellwidget.cpp
M    sources/titleblock/templatecellwidget.h
M    sources/titleblock/templatecommands.cpp
M    sources/titleblock/templatedeleter.cpp
M    sources/titleblock/templatedeleter.h
M    sources/titleblock/templatelocationchooser.cpp
M    sources/titleblock/templatelocationchooser.h
M    sources/titleblock/templatelocationsaver.cpp
M    sources/titleblock/templatelocationsaver.h
M    sources/titleblock/templatelogomanager.cpp
M    sources/titleblock/templatelogomanager.h
M    sources/titleblock/templateview.cpp
M    sources/titleblock/templatevisualcell.h
M    sources/titleblockcell.cpp
M    sources/titleblocktemplate.cpp
M    sources/treecoloranimation.h
M    sources/ui/conductorpropertieswidget.cpp
M    sources/ui/diagrampropertiesdialog.cpp
M    sources/ui/diagramselection.cpp
M    sources/ui/dialogautonum.cpp
M    sources/ui/dialogwaiting.cpp
M    sources/ui/elementpropertieswidget.cpp
M    sources/ui/elementselectorwidget.cpp
M    sources/ui/linksingleelementwidget.cpp
M    sources/ui/masterpropertieswidget.cpp
M    sources/ui/potentialtextsdialog.cpp
M    sources/ui/projectpropertiesdialog.cpp
M    sources/ui/selectautonumw.cpp
M    sources/ui/titleblockpropertieswidget.cpp
M    sources/ui/xrefpropertieswidget.cpp
M    sources/undocommand/changeelementinformationcommand.cpp


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3783 bfdf4180-ca20-0410-9c96-a3a8aa849046
2015-03-02 20:14:56 +00:00

160 lines
4.6 KiB
C++

/*
Copyright 2006-2015 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "diagramimageitem.h"
#include "diagramcommands.h"
#include "dveventaddimage.h"
#include "diagramview.h"
#include "diagram.h"
#include <QObject>
#include <QStandardPaths>
/**
* @brief DVEventAddImage::DVEventAddImage
* Defaultconstructor
* @param dv : diagram view where operate this event
*/
DVEventAddImage::DVEventAddImage(DiagramView *dv) :
DVEventInterface (dv),
m_image (nullptr),
m_is_added (false)
{
openDialog();
}
/**
* @brief DVEventAddImage::~DVEventAddImage
*/
DVEventAddImage::~DVEventAddImage() {
if (m_running || m_abort) {
if (m_is_added) m_diagram -> removeItem(m_image);
delete m_image;
}
m_dv -> setContextMenuPolicy(Qt::DefaultContextMenu);
}
/**
* @brief DVEventAddImage::mousePressEvent
* Action when mouse is pressed
* @param event : event of mouse pressed
* @return : true if this event is managed, otherwise false
*/
bool DVEventAddImage::mousePressEvent(QMouseEvent *event) {
if (m_image && event -> button() == Qt::LeftButton) {
QPointF pos = m_dv -> mapToScene(event -> pos());
pos.rx() -= m_image->boundingRect().width()/2;
pos.ry() -= m_image->boundingRect().height()/2;
m_diagram -> undoStack().push (new AddItemCommand<DiagramImageItem *>(m_image, m_diagram, pos));
m_dv -> setContextMenuPolicy(Qt::DefaultContextMenu);
m_running = false;
return true;
}
if (m_image && event -> button() == Qt::RightButton) {
m_image -> rotateBy(90);
return true;
}
return false;
}
/**
* @brief DVEventAddImage::mouseMoveEvent
* Action when mouse move
* @param event : event of mouse move
* @return : true if this event is managed, otherwise false
*/
bool DVEventAddImage::mouseMoveEvent(QMouseEvent *event) {
//@m_image isn't loaded, we return true and @m_running return
//so the diagram view owner of this DVEevent will delete it.
//if (!m_image) return true;
if (!m_image || event -> buttons() != Qt::NoButton) return false;
QPointF pos = m_dv -> mapToScene(event -> pos());
if (!m_is_added) {
m_dv -> setContextMenuPolicy(Qt::NoContextMenu);
m_diagram -> addItem(m_image);
m_is_added = true;
}
m_image -> setPos(pos - m_image -> boundingRect().center());
return true;
}
/**
* @brief DVEventAddImage::mouseDoubleClickEvent
* This methode is only use to overwrite double click.
* When double clic, image propertie dialog isn't open.
* @param event : event of mouse double click
* @return : true if this event is managed, otherwise false
*/
bool DVEventAddImage::mouseDoubleClickEvent(QMouseEvent *event) {
Q_UNUSED(event);
return true;
}
/**
* @brief DVEventAddImage::wheelEvent
* Action when mouse wheel is rotate
* @param event : event of mouse wheel
* @return : true if this event is managed, otherwise false
*/
bool DVEventAddImage::wheelEvent(QWheelEvent *event) {
if (!m_is_added || !m_image || event -> modifiers() != Qt::CTRL) return false;
qreal scaling = m_image->scale();
event->delta() > 1? scaling += 0.01 : scaling -= 0.01;
if (scaling>0.01 && scaling <= 2)
m_image->setScale(scaling);
return true;
}
/**
* @brief DVEventAddImage::isNull
* @return true if image can't be loaded, otherwise return false.
*/
bool DVEventAddImage::isNull() const {
if (!m_image) return true;
return false;
}
/**
* @brief DVEventAddImage::openDialog
* Open dialog for select the image to add.
*/
void DVEventAddImage::openDialog() {
if (m_diagram -> isReadOnly()) return;
//Open dialog for select image
QString pathPictures = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
QString fileName = QFileDialog::getOpenFileName(m_dv, QObject::tr("Selectionner une image..."), pathPictures, QObject::tr("Image Files (*.png *.jpg *.bmp *.svg)"));
if (fileName.isEmpty()) return;
QImage image(fileName);
if(image.isNull()) {
QMessageBox::critical(m_dv, QObject::tr("Erreur"), QObject::tr("Impossible de charger l'image."));
return;
}
m_image = new DiagramImageItem (QPixmap::fromImage(image));
m_running = true;
}