mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Connexions internes :
* methodes renommees dans l'editeur de schemas * attribut, lecture et ecriture ajoutes dans l'editeur d'element git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@226 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -106,7 +106,7 @@ CustomElement::CustomElement(QString &nom_fichier, QGraphicsItem *qgi, Diagram *
|
|||||||
// on peut d'ores et deja specifier la taille et le hotspot
|
// on peut d'ores et deja specifier la taille et le hotspot
|
||||||
setSize(w, h);
|
setSize(w, h);
|
||||||
setHotspot(QPoint(hot_x, hot_y));
|
setHotspot(QPoint(hot_x, hot_y));
|
||||||
setConnexionsInternesAcceptees(racine.attribute("ci") == "true");
|
setInternalConnections(racine.attribute("ic") == "true");
|
||||||
|
|
||||||
// la definition est supposee avoir des enfants
|
// la definition est supposee avoir des enfants
|
||||||
if (racine.firstChild().isNull()) {
|
if (racine.firstChild().isNull()) {
|
||||||
|
|||||||
@@ -436,7 +436,7 @@ bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_in
|
|||||||
Terminal *p2 = table_adr_id.value(id_p2);
|
Terminal *p2 = table_adr_id.value(id_p2);
|
||||||
if (p1 != p2) {
|
if (p1 != p2) {
|
||||||
bool can_add_conductor = true;
|
bool can_add_conductor = true;
|
||||||
bool cia = ((Element *)p2 -> parentItem()) -> connexionsInternesAcceptees();
|
bool cia = ((Element *)p2 -> parentItem()) -> internalConnections();
|
||||||
if (!cia) {
|
if (!cia) {
|
||||||
foreach(QGraphicsItem *item, p2 -> parentItem() -> children()) {
|
foreach(QGraphicsItem *item, p2 -> parentItem() -> children()) {
|
||||||
if (item == p1) can_add_conductor = false;
|
if (item == p1) can_add_conductor = false;
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ ElementScene::ElementScene(QETElementEditor *editor, QObject *parent) :
|
|||||||
_width(3),
|
_width(3),
|
||||||
_height(7),
|
_height(7),
|
||||||
_hotspot(15, 35),
|
_hotspot(15, 35),
|
||||||
|
internal_connections(false),
|
||||||
qgi_manager(this),
|
qgi_manager(this),
|
||||||
element_editor(editor)
|
element_editor(editor)
|
||||||
{
|
{
|
||||||
@@ -371,6 +372,7 @@ const QDomDocument ElementScene::toXml() const {
|
|||||||
root.setAttribute("hotspot_y", QString("%1").arg(_hotspot.y()));
|
root.setAttribute("hotspot_y", QString("%1").arg(_hotspot.y()));
|
||||||
root.setAttribute("orientation", ori.toString());
|
root.setAttribute("orientation", ori.toString());
|
||||||
root.setAttribute("version", QET::version);
|
root.setAttribute("version", QET::version);
|
||||||
|
if (internal_connections) root.setAttribute("ic", "true");
|
||||||
|
|
||||||
// noms de l'element
|
// noms de l'element
|
||||||
root.appendChild(_names.toXml(xml_document));
|
root.appendChild(_names.toXml(xml_document));
|
||||||
@@ -423,8 +425,10 @@ void ElementScene::fromXml(const QDomDocument &xml_document) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// orientations
|
// orientations et connexions internes
|
||||||
if (state) {
|
if (state) {
|
||||||
|
internal_connections = (root.attribute("ic") == "true");
|
||||||
|
|
||||||
if (!ori.fromString(root.attribute("orientation"))) {
|
if (!ori.fromString(root.attribute("orientation"))) {
|
||||||
state = false;
|
state = false;
|
||||||
error_message = tr("Les orientations ne sont pas valides.");
|
error_message = tr("Les orientations ne sont pas valides.");
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ class ElementScene : public QGraphicsScene {
|
|||||||
NamesList _names;
|
NamesList _names;
|
||||||
/// Liste des orientations de l'element
|
/// Liste des orientations de l'element
|
||||||
OrientationSet ori;
|
OrientationSet ori;
|
||||||
|
/// booleen indiquant si les bornes de l'element peuvent etre reliees a des bornes de ce meme element
|
||||||
|
bool internal_connections;
|
||||||
/// Gestionnaire de QGraphicsItem
|
/// Gestionnaire de QGraphicsItem
|
||||||
QGIManager qgi_manager;
|
QGIManager qgi_manager;
|
||||||
/// Pile des actions annulables
|
/// Pile des actions annulables
|
||||||
|
|||||||
@@ -26,8 +26,10 @@
|
|||||||
/**
|
/**
|
||||||
Constructeur pour un element sans scene ni parent
|
Constructeur pour un element sans scene ni parent
|
||||||
*/
|
*/
|
||||||
Element::Element(QGraphicsItem *parent, Diagram *scene) : QGraphicsItem(parent, scene) {
|
Element::Element(QGraphicsItem *parent, Diagram *scene) :
|
||||||
peut_relier_ses_propres_terminals = false;
|
QGraphicsItem(parent, scene),
|
||||||
|
internal_connections(false)
|
||||||
|
{
|
||||||
setZValue(10);
|
setZValue(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
element.h
14
element.h
@@ -79,8 +79,8 @@ class Element : public QGraphicsItem {
|
|||||||
void setPos(qreal, qreal);
|
void setPos(qreal, qreal);
|
||||||
|
|
||||||
// methodes relatives aux connexions internes
|
// methodes relatives aux connexions internes
|
||||||
bool connexionsInternesAcceptees();
|
bool internalConnections();
|
||||||
void setConnexionsInternesAcceptees(bool cia);
|
void setInternalConnections(bool);
|
||||||
|
|
||||||
// methodes relatives aux fichiers XML
|
// methodes relatives aux fichiers XML
|
||||||
static bool valideXml(QDomElement &);
|
static bool valideXml(QDomElement &);
|
||||||
@@ -97,7 +97,7 @@ class Element : public QGraphicsItem {
|
|||||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool peut_relier_ses_propres_terminals;
|
bool internal_connections;
|
||||||
void drawSelection(QPainter *, const QStyleOptionGraphicsItem *);
|
void drawSelection(QPainter *, const QStyleOptionGraphicsItem *);
|
||||||
void updatePixmap();
|
void updatePixmap();
|
||||||
};
|
};
|
||||||
@@ -107,8 +107,8 @@ class Element : public QGraphicsItem {
|
|||||||
c'est-a-dire que ses bornes peuvent etre reliees entre elles
|
c'est-a-dire que ses bornes peuvent etre reliees entre elles
|
||||||
@return true si l'element accepte les connexions internes, false sinon
|
@return true si l'element accepte les connexions internes, false sinon
|
||||||
*/
|
*/
|
||||||
inline bool Element::connexionsInternesAcceptees() {
|
inline bool Element::internalConnections() {
|
||||||
return(peut_relier_ses_propres_terminals);
|
return(internal_connections);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -117,8 +117,8 @@ inline bool Element::connexionsInternesAcceptees() {
|
|||||||
@param cia true pour que l'element accepte les connexions internes, false pour
|
@param cia true pour que l'element accepte les connexions internes, false pour
|
||||||
qu'il les interdise
|
qu'il les interdise
|
||||||
*/
|
*/
|
||||||
inline void Element::setConnexionsInternesAcceptees(bool cia) {
|
inline void Element::setInternalConnections(bool ic) {
|
||||||
peut_relier_ses_propres_terminals = cia;
|
internal_connections = ic;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ void Terminal::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
|
|||||||
couleur_hovered = couleur_interdit;
|
couleur_hovered = couleur_interdit;
|
||||||
} else if (p -> parentItem() == parentItem()) {
|
} else if (p -> parentItem() == parentItem()) {
|
||||||
// effet si l'on hover sur une borne du meme appareil
|
// effet si l'on hover sur une borne du meme appareil
|
||||||
if (((Element *)parentItem()) -> connexionsInternesAcceptees())
|
if (((Element *)parentItem()) -> internalConnections())
|
||||||
p -> couleur_hovered = p -> couleur_autorise;
|
p -> couleur_hovered = p -> couleur_autorise;
|
||||||
else p -> couleur_hovered = p -> couleur_interdit;
|
else p -> couleur_hovered = p -> couleur_interdit;
|
||||||
} else if (p -> nbConductors()) {
|
} else if (p -> nbConductors()) {
|
||||||
@@ -384,7 +384,7 @@ void Terminal::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
|||||||
// idem s'il s'agit de la borne actuelle
|
// idem s'il s'agit de la borne actuelle
|
||||||
if (p == this) return;
|
if (p == this) return;
|
||||||
// idem s'il s'agit d'une borne de l'element actuel et que l'element n'a pas le droit de relier ses propres bornes
|
// idem s'il s'agit d'une borne de l'element actuel et que l'element n'a pas le droit de relier ses propres bornes
|
||||||
bool cia = ((Element *)parentItem()) -> connexionsInternesAcceptees();
|
bool cia = ((Element *)parentItem()) -> internalConnections();
|
||||||
if (!cia) foreach(QGraphicsItem *item, parentItem() -> children()) if (item == p) return;
|
if (!cia) foreach(QGraphicsItem *item, parentItem() -> children()) if (item == p) return;
|
||||||
// derniere verification : verifier que cette borne n'est pas deja reliee a l'autre borne
|
// derniere verification : verifier que cette borne n'est pas deja reliee a l'autre borne
|
||||||
foreach (Conductor *f, liste_conductors) if (f -> terminal1 == p || f -> terminal2 == p) return;
|
foreach (Conductor *f, liste_conductors) if (f -> terminal1 == p || f -> terminal2 == p) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user