mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-04-18 07:39:58 +02:00
Properties dock : button edit element and find element work.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4018 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -30,7 +30,7 @@
|
|||||||
DiagramPropertiesEditorDockWidget::DiagramPropertiesEditorDockWidget(QWidget *parent) :
|
DiagramPropertiesEditorDockWidget::DiagramPropertiesEditorDockWidget(QWidget *parent) :
|
||||||
PropertiesEditorDockWidget(parent),
|
PropertiesEditorDockWidget(parent),
|
||||||
m_diagram(nullptr),
|
m_diagram(nullptr),
|
||||||
m_edited_qgi_type(UnknowQGIType)
|
m_edited_qgi_type (-1)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,42 +73,47 @@ void DiagramPropertiesEditorDockWidget::setDiagram(Diagram *diagram)
|
|||||||
void DiagramPropertiesEditorDockWidget::selectionChanged()
|
void DiagramPropertiesEditorDockWidget::selectionChanged()
|
||||||
{
|
{
|
||||||
if (!m_diagram) return;
|
if (!m_diagram) return;
|
||||||
|
//This editor can edit only one item.
|
||||||
if (m_diagram->selectedItems().size() == 1) //We can open an editor only when there is one selected item
|
if (m_diagram->selectedItems().size() != 1)
|
||||||
{
|
{
|
||||||
QGraphicsItem *item = m_diagram->selectedItems().first();
|
clear();
|
||||||
|
m_edited_qgi_type = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Edit an element
|
QGraphicsItem *item = m_diagram->selectedItems().first();
|
||||||
if (Element *elmt = dynamic_cast<Element*>(item))
|
const int type_ = item->type();
|
||||||
{
|
|
||||||
if (m_edited_qgi_type == ElementQGIType && editors().size() == 1)
|
switch (type_)
|
||||||
|
{
|
||||||
|
case Element::Type: {
|
||||||
|
//We already edit an element, just update the editor with a new element
|
||||||
|
if (m_edited_qgi_type == type_)
|
||||||
{
|
{
|
||||||
ElementPropertiesWidget *epw = dynamic_cast<ElementPropertiesWidget*>(editors().first());
|
static_cast<ElementPropertiesWidget*>(editors().first())->setElement(static_cast<Element*>(item));
|
||||||
if (epw) //In this case we only update each editor widget with the new element instead of create new widget.
|
return;
|
||||||
{
|
|
||||||
epw->setElement(elmt);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clear();
|
clear();
|
||||||
m_edited_qgi_type = ElementQGIType;
|
m_edited_qgi_type = type_;
|
||||||
addEditor(new ElementPropertiesWidget(elmt, this));
|
ElementPropertiesWidget *epw = new ElementPropertiesWidget(static_cast<Element*>(item), this);
|
||||||
}
|
connect (epw, &ElementPropertiesWidget::editElementRequired , m_diagram, &Diagram::editElementRequired);
|
||||||
//Edit an image
|
connect (epw, &ElementPropertiesWidget::findElementRequired, m_diagram, &Diagram::findElementRequired);
|
||||||
else if (DiagramImageItem *image = dynamic_cast<DiagramImageItem *>(item))
|
addEditor(epw);
|
||||||
{
|
break; }
|
||||||
|
|
||||||
|
case DiagramImageItem::Type: {
|
||||||
clear();
|
clear();
|
||||||
m_edited_qgi_type = ImageQGIType;
|
m_edited_qgi_type = type_;
|
||||||
addEditor(new ImagePropertiesWidget(image, this));
|
addEditor(new ImagePropertiesWidget(static_cast<DiagramImageItem*>(item), this));
|
||||||
}
|
break; }
|
||||||
//Unknow type, we clear the dock
|
|
||||||
else
|
default:
|
||||||
|
m_edited_qgi_type = -1;
|
||||||
clear();
|
clear();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
clear();
|
|
||||||
|
|
||||||
foreach(PropertiesEditorWidget *pew, editors())
|
foreach (PropertiesEditorWidget *pew, editors())
|
||||||
pew->setLiveEdit(true);
|
pew->setLiveEdit(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
#include "PropertiesEditor/propertieseditordockwidget.h"
|
#include "PropertiesEditor/propertieseditordockwidget.h"
|
||||||
|
|
||||||
class Diagram;
|
class Diagram;
|
||||||
class QGraphicsItem;
|
|
||||||
|
|
||||||
class DiagramPropertiesEditorDockWidget : public PropertiesEditorDockWidget
|
class DiagramPropertiesEditorDockWidget : public PropertiesEditorDockWidget
|
||||||
{
|
{
|
||||||
@@ -32,14 +31,17 @@ class DiagramPropertiesEditorDockWidget : public PropertiesEditorDockWidget
|
|||||||
|
|
||||||
void setDiagram(Diagram *diagram);
|
void setDiagram(Diagram *diagram);
|
||||||
|
|
||||||
|
private: //Make this method private because only this class manage the editor widget.
|
||||||
|
bool addEditor(PropertiesEditorWidget *editor, int index = 0) { return PropertiesEditorDockWidget::addEditor(editor, index); }
|
||||||
|
bool removeEditor(PropertiesEditorWidget *editor) { return PropertiesEditorDockWidget::removeEditor(editor); }
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void selectionChanged();
|
void selectionChanged();
|
||||||
void diagramWasDeleted();
|
void diagramWasDeleted();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum EditedQGIType {UnknowQGIType, ElementQGIType, ImageQGIType};
|
|
||||||
Diagram *m_diagram;
|
Diagram *m_diagram;
|
||||||
EditedQGIType m_edited_qgi_type;
|
int m_edited_qgi_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DIAGRAMPROPERTIESEDITORDOCKWIDGET_H
|
#endif // DIAGRAMPROPERTIESEDITORDOCKWIDGET_H
|
||||||
|
|||||||
Reference in New Issue
Block a user