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:
xavierqet
2007-12-09 10:30:35 +00:00
parent b4b61ad6f0
commit 649c74d8b2
7 changed files with 22 additions and 14 deletions

View File

@@ -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()) {

View File

@@ -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;

View File

@@ -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.");

View File

@@ -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

View File

@@ -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);
} }

View File

@@ -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;
} }
/** /**

View File

@@ -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;