mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Classes "Schema" et "SchemaVue" renommees en "Diagram" et "DiagramView"
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@44 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
20
borne.cpp
20
borne.cpp
@@ -1,5 +1,5 @@
|
|||||||
#include "borne.h"
|
#include "borne.h"
|
||||||
#include "schema.h"
|
#include "diagram.h"
|
||||||
#include "element.h"
|
#include "element.h"
|
||||||
#include "conducteur.h"
|
#include "conducteur.h"
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ void Borne::initialise(QPointF pf, Borne::Orientation o) {
|
|||||||
*/
|
*/
|
||||||
Borne::Borne() : QGraphicsItem(0, 0) {
|
Borne::Borne() : QGraphicsItem(0, 0) {
|
||||||
initialise(QPointF(0.0, 0.0), Borne::Sud);
|
initialise(QPointF(0.0, 0.0), Borne::Sud);
|
||||||
schema_scene = 0;
|
diagram_scene = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,9 +58,9 @@ Borne::Borne() : QGraphicsItem(0, 0) {
|
|||||||
@param e Element auquel cette borne appartient
|
@param e Element auquel cette borne appartient
|
||||||
@param s Scene sur laquelle figure cette borne
|
@param s Scene sur laquelle figure cette borne
|
||||||
*/
|
*/
|
||||||
Borne::Borne(QPointF pf, Borne::Orientation o, Element *e, Schema *s) : QGraphicsItem(e, s) {
|
Borne::Borne(QPointF pf, Borne::Orientation o, Element *e, Diagram *s) : QGraphicsItem(e, s) {
|
||||||
initialise(pf, o);
|
initialise(pf, o);
|
||||||
schema_scene = s;
|
diagram_scene = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -71,7 +71,7 @@ Borne::Borne(QPointF pf, Borne::Orientation o, Element *e, Schema *s) : QGraphic
|
|||||||
@param e Element auquel cette borne appartient
|
@param e Element auquel cette borne appartient
|
||||||
@param s Scene sur laquelle figure cette borne
|
@param s Scene sur laquelle figure cette borne
|
||||||
*/
|
*/
|
||||||
Borne::Borne(qreal pf_x, qreal pf_y, Borne::Orientation o, Element *e, Schema *s) : QGraphicsItem(e, s) {
|
Borne::Borne(qreal pf_x, qreal pf_y, Borne::Orientation o, Element *e, Diagram *s) : QGraphicsItem(e, s) {
|
||||||
initialise(QPointF(pf_x, pf_y), o);
|
initialise(QPointF(pf_x, pf_y), o);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ void Borne::hoverLeaveEvent(QGraphicsSceneHoverEvent *) {
|
|||||||
@param e L'evenement souris correspondant
|
@param e L'evenement souris correspondant
|
||||||
*/
|
*/
|
||||||
void Borne::mousePressEvent(QGraphicsSceneMouseEvent *e) {
|
void Borne::mousePressEvent(QGraphicsSceneMouseEvent *e) {
|
||||||
if (Schema *s = qobject_cast<Schema *>(scene())) {
|
if (Diagram *s = qobject_cast<Diagram *>(scene())) {
|
||||||
s -> setDepart(mapToScene(QPointF(amarrage_conducteur)));
|
s -> setDepart(mapToScene(QPointF(amarrage_conducteur)));
|
||||||
s -> setArrivee(e -> scenePos());
|
s -> setArrivee(e -> scenePos());
|
||||||
s -> poseConducteur(true);
|
s -> poseConducteur(true);
|
||||||
@@ -246,8 +246,8 @@ void Borne::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
|
|||||||
borne_precedente -> update();
|
borne_precedente -> update();
|
||||||
}
|
}
|
||||||
|
|
||||||
// si la scene est un Schema, on actualise le poseur de conducteur
|
// si la scene est un Diagram, on actualise le poseur de conducteur
|
||||||
if (Schema *s = qobject_cast<Schema *>(scene())) s -> setArrivee(e -> scenePos());
|
if (Diagram *s = qobject_cast<Diagram *>(scene())) s -> setArrivee(e -> scenePos());
|
||||||
|
|
||||||
// on recupere la liste des qgi sous le pointeur
|
// on recupere la liste des qgi sous le pointeur
|
||||||
QList<QGraphicsItem *> qgis = scene() -> items(e -> scenePos());
|
QList<QGraphicsItem *> qgis = scene() -> items(e -> scenePos());
|
||||||
@@ -306,8 +306,8 @@ void Borne::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
|||||||
setCursor(Qt::ArrowCursor);
|
setCursor(Qt::ArrowCursor);
|
||||||
borne_precedente = NULL;
|
borne_precedente = NULL;
|
||||||
couleur_hovered = couleur_neutre;
|
couleur_hovered = couleur_neutre;
|
||||||
// verifie que la scene est bien un Schema
|
// verifie que la scene est bien un Diagram
|
||||||
if (Schema *s = qobject_cast<Schema *>(scene())) {
|
if (Diagram *s = qobject_cast<Diagram *>(scene())) {
|
||||||
// on arrete de dessiner l'apercu du conducteur
|
// on arrete de dessiner l'apercu du conducteur
|
||||||
s -> poseConducteur(false);
|
s -> poseConducteur(false);
|
||||||
// on recupere l'element sous le pointeur lors du MouseReleaseEvent
|
// on recupere l'element sous le pointeur lors du MouseReleaseEvent
|
||||||
|
|||||||
10
borne.h
10
borne.h
@@ -5,7 +5,7 @@
|
|||||||
#include <QtXml>
|
#include <QtXml>
|
||||||
class Conducteur;
|
class Conducteur;
|
||||||
class Element;
|
class Element;
|
||||||
class Schema;
|
class Diagram;
|
||||||
/**
|
/**
|
||||||
Classe modelisant la « borne » d'un appareil, c'est-a-dire un
|
Classe modelisant la « borne » d'un appareil, c'est-a-dire un
|
||||||
branchement possible pour un Conducteur.
|
branchement possible pour un Conducteur.
|
||||||
@@ -21,8 +21,8 @@
|
|||||||
|
|
||||||
// constructeurs
|
// constructeurs
|
||||||
Borne();
|
Borne();
|
||||||
Borne(QPointF, Borne::Orientation, Element * = 0, Schema * = 0);
|
Borne(QPointF, Borne::Orientation, Element * = 0, Diagram * = 0);
|
||||||
Borne(qreal, qreal, Borne::Orientation, Element * = 0, Schema * = 0);
|
Borne(qreal, qreal, Borne::Orientation, Element * = 0, Diagram * = 0);
|
||||||
|
|
||||||
// destructeur
|
// destructeur
|
||||||
~Borne();
|
~Borne();
|
||||||
@@ -57,8 +57,8 @@
|
|||||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// pointeur vers la QGraphicsScene de type Schema (evite quelques casts en interne)
|
// pointeur vers la QGraphicsScene de type Diagram (evite quelques casts en interne)
|
||||||
Schema *schema_scene;
|
Diagram *diagram_scene;
|
||||||
// coordonnees des points d'amarrage
|
// coordonnees des points d'amarrage
|
||||||
QPointF amarrage_conducteur;
|
QPointF amarrage_conducteur;
|
||||||
QPointF amarrage_elmt;
|
QPointF amarrage_elmt;
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "conducteur.h"
|
#include "conducteur.h"
|
||||||
#include "elementperso.h"
|
#include "elementperso.h"
|
||||||
#include "schema.h"
|
#include "diagram.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param parent Le QObject parent du schema
|
@param parent Le QObject parent du schema
|
||||||
*/
|
*/
|
||||||
Schema::Schema(QObject *parent) : QGraphicsScene(parent) {
|
Diagram::Diagram(QObject *parent) : QGraphicsScene(parent) {
|
||||||
setBackgroundBrush(Qt::white);
|
setBackgroundBrush(Qt::white);
|
||||||
poseur_de_conducteur = new QGraphicsLineItem(0, 0);
|
poseur_de_conducteur = new QGraphicsLineItem(0, 0);
|
||||||
poseur_de_conducteur -> setZValue(1000000);
|
poseur_de_conducteur -> setZValue(1000000);
|
||||||
@@ -26,7 +26,7 @@ Schema::Schema(QObject *parent) : QGraphicsScene(parent) {
|
|||||||
@param p Le QPainter a utiliser pour dessiner
|
@param p Le QPainter a utiliser pour dessiner
|
||||||
@param r Le rectangle de la zone a dessiner
|
@param r Le rectangle de la zone a dessiner
|
||||||
*/
|
*/
|
||||||
void Schema::drawBackground(QPainter *p, const QRectF &r) {
|
void Diagram::drawBackground(QPainter *p, const QRectF &r) {
|
||||||
p -> save();
|
p -> save();
|
||||||
|
|
||||||
// desactive tout antialiasing
|
// desactive tout antialiasing
|
||||||
@@ -66,18 +66,18 @@ void Schema::drawBackground(QPainter *p, const QRectF &r) {
|
|||||||
Exporte le schema vers une image
|
Exporte le schema vers une image
|
||||||
@return Une QImage representant le schema
|
@return Une QImage representant le schema
|
||||||
*/
|
*/
|
||||||
QImage Schema::toImage(int width, int height, bool respectRatio) {
|
QImage Diagram::toImage(int width, int height, bool respectRatio) {
|
||||||
// determine le contenu du schema
|
// determine le contenu du schema
|
||||||
QRectF schema_content = itemsBoundingRect();
|
QRectF diagram_content = itemsBoundingRect();
|
||||||
|
|
||||||
// calcule la marge = 5 % de la longueur necessaire
|
// calcule la marge = 5 % de la longueur necessaire
|
||||||
qreal margin = 0.05 * schema_content.width();
|
qreal margin = 0.05 * diagram_content.width();
|
||||||
|
|
||||||
// en deduit la zone source utilisee pour l'image
|
// en deduit la zone source utilisee pour l'image
|
||||||
QRectF source_area = schema_content;
|
QRectF source_area = diagram_content;
|
||||||
source_area.translate(-margin, -margin);
|
source_area.translate(-margin, -margin);
|
||||||
source_area.setWidth(schema_content.width() + 2.0 * margin);
|
source_area.setWidth(diagram_content.width() + 2.0 * margin);
|
||||||
source_area.setHeight(schema_content.height() + 2.0 * margin);
|
source_area.setHeight(diagram_content.height() + 2.0 * margin);
|
||||||
|
|
||||||
// si les dimensions ne sont pas precisees, l'image est exportee a l'echelle 1:1
|
// si les dimensions ne sont pas precisees, l'image est exportee a l'echelle 1:1
|
||||||
QSize image_size = (width == -1 && height == -1) ? source_area.size().toSize() : QSize(width, height);
|
QSize image_size = (width == -1 && height == -1) ? source_area.size().toSize() : QSize(width, height);
|
||||||
@@ -113,18 +113,18 @@ QImage Schema::toImage(int width, int height, bool respectRatio) {
|
|||||||
Permet de connaitre les dimensions qu'aura l'image generee par la methode toImage()
|
Permet de connaitre les dimensions qu'aura l'image generee par la methode toImage()
|
||||||
@return La taille de l'image generee par toImage()
|
@return La taille de l'image generee par toImage()
|
||||||
*/
|
*/
|
||||||
QSize Schema::imageSize() const {
|
QSize Diagram::imageSize() const {
|
||||||
// determine le contenu du schema
|
// determine le contenu du schema
|
||||||
QRectF schema_content = itemsBoundingRect();
|
QRectF diagram_content = itemsBoundingRect();
|
||||||
|
|
||||||
// calcule la marge = 5 % de la longueur necessaire
|
// calcule la marge = 5 % de la longueur necessaire
|
||||||
qreal margin = 0.05 * schema_content.width();
|
qreal margin = 0.05 * diagram_content.width();
|
||||||
|
|
||||||
// en deduit la zone source utilisee pour l'image
|
// en deduit la zone source utilisee pour l'image
|
||||||
QRectF source_area = schema_content;
|
QRectF source_area = diagram_content;
|
||||||
source_area.translate(-margin, -margin);
|
source_area.translate(-margin, -margin);
|
||||||
source_area.setWidth(schema_content.width() + 2.0 * margin);
|
source_area.setWidth(diagram_content.width() + 2.0 * margin);
|
||||||
source_area.setHeight(schema_content.height() + 2.0 * margin);
|
source_area.setHeight(diagram_content.height() + 2.0 * margin);
|
||||||
|
|
||||||
// renvoie la taille de la zone source
|
// renvoie la taille de la zone source
|
||||||
return(source_area.size().toSize());
|
return(source_area.size().toSize());
|
||||||
@@ -136,15 +136,15 @@ QSize Schema::imageSize() const {
|
|||||||
representer tout le schema ou seulement les elements selectionnes
|
representer tout le schema ou seulement les elements selectionnes
|
||||||
@return Un Document XML (QDomDocument)
|
@return Un Document XML (QDomDocument)
|
||||||
*/
|
*/
|
||||||
QDomDocument Schema::toXml(bool schema) {
|
QDomDocument Diagram::toXml(bool diagram) {
|
||||||
// document
|
// document
|
||||||
QDomDocument document;
|
QDomDocument document;
|
||||||
|
|
||||||
// racine de l'arbre XML
|
// racine de l'arbre XML
|
||||||
QDomElement racine = document.createElement("schema");
|
QDomElement racine = document.createElement("diagram");
|
||||||
|
|
||||||
// proprietes du schema
|
// proprietes du schema
|
||||||
if (schema) {
|
if (diagram) {
|
||||||
if (!border_and_inset.author().isNull()) racine.setAttribute("auteur", border_and_inset.author());
|
if (!border_and_inset.author().isNull()) racine.setAttribute("auteur", border_and_inset.author());
|
||||||
if (!border_and_inset.date().isNull()) racine.setAttribute("date", border_and_inset.date().toString("yyyyMMdd"));
|
if (!border_and_inset.date().isNull()) racine.setAttribute("date", border_and_inset.date().toString("yyyyMMdd"));
|
||||||
if (!border_and_inset.title().isNull()) racine.setAttribute("titre", border_and_inset.title());
|
if (!border_and_inset.title().isNull()) racine.setAttribute("titre", border_and_inset.title());
|
||||||
@@ -164,11 +164,11 @@ QDomDocument Schema::toXml(bool schema) {
|
|||||||
// Determine les elements a « XMLiser »
|
// Determine les elements a « XMLiser »
|
||||||
foreach(QGraphicsItem *qgi, items()) {
|
foreach(QGraphicsItem *qgi, items()) {
|
||||||
if (Element *elmt = qgraphicsitem_cast<Element *>(qgi)) {
|
if (Element *elmt = qgraphicsitem_cast<Element *>(qgi)) {
|
||||||
if (schema) liste_elements << elmt;
|
if (diagram) liste_elements << elmt;
|
||||||
else if (elmt -> isSelected()) liste_elements << elmt;
|
else if (elmt -> isSelected()) liste_elements << elmt;
|
||||||
} else if (Conducteur *f = qgraphicsitem_cast<Conducteur *>(qgi)) {
|
} else if (Conducteur *f = qgraphicsitem_cast<Conducteur *>(qgi)) {
|
||||||
if (schema) liste_conducteurs << f;
|
if (diagram) liste_conducteurs << f;
|
||||||
// lorsqu'on n'exporte pas tout le schema, il faut retirer les conducteurs non selectionnes
|
// lorsqu'on n'exporte pas tout le diagram, il faut retirer les conducteurs non selectionnes
|
||||||
// et pour l'instant, les conducteurs non selectionnes sont les conducteurs dont un des elements n'est pas relie
|
// et pour l'instant, les conducteurs non selectionnes sont les conducteurs dont un des elements n'est pas relie
|
||||||
else if (f -> borne1 -> parentItem() -> isSelected() && f -> borne2 -> parentItem() -> isSelected()) liste_conducteurs << f;
|
else if (f -> borne1 -> parentItem() -> isSelected() && f -> borne2 -> parentItem() -> isSelected()) liste_conducteurs << f;
|
||||||
}
|
}
|
||||||
@@ -234,19 +234,21 @@ QDomDocument Schema::toXml(bool schema) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Importe le schema decrit dans un document XML. Si une position est
|
Importe le diagram decrit dans un document XML. Si une position est
|
||||||
precisee, les elements importes sont positionnes de maniere a ce que le
|
precisee, les elements importes sont positionnes de maniere a ce que le
|
||||||
coin superieur gauche du plus petit rectangle pouvant les entourant tous
|
coin superieur gauche du plus petit rectangle pouvant les entourant tous
|
||||||
(le bounding rect) soit a cette position.
|
(le bounding rect) soit a cette position.
|
||||||
@param document Le document XML a analyser
|
@param document Le document XML a analyser
|
||||||
@param position La position du schema importe
|
@param position La position du diagram importe
|
||||||
@param consider_informations Si vrai, les informations complementaires (auteur, titre, ...) seront prises en compte
|
@param consider_informations Si vrai, les informations complementaires (auteur, titre, ...) seront prises en compte
|
||||||
@return true si l'import a reussi, false sinon
|
@return true si l'import a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool Schema::fromXml(QDomDocument &document, QPointF position, bool consider_informations) {
|
bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_informations) {
|
||||||
QDomElement racine = document.documentElement();
|
QDomElement racine = document.documentElement();
|
||||||
// le premier element doit etre un schema
|
// le premier element doit etre un schema
|
||||||
|
/// @todo renommer schema en diagram
|
||||||
if (racine.tagName() != "schema") return(false);
|
if (racine.tagName() != "schema") return(false);
|
||||||
|
|
||||||
// lecture des attributs de ce schema
|
// lecture des attributs de ce schema
|
||||||
if (consider_informations) {
|
if (consider_informations) {
|
||||||
border_and_inset.setAuthor(racine.attribute("auteur"));
|
border_and_inset.setAuthor(racine.attribute("auteur"));
|
||||||
@@ -329,10 +331,6 @@ bool Schema::fromXml(QDomDocument &document, QPointF position, bool consider_inf
|
|||||||
bool cia = ((Element *)p2 -> parentItem()) -> connexionsInternesAcceptees();
|
bool cia = ((Element *)p2 -> parentItem()) -> connexionsInternesAcceptees();
|
||||||
if (!cia) foreach(QGraphicsItem *item, p2 -> parentItem() -> children()) if (item == p1) peut_poser_conducteur = false;
|
if (!cia) foreach(QGraphicsItem *item, p2 -> parentItem() -> children()) if (item == p1) peut_poser_conducteur = false;
|
||||||
if (peut_poser_conducteur) new Conducteur(table_adr_id.value(id_p1), table_adr_id.value(id_p2), 0, this);
|
if (peut_poser_conducteur) new Conducteur(table_adr_id.value(id_p1), table_adr_id.value(id_p2), 0, this);
|
||||||
/*if (peut_poser_conducteur) {
|
|
||||||
Conducteur *nc = new Conducteur(table_adr_id.value(id_p1), table_adr_id.value(id_p2), 0, this);
|
|
||||||
nc -> setFlags(QGraphicsItem::ItemIsSelectable);
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
} else qDebug() << "Le chargement du conducteur" << id_p1 << id_p2 << "a echoue";
|
} else qDebug() << "Le chargement du conducteur" << id_p1 << id_p2 << "a echoue";
|
||||||
}
|
}
|
||||||
@@ -346,7 +344,7 @@ bool Schema::fromXml(QDomDocument &document, QPointF position, bool consider_inf
|
|||||||
@param table_id_adr Table de correspondance entre les entiers et les bornes
|
@param table_id_adr Table de correspondance entre les entiers et les bornes
|
||||||
@return true si l'ajout a parfaitement reussi, false sinon
|
@return true si l'ajout a parfaitement reussi, false sinon
|
||||||
*/
|
*/
|
||||||
Element *Schema::elementFromXml(QDomElement &e, QHash<int, Borne *> &table_id_adr) {
|
Element *Diagram::elementFromXml(QDomElement &e, QHash<int, Borne *> &table_id_adr) {
|
||||||
// cree un element dont le type correspond à l'id type
|
// cree un element dont le type correspond à l'id type
|
||||||
QString type = e.attribute("type");
|
QString type = e.attribute("type");
|
||||||
QString chemin_fichier = QETApp::realPath(type);
|
QString chemin_fichier = QETApp::realPath(type);
|
||||||
@@ -376,7 +374,7 @@ Element *Schema::elementFromXml(QDomElement &e, QHash<int, Borne *> &table_id_ad
|
|||||||
Verifie si la liste des elements selectionnes a change. Si oui, le signal
|
Verifie si la liste des elements selectionnes a change. Si oui, le signal
|
||||||
selectionChanged() est emis.
|
selectionChanged() est emis.
|
||||||
*/
|
*/
|
||||||
void Schema::slot_checkSelectionChange() {
|
void Diagram::slot_checkSelectionChange() {
|
||||||
static QList<QGraphicsItem *> cache_selecteditems = QList<QGraphicsItem *>();
|
static QList<QGraphicsItem *> cache_selecteditems = QList<QGraphicsItem *>();
|
||||||
QList<QGraphicsItem *> selecteditems = selectedItems();
|
QList<QGraphicsItem *> selecteditems = selectedItems();
|
||||||
if (cache_selecteditems != selecteditems) emit(selectionChanged());
|
if (cache_selecteditems != selecteditems) emit(selectionChanged());
|
||||||
@@ -386,7 +384,7 @@ void Schema::slot_checkSelectionChange() {
|
|||||||
/**
|
/**
|
||||||
@return Le rectangle (coordonnees par rapport a la scene) delimitant le bord du schema
|
@return Le rectangle (coordonnees par rapport a la scene) delimitant le bord du schema
|
||||||
*/
|
*/
|
||||||
QRectF Schema::border() const {
|
QRectF Diagram::border() const {
|
||||||
return(
|
return(
|
||||||
QRectF(
|
QRectF(
|
||||||
MARGIN,
|
MARGIN,
|
||||||
@@ -9,10 +9,10 @@
|
|||||||
#include "borderinset.h"
|
#include "borderinset.h"
|
||||||
class Element;
|
class Element;
|
||||||
class Borne;
|
class Borne;
|
||||||
class Schema : public QGraphicsScene {
|
class Diagram : public QGraphicsScene {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
Schema(QObject * = 0);
|
Diagram(QObject * = 0);
|
||||||
void drawBackground(QPainter *, const QRectF &);
|
void drawBackground(QPainter *, const QRectF &);
|
||||||
inline void poseConducteur(bool pf) {
|
inline void poseConducteur(bool pf) {
|
||||||
if (pf) {
|
if (pf) {
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
#include "schemavue.h"
|
#include "diagramview.h"
|
||||||
#include "schema.h"
|
#include "diagram.h"
|
||||||
#include "elementperso.h"
|
#include "elementperso.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialise le SchemaVue
|
Initialise le DiagramView
|
||||||
*/
|
*/
|
||||||
void SchemaVue::initialise() {
|
void DiagramView::initialise() {
|
||||||
setInteractive(true);
|
setInteractive(true);
|
||||||
setAntialiasing(true);
|
setAntialiasing(true);
|
||||||
setScene(scene = new Schema(this));
|
setScene(scene = new Diagram(this));
|
||||||
setDragMode(RubberBandDrag);
|
setDragMode(RubberBandDrag);
|
||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
setWindowTitle(tr("Nouveau sch\351ma") + "[*]");
|
setWindowTitle(tr("Nouveau sch\351ma") + "[*]");
|
||||||
@@ -22,7 +22,7 @@ void SchemaVue::initialise() {
|
|||||||
/**
|
/**
|
||||||
Constructeur par defaut
|
Constructeur par defaut
|
||||||
*/
|
*/
|
||||||
SchemaVue::SchemaVue() : QGraphicsView() {
|
DiagramView::DiagramView() : QGraphicsView() {
|
||||||
initialise();
|
initialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,23 +30,23 @@ SchemaVue::SchemaVue() : QGraphicsView() {
|
|||||||
Constructeur
|
Constructeur
|
||||||
@param parent Le QWidegt parent de cette vue de schema
|
@param parent Le QWidegt parent de cette vue de schema
|
||||||
*/
|
*/
|
||||||
SchemaVue::SchemaVue(QWidget *parent) : QGraphicsView(parent) {
|
DiagramView::DiagramView(QWidget *parent) : QGraphicsView(parent) {
|
||||||
initialise();
|
initialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Permet de savoir si le rendu graphique du SchemaVue est antialiase ou non.
|
Permet de savoir si le rendu graphique du DiagramView est antialiase ou non.
|
||||||
@return Un booleen indiquant si le SchemaVue est antialiase
|
@return Un booleen indiquant si le DiagramView est antialiase
|
||||||
*/
|
*/
|
||||||
bool SchemaVue::antialiased() const {
|
bool DiagramView::antialiased() const {
|
||||||
return(antialiasing);
|
return(antialiasing);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Active ou desactive l'antialiasing pour le rendu graphique du SchemaVue.
|
Active ou desactive l'antialiasing pour le rendu graphique du DiagramView.
|
||||||
@param aa un booleen indiquant si le SchemaVue doit etre antialiase ou non
|
@param aa un booleen indiquant si le DiagramView doit etre antialiase ou non
|
||||||
*/
|
*/
|
||||||
void SchemaVue::setAntialiasing(bool aa) {
|
void DiagramView::setAntialiasing(bool aa) {
|
||||||
antialiasing = aa;
|
antialiasing = aa;
|
||||||
setRenderHint(QPainter::Antialiasing, aa);
|
setRenderHint(QPainter::Antialiasing, aa);
|
||||||
setRenderHint(QPainter::TextAntialiasing, aa);
|
setRenderHint(QPainter::TextAntialiasing, aa);
|
||||||
@@ -57,7 +57,7 @@ void SchemaVue::setAntialiasing(bool aa) {
|
|||||||
/**
|
/**
|
||||||
appelle la methode select sur tous les elements de la liste d'elements
|
appelle la methode select sur tous les elements de la liste d'elements
|
||||||
*/
|
*/
|
||||||
void SchemaVue::selectAll() {
|
void DiagramView::selectAll() {
|
||||||
if (scene -> items().isEmpty()) return;
|
if (scene -> items().isEmpty()) return;
|
||||||
foreach (QGraphicsItem *item, scene -> items()) item -> setSelected(true);
|
foreach (QGraphicsItem *item, scene -> items()) item -> setSelected(true);
|
||||||
}
|
}
|
||||||
@@ -65,7 +65,7 @@ void SchemaVue::selectAll() {
|
|||||||
/**
|
/**
|
||||||
appelle la methode deselect sur tous les elements de la liste d'elements
|
appelle la methode deselect sur tous les elements de la liste d'elements
|
||||||
*/
|
*/
|
||||||
void SchemaVue::selectNothing() {
|
void DiagramView::selectNothing() {
|
||||||
if (scene -> items().isEmpty()) return;
|
if (scene -> items().isEmpty()) return;
|
||||||
foreach (QGraphicsItem *item, scene -> items()) item -> setSelected(false);
|
foreach (QGraphicsItem *item, scene -> items()) item -> setSelected(false);
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ void SchemaVue::selectNothing() {
|
|||||||
/**
|
/**
|
||||||
Inverse l'etat de selection de tous les elements de la liste d'elements
|
Inverse l'etat de selection de tous les elements de la liste d'elements
|
||||||
*/
|
*/
|
||||||
void SchemaVue::selectInvert() {
|
void DiagramView::selectInvert() {
|
||||||
if (scene -> items().isEmpty()) return;
|
if (scene -> items().isEmpty()) return;
|
||||||
foreach (QGraphicsItem *item, scene -> items()) item -> setSelected(!item -> isSelected());
|
foreach (QGraphicsItem *item, scene -> items()) item -> setSelected(!item -> isSelected());
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ void SchemaVue::selectInvert() {
|
|||||||
/**
|
/**
|
||||||
Supprime les composants selectionnes
|
Supprime les composants selectionnes
|
||||||
*/
|
*/
|
||||||
void SchemaVue::supprimer() {
|
void DiagramView::supprimer() {
|
||||||
|
|
||||||
QList<QGraphicsItem *> garbage_elmt;
|
QList<QGraphicsItem *> garbage_elmt;
|
||||||
QList<QGraphicsItem *> garbage_conducteurs;
|
QList<QGraphicsItem *> garbage_conducteurs;
|
||||||
@@ -131,7 +131,7 @@ void SchemaVue::supprimer() {
|
|||||||
Envoie un item vers le "garbage" pour qu'il soit supprime plus tard
|
Envoie un item vers le "garbage" pour qu'il soit supprime plus tard
|
||||||
@param qgi L'item a supprimer
|
@param qgi L'item a supprimer
|
||||||
*/
|
*/
|
||||||
void SchemaVue::throwToGarbage(QGraphicsItem *qgi) {
|
void DiagramView::throwToGarbage(QGraphicsItem *qgi) {
|
||||||
// pas de doublon dans le garbage (sinon ca va sentir la segfault)
|
// pas de doublon dans le garbage (sinon ca va sentir la segfault)
|
||||||
bool qgi_deja_dans_le_garbage = false;
|
bool qgi_deja_dans_le_garbage = false;
|
||||||
foreach(QGraphicsItem *gbg_qgi, garbage) {
|
foreach(QGraphicsItem *gbg_qgi, garbage) {
|
||||||
@@ -146,7 +146,7 @@ void SchemaVue::throwToGarbage(QGraphicsItem *qgi) {
|
|||||||
/**
|
/**
|
||||||
Supprime tous les elements du "garbage"
|
Supprime tous les elements du "garbage"
|
||||||
*/
|
*/
|
||||||
void SchemaVue::flushGarbage() {
|
void DiagramView::flushGarbage() {
|
||||||
foreach(QGraphicsItem *qgi, garbage) {
|
foreach(QGraphicsItem *qgi, garbage) {
|
||||||
delete(qgi);
|
delete(qgi);
|
||||||
garbage.removeAll(qgi);
|
garbage.removeAll(qgi);
|
||||||
@@ -156,7 +156,7 @@ void SchemaVue::flushGarbage() {
|
|||||||
/**
|
/**
|
||||||
Pivote les composants selectionnes
|
Pivote les composants selectionnes
|
||||||
*/
|
*/
|
||||||
void SchemaVue::pivoter() {
|
void DiagramView::pivoter() {
|
||||||
if (scene -> selectedItems().isEmpty()) return;
|
if (scene -> selectedItems().isEmpty()) return;
|
||||||
foreach (QGraphicsItem *item, scene -> selectedItems()) {
|
foreach (QGraphicsItem *item, scene -> selectedItems()) {
|
||||||
if (Element *elt = qgraphicsitem_cast<Element *>(item)) {
|
if (Element *elt = qgraphicsitem_cast<Element *>(item)) {
|
||||||
@@ -170,7 +170,7 @@ void SchemaVue::pivoter() {
|
|||||||
accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
||||||
@param e le QDragEnterEvent correspondant au drag'n drop tente
|
@param e le QDragEnterEvent correspondant au drag'n drop tente
|
||||||
*/
|
*/
|
||||||
void SchemaVue::dragEnterEvent(QDragEnterEvent *e) {
|
void DiagramView::dragEnterEvent(QDragEnterEvent *e) {
|
||||||
if (e -> mimeData() -> hasFormat("text/plain")) e -> acceptProposedAction();
|
if (e -> mimeData() -> hasFormat("text/plain")) e -> acceptProposedAction();
|
||||||
else e-> ignore();
|
else e-> ignore();
|
||||||
}
|
}
|
||||||
@@ -179,22 +179,22 @@ void SchemaVue::dragEnterEvent(QDragEnterEvent *e) {
|
|||||||
gere les dragleaveevent
|
gere les dragleaveevent
|
||||||
@param e le QDragEnterEvent correspondant au drag'n drop sortant
|
@param e le QDragEnterEvent correspondant au drag'n drop sortant
|
||||||
*/
|
*/
|
||||||
void SchemaVue::dragLeaveEvent(QDragLeaveEvent *) {}
|
void DiagramView::dragLeaveEvent(QDragLeaveEvent *) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
||||||
@param e le QDragMoveEvent correspondant au drag'n drop tente
|
@param e le QDragMoveEvent correspondant au drag'n drop tente
|
||||||
*/
|
*/
|
||||||
void SchemaVue::dragMoveEvent(QDragMoveEvent *e) {
|
void DiagramView::dragMoveEvent(QDragMoveEvent *e) {
|
||||||
if (e -> mimeData() -> hasFormat("text/plain")) e -> acceptProposedAction();
|
if (e -> mimeData() -> hasFormat("text/plain")) e -> acceptProposedAction();
|
||||||
else e-> ignore();
|
else e-> ignore();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
gere les depots (drop) acceptes sur le Schema
|
gere les depots (drop) acceptes sur le Diagram
|
||||||
@param e le QDropEvent correspondant au drag'n drop effectue
|
@param e le QDropEvent correspondant au drag'n drop effectue
|
||||||
*/
|
*/
|
||||||
void SchemaVue::dropEvent(QDropEvent *e) {
|
void DiagramView::dropEvent(QDropEvent *e) {
|
||||||
QString fichier = e -> mimeData() -> text();
|
QString fichier = e -> mimeData() -> text();
|
||||||
int etat;
|
int etat;
|
||||||
Element *el = new ElementPerso(fichier, 0, 0, &etat);
|
Element *el = new ElementPerso(fichier, 0, 0, &etat);
|
||||||
@@ -207,17 +207,17 @@ void SchemaVue::dropEvent(QDropEvent *e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Passe le Schema en mode visualisation
|
Passe le Diagram en mode visualisation
|
||||||
*/
|
*/
|
||||||
void SchemaVue::setVisualisationMode() {
|
void DiagramView::setVisualisationMode() {
|
||||||
setDragMode(ScrollHandDrag);
|
setDragMode(ScrollHandDrag);
|
||||||
emit(modeChanged());
|
emit(modeChanged());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Passe le Schema en mode Selection
|
Passe le Diagram en mode Selection
|
||||||
*/
|
*/
|
||||||
void SchemaVue::setSelectionMode() {
|
void DiagramView::setSelectionMode() {
|
||||||
setDragMode(RubberBandDrag);
|
setDragMode(RubberBandDrag);
|
||||||
viewport() -> setCursor(Qt::ArrowCursor);
|
viewport() -> setCursor(Qt::ArrowCursor);
|
||||||
emit(modeChanged());
|
emit(modeChanged());
|
||||||
@@ -226,14 +226,14 @@ void SchemaVue::setSelectionMode() {
|
|||||||
/**
|
/**
|
||||||
Agrandit le schema (+33% = inverse des -25 % de zoomMoins())
|
Agrandit le schema (+33% = inverse des -25 % de zoomMoins())
|
||||||
*/
|
*/
|
||||||
void SchemaVue::zoomPlus() {
|
void DiagramView::zoomPlus() {
|
||||||
scale(4.0/3.0, 4.0/3.0);
|
scale(4.0/3.0, 4.0/3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Retrecit le schema (-25% = inverse des +33 % de zoomPlus())
|
Retrecit le schema (-25% = inverse des +33 % de zoomPlus())
|
||||||
*/
|
*/
|
||||||
void SchemaVue::zoomMoins() {
|
void DiagramView::zoomMoins() {
|
||||||
scale(0.75, 0.75);
|
scale(0.75, 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ void SchemaVue::zoomMoins() {
|
|||||||
schema soient visibles a l'ecran. S'il n'y a aucun element sur le schema,
|
schema soient visibles a l'ecran. S'il n'y a aucun element sur le schema,
|
||||||
le zoom est reinitialise
|
le zoom est reinitialise
|
||||||
*/
|
*/
|
||||||
void SchemaVue::zoomFit() {
|
void DiagramView::zoomFit() {
|
||||||
if (scene -> items().isEmpty()) {
|
if (scene -> items().isEmpty()) {
|
||||||
zoomReset();
|
zoomReset();
|
||||||
return;
|
return;
|
||||||
@@ -259,14 +259,14 @@ void SchemaVue::zoomFit() {
|
|||||||
/**
|
/**
|
||||||
Reinitialise le zoom
|
Reinitialise le zoom
|
||||||
*/
|
*/
|
||||||
void SchemaVue::zoomReset() {
|
void DiagramView::zoomReset() {
|
||||||
resetMatrix();
|
resetMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
copie les elements selectionnes du schema dans le presse-papier puis les supprime
|
copie les elements selectionnes du schema dans le presse-papier puis les supprime
|
||||||
*/
|
*/
|
||||||
void SchemaVue::couper() {
|
void DiagramView::couper() {
|
||||||
copier();
|
copier();
|
||||||
supprimer();
|
supprimer();
|
||||||
}
|
}
|
||||||
@@ -274,7 +274,7 @@ void SchemaVue::couper() {
|
|||||||
/**
|
/**
|
||||||
copie les elements selectionnes du schema dans le presse-papier
|
copie les elements selectionnes du schema dans le presse-papier
|
||||||
*/
|
*/
|
||||||
void SchemaVue::copier() {
|
void DiagramView::copier() {
|
||||||
QClipboard *presse_papier = QApplication::clipboard();
|
QClipboard *presse_papier = QApplication::clipboard();
|
||||||
QString contenu_presse_papier = scene -> toXml(false).toString(4);
|
QString contenu_presse_papier = scene -> toXml(false).toString(4);
|
||||||
if (presse_papier -> supportsSelection()) presse_papier -> setText(contenu_presse_papier, QClipboard::Selection);
|
if (presse_papier -> supportsSelection()) presse_papier -> setText(contenu_presse_papier, QClipboard::Selection);
|
||||||
@@ -284,7 +284,7 @@ void SchemaVue::copier() {
|
|||||||
/**
|
/**
|
||||||
importe les elements contenus dans le presse-papier dans le schema
|
importe les elements contenus dans le presse-papier dans le schema
|
||||||
*/
|
*/
|
||||||
void SchemaVue::coller() {
|
void DiagramView::coller() {
|
||||||
QString texte_presse_papier;
|
QString texte_presse_papier;
|
||||||
QDomDocument document_xml;
|
QDomDocument document_xml;
|
||||||
if ((texte_presse_papier = QApplication::clipboard() -> text()) == QString()) return;
|
if ((texte_presse_papier = QApplication::clipboard() -> text()) == QString()) return;
|
||||||
@@ -295,7 +295,7 @@ void SchemaVue::coller() {
|
|||||||
/**
|
/**
|
||||||
gere les clics et plus particulierement le clic du milieu (= coller pour X11)
|
gere les clics et plus particulierement le clic du milieu (= coller pour X11)
|
||||||
*/
|
*/
|
||||||
void SchemaVue::mousePressEvent(QMouseEvent *e) {
|
void DiagramView::mousePressEvent(QMouseEvent *e) {
|
||||||
if (e -> buttons() == Qt::MidButton) {
|
if (e -> buttons() == Qt::MidButton) {
|
||||||
QString texte_presse_papier;
|
QString texte_presse_papier;
|
||||||
QDomDocument document_xml;
|
QDomDocument document_xml;
|
||||||
@@ -307,12 +307,12 @@ void SchemaVue::mousePressEvent(QMouseEvent *e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Ouvre un fichier *.qet dans cette SchemaVue
|
Ouvre un fichier *.qet dans cette DiagramView
|
||||||
@param nom_fichier Nom du fichier a ouvrir
|
@param nom_fichier Nom du fichier a ouvrir
|
||||||
@param erreur Si le pointeur est specifie, cet entier est mis a 0 en cas de reussite de l'ouverture, 1 si le fichier n'existe pas, 2 si le fichier n'est pas lisible, 3 si le fichier n'est pas un element XML, 4 si l'ouverture du fichier a echoue pour une autre raison (c'est pas ca qui manque ^^)
|
@param erreur Si le pointeur est specifie, cet entier est mis a 0 en cas de reussite de l'ouverture, 1 si le fichier n'existe pas, 2 si le fichier n'est pas lisible, 3 si le fichier n'est pas un element XML, 4 si l'ouverture du fichier a echoue pour une autre raison (c'est pas ca qui manque ^^)
|
||||||
@return true si l'ouverture a reussi, false sinon
|
@return true si l'ouverture a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool SchemaVue::ouvrir(QString n_fichier, int *erreur) {
|
bool DiagramView::ouvrir(QString n_fichier, int *erreur) {
|
||||||
// verifie l'existence du fichier
|
// verifie l'existence du fichier
|
||||||
if (!QFileInfo(n_fichier).exists()) {
|
if (!QFileInfo(n_fichier).exists()) {
|
||||||
if (erreur != NULL) *erreur = 1;
|
if (erreur != NULL) *erreur = 1;
|
||||||
@@ -348,11 +348,11 @@ bool SchemaVue::ouvrir(QString n_fichier, int *erreur) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SchemaVue::slot_selectionChanged() {
|
void DiagramView::slot_selectionChanged() {
|
||||||
emit(selectionChanged());
|
emit(selectionChanged());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SchemaVue::closeEvent(QCloseEvent *event) {
|
void DiagramView::closeEvent(QCloseEvent *event) {
|
||||||
// demande d'abord a l'utilisateur s'il veut enregistrer le schema en cours
|
// demande d'abord a l'utilisateur s'il veut enregistrer le schema en cours
|
||||||
QMessageBox::StandardButton reponse = QMessageBox::question(
|
QMessageBox::StandardButton reponse = QMessageBox::question(
|
||||||
this,
|
this,
|
||||||
@@ -376,7 +376,7 @@ void SchemaVue::closeEvent(QCloseEvent *event) {
|
|||||||
Si aucun nom de fichier n'est connu, cette methode appelle la methode enregistrer_sous
|
Si aucun nom de fichier n'est connu, cette methode appelle la methode enregistrer_sous
|
||||||
@return true si l'enregistrement a reussi, false sinon
|
@return true si l'enregistrement a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool SchemaVue::enregistrer() {
|
bool DiagramView::enregistrer() {
|
||||||
if (nom_fichier == QString()) return(enregistrer_sous());
|
if (nom_fichier == QString()) return(enregistrer_sous());
|
||||||
else return(private_enregistrer(nom_fichier));
|
else return(private_enregistrer(nom_fichier));
|
||||||
}
|
}
|
||||||
@@ -389,13 +389,13 @@ bool SchemaVue::enregistrer() {
|
|||||||
Sinon, faux est renvoye.
|
Sinon, faux est renvoye.
|
||||||
@return true si l'enregistrement a reussi, false sinon
|
@return true si l'enregistrement a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool SchemaVue::enregistrer_sous() {
|
bool DiagramView::enregistrer_sous() {
|
||||||
// demande un nom de fichier a l'utilisateur pour enregistrer le schema
|
// demande un nom de fichier a l'utilisateur pour enregistrer le schema
|
||||||
QString n_fichier = QFileDialog::getSaveFileName(
|
QString n_fichier = QFileDialog::getSaveFileName(
|
||||||
this,
|
this,
|
||||||
tr("Enregistrer sous"),
|
tr("Enregistrer sous"),
|
||||||
QDir::homePath(),
|
QDir::homePath(),
|
||||||
tr("Schema QelectroTech (*.qet)")
|
tr("Diagram QelectroTech (*.qet)")
|
||||||
);
|
);
|
||||||
// si aucun nom n'est entre, renvoie faux.
|
// si aucun nom n'est entre, renvoie faux.
|
||||||
if (n_fichier == "") return(false);
|
if (n_fichier == "") return(false);
|
||||||
@@ -419,7 +419,7 @@ bool SchemaVue::enregistrer_sous() {
|
|||||||
@param nom_fichier Nom du fichier dans lequel l'arbre XML doit etre ecrit
|
@param nom_fichier Nom du fichier dans lequel l'arbre XML doit etre ecrit
|
||||||
@return true si l'enregistrement a reussi, false sinon
|
@return true si l'enregistrement a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool SchemaVue::private_enregistrer(QString &n_fichier) {
|
bool DiagramView::private_enregistrer(QString &n_fichier) {
|
||||||
QFile fichier(n_fichier);
|
QFile fichier(n_fichier);
|
||||||
if (!fichier.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
if (!fichier.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||||
QMessageBox::warning(this, tr("Erreur"), tr("Impossible d'ecrire dans ce fichier"));
|
QMessageBox::warning(this, tr("Erreur"), tr("Impossible d'ecrire dans ce fichier"));
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
#ifndef SCHEMAVUE_H
|
#ifndef DIAGRAMVIEW_H
|
||||||
#define SCHEMAVUE_H
|
#define DIAGRAMVIEW_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
class Schema;
|
class Diagram;
|
||||||
#include "element.h"
|
#include "element.h"
|
||||||
#include "conducteur.h"
|
#include "conducteur.h"
|
||||||
#define TAILLE_GRILLE 10
|
#define TAILLE_GRILLE 10
|
||||||
/**
|
/**
|
||||||
Classe representant graphiquement un schema electrique
|
Classe representant graphiquement un schema electrique
|
||||||
*/
|
*/
|
||||||
class SchemaVue : public QGraphicsView {
|
class DiagramView : public QGraphicsView {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
// constructeurs
|
// constructeurs
|
||||||
SchemaVue();
|
DiagramView();
|
||||||
SchemaVue(QWidget * = 0);
|
DiagramView(QWidget * = 0);
|
||||||
|
|
||||||
// nouveaux attributs
|
// nouveaux attributs
|
||||||
Schema *scene;
|
Diagram *scene;
|
||||||
|
|
||||||
// methodes publiques
|
// methodes publiques
|
||||||
bool antialiased() const;
|
bool antialiased() const;
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
private:
|
private:
|
||||||
bool private_enregistrer(QString &);
|
bool private_enregistrer(QString &);
|
||||||
void initialise();
|
void initialise();
|
||||||
bool antialiasing; // booleen indiquant s'il faut effectuer un antialiasing sur le rendu graphique du SchemaVue
|
bool antialiasing; // booleen indiquant s'il faut effectuer un antialiasing sur le rendu graphique du DiagramView
|
||||||
QList<QGraphicsItem *> garbage;
|
QList<QGraphicsItem *> garbage;
|
||||||
|
|
||||||
void throwToGarbage(QGraphicsItem *);
|
void throwToGarbage(QGraphicsItem *);
|
||||||
10
element.cpp
10
element.cpp
@@ -1,5 +1,5 @@
|
|||||||
#include "element.h"
|
#include "element.h"
|
||||||
#include "schema.h"
|
#include "diagram.h"
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
|
||||||
/*** Methodes publiques ***/
|
/*** Methodes publiques ***/
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
/**
|
/**
|
||||||
Constructeur pour un element sans scene ni parent
|
Constructeur pour un element sans scene ni parent
|
||||||
*/
|
*/
|
||||||
Element::Element(QGraphicsItem *parent, Schema *scene) : QGraphicsItem(parent, scene) {
|
Element::Element(QGraphicsItem *parent, Diagram *scene) : QGraphicsItem(parent, scene) {
|
||||||
peut_relier_ses_propres_bornes = false;
|
peut_relier_ses_propres_bornes = false;
|
||||||
setZValue(10);
|
setZValue(10);
|
||||||
}
|
}
|
||||||
@@ -191,12 +191,12 @@ void Element::updatePixmap() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Change la position de l'element en veillant a ce que l'element
|
Change la position de l'element en veillant a ce que l'element
|
||||||
reste sur la grille du Schema auquel il appartient.
|
reste sur la grille du Diagram auquel il appartient.
|
||||||
@param p Nouvelles coordonnees de l'element
|
@param p Nouvelles coordonnees de l'element
|
||||||
*/
|
*/
|
||||||
void Element::setPos(const QPointF &p) {
|
void Element::setPos(const QPointF &p) {
|
||||||
if (p == pos()) return;
|
if (p == pos()) return;
|
||||||
// pas la peine de positionner sur la grille si l'element n'est pas sur un Schema
|
// pas la peine de positionner sur la grille si l'element n'est pas sur un Diagram
|
||||||
if (scene()) {
|
if (scene()) {
|
||||||
// arrondit l'abscisse a 10 px pres
|
// arrondit l'abscisse a 10 px pres
|
||||||
int p_x = qRound(p.x() / 10.0) * 10;
|
int p_x = qRound(p.x() / 10.0) * 10;
|
||||||
@@ -208,7 +208,7 @@ void Element::setPos(const QPointF &p) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Change la position de l'element en veillant a ce que l'element
|
Change la position de l'element en veillant a ce que l'element
|
||||||
reste sur la grille du Schema auquel il appartient.
|
reste sur la grille du Diagram auquel il appartient.
|
||||||
@param x Nouvelle abscisse de l'element
|
@param x Nouvelle abscisse de l'element
|
||||||
@param y Nouvelle ordonnee de l'element
|
@param y Nouvelle ordonnee de l'element
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
#define ELEMENT_H
|
#define ELEMENT_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "borne.h"
|
#include "borne.h"
|
||||||
class Schema;
|
class Diagram;
|
||||||
class Element : public QGraphicsItem {
|
class Element : public QGraphicsItem {
|
||||||
public:
|
public:
|
||||||
enum { Type = UserType + 1000 };
|
enum { Type = UserType + 1000 };
|
||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
Element(QGraphicsItem * = 0, Schema * = 0);
|
Element(QGraphicsItem * = 0, Diagram * = 0);
|
||||||
|
|
||||||
virtual int nbBornes() const = 0;
|
virtual int nbBornes() const = 0;
|
||||||
virtual int nbBornesMin() const = 0;
|
virtual int nbBornesMin() const = 0;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
*/
|
*/
|
||||||
ElementFixe::ElementFixe(QGraphicsItem *parent, Schema *scene) : Element(parent, scene) {
|
ElementFixe::ElementFixe(QGraphicsItem *parent, Diagram *scene) : Element(parent, scene) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "element.h"
|
#include "element.h"
|
||||||
class ElementFixe : public Element {
|
class ElementFixe : public Element {
|
||||||
public:
|
public:
|
||||||
ElementFixe(QGraphicsItem * = 0, Schema * = 0);
|
ElementFixe(QGraphicsItem * = 0, Diagram * = 0);
|
||||||
int nbBornesMin() const;
|
int nbBornesMin() const;
|
||||||
int nbBornesMax() const;
|
int nbBornesMax() const;
|
||||||
virtual bool fromXml(QDomElement &, QHash<int, Borne *>&);
|
virtual bool fromXml(QDomElement &, QHash<int, Borne *>&);
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
en parametre.
|
en parametre.
|
||||||
@param nom_fichier Le chemin du fichier XML decrivant l'element
|
@param nom_fichier Le chemin du fichier XML decrivant l'element
|
||||||
@param qgi Le QGraphicsItem parent de cet element
|
@param qgi Le QGraphicsItem parent de cet element
|
||||||
@param s Le Schema affichant cet element
|
@param s Le Diagram affichant cet element
|
||||||
@param etat Un pointeur facultatif vers un entier. La valeur de cet entier
|
@param etat Un pointeur facultatif vers un entier. La valeur de cet entier
|
||||||
sera changee de maniere a refleter le deroulement de l'instanciation :
|
sera changee de maniere a refleter le deroulement de l'instanciation :
|
||||||
- 0 : L'instanciation a reussi
|
- 0 : L'instanciation a reussi
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
- 7 : L'analyse d'un element XML decrivant une partie du dessin de l'element a echoue
|
- 7 : L'analyse d'un element XML decrivant une partie du dessin de l'element a echoue
|
||||||
- 8 : Aucune partie du dessin n'a pu etre chargee
|
- 8 : Aucune partie du dessin n'a pu etre chargee
|
||||||
*/
|
*/
|
||||||
ElementPerso::ElementPerso(QString &nom_fichier, QGraphicsItem *qgi, Schema *s, int *etat) : ElementFixe(qgi, s) {
|
ElementPerso::ElementPerso(QString &nom_fichier, QGraphicsItem *qgi, Diagram *s, int *etat) : ElementFixe(qgi, s) {
|
||||||
nomfichier = nom_fichier;
|
nomfichier = nom_fichier;
|
||||||
nb_bornes = 0;
|
nb_bornes = 0;
|
||||||
// pessimisme inside : par defaut, ca foire
|
// pessimisme inside : par defaut, ca foire
|
||||||
@@ -162,7 +162,7 @@ int ElementPerso::nbBornes() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Dessine le composant sur le Schema
|
Dessine le composant sur le Diagram
|
||||||
@param qp Le QPainter a utiliser pour dessiner l'element
|
@param qp Le QPainter a utiliser pour dessiner l'element
|
||||||
@param qsogi Les options graphiques
|
@param qsogi Les options graphiques
|
||||||
*/
|
*/
|
||||||
@@ -183,7 +183,7 @@ void ElementPerso::paint(QPainter *qp, const QStyleOptionGraphicsItem *) {
|
|||||||
@param s Le schema sur lequel sera affiche l'element perso
|
@param s Le schema sur lequel sera affiche l'element perso
|
||||||
@return true si l'analyse reussit, false sinon
|
@return true si l'analyse reussit, false sinon
|
||||||
*/
|
*/
|
||||||
bool ElementPerso::parseElement(QDomElement &e, QPainter &qp, Schema *s) {
|
bool ElementPerso::parseElement(QDomElement &e, QPainter &qp, Diagram *s) {
|
||||||
if (e.tagName() == "borne") return(parseBorne(e, s));
|
if (e.tagName() == "borne") return(parseBorne(e, s));
|
||||||
else if (e.tagName() == "ligne") return(parseLigne(e, qp));
|
else if (e.tagName() == "ligne") return(parseLigne(e, qp));
|
||||||
else if (e.tagName() == "ellipse") return(parseEllipse(e, qp));
|
else if (e.tagName() == "ellipse") return(parseEllipse(e, qp));
|
||||||
@@ -345,7 +345,7 @@ bool ElementPerso::parsePolygone(QDomElement &e, QPainter &qp) {
|
|||||||
@param s Le schema sur lequel l'element perso sera affiche
|
@param s Le schema sur lequel l'element perso sera affiche
|
||||||
@return true si l'analyse reussit, false sinon
|
@return true si l'analyse reussit, false sinon
|
||||||
*/
|
*/
|
||||||
bool ElementPerso::parseBorne(QDomElement &e, Schema *s) {
|
bool ElementPerso::parseBorne(QDomElement &e, Diagram *s) {
|
||||||
// verifie la presence et la validite des attributs obligatoires
|
// verifie la presence et la validite des attributs obligatoires
|
||||||
double bornex, borney;
|
double bornex, borney;
|
||||||
Borne::Orientation borneo;
|
Borne::Orientation borneo;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
class ElementPerso : public ElementFixe {
|
class ElementPerso : public ElementFixe {
|
||||||
public:
|
public:
|
||||||
ElementPerso(QString &, QGraphicsItem * = 0, Schema * = 0, int * = NULL);
|
ElementPerso(QString &, QGraphicsItem * = 0, Diagram * = 0, int * = NULL);
|
||||||
virtual int nbBornes() const;
|
virtual int nbBornes() const;
|
||||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *);
|
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *);
|
||||||
inline QString typeId() { return(nomfichier); }
|
inline QString typeId() { return(nomfichier); }
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
QString priv_nom;
|
QString priv_nom;
|
||||||
QString nomfichier;
|
QString nomfichier;
|
||||||
QPicture dessin;
|
QPicture dessin;
|
||||||
bool parseElement(QDomElement &, QPainter &, Schema *);
|
bool parseElement(QDomElement &, QPainter &, Diagram *);
|
||||||
bool parseLigne(QDomElement &, QPainter &);
|
bool parseLigne(QDomElement &, QPainter &);
|
||||||
bool parseEllipse(QDomElement &, QPainter &);
|
bool parseEllipse(QDomElement &, QPainter &);
|
||||||
bool parseCercle(QDomElement &, QPainter &);
|
bool parseCercle(QDomElement &, QPainter &);
|
||||||
bool parseArc(QDomElement &, QPainter &);
|
bool parseArc(QDomElement &, QPainter &);
|
||||||
bool parsePolygone(QDomElement &, QPainter &);
|
bool parsePolygone(QDomElement &, QPainter &);
|
||||||
bool parseBorne(QDomElement &, Schema *);
|
bool parseBorne(QDomElement &, Diagram *);
|
||||||
void setQPainterAntiAliasing(QPainter &, bool);
|
void setQPainterAntiAliasing(QPainter &, bool);
|
||||||
bool attributeIsAnInteger(QDomElement &, QString, int * = NULL);
|
bool attributeIsAnInteger(QDomElement &, QString, int * = NULL);
|
||||||
bool attributeIsAReal(QDomElement &, QString, double * = NULL);
|
bool attributeIsAReal(QDomElement &, QString, double * = NULL);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
@param dia Le schema a exporter
|
@param dia Le schema a exporter
|
||||||
@param parent Le Widget parent de ce dialogue
|
@param parent Le Widget parent de ce dialogue
|
||||||
*/
|
*/
|
||||||
ExportDialog::ExportDialog(Schema &dia, QWidget *parent) : QDialog(parent) {
|
ExportDialog::ExportDialog(Diagram &dia, QWidget *parent) : QDialog(parent) {
|
||||||
// recupere le schema a exporter, sa taille et ses proportions
|
// recupere le schema a exporter, sa taille et ses proportions
|
||||||
diagram = &dia;
|
diagram = &dia;
|
||||||
diagram_size = diagram -> imageSize();
|
diagram_size = diagram -> imageSize();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef EXPORTDIALOG_H
|
#ifndef EXPORTDIALOG_H
|
||||||
#define EXPORTDIALOG_H
|
#define EXPORTDIALOG_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "schema.h"
|
#include "diagram.h"
|
||||||
/**
|
/**
|
||||||
Cette classe represente le dialogue permettant d'exporter un schema
|
Cette classe represente le dialogue permettant d'exporter un schema
|
||||||
sous forme d'image selon les desirs de l'utilisateur
|
sous forme d'image selon les desirs de l'utilisateur
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
class ExportDialog : public QDialog {
|
class ExportDialog : public QDialog {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
ExportDialog(Schema &, QWidget * = 0);
|
ExportDialog(Diagram &, QWidget * = 0);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// elements graphiques
|
// elements graphiques
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
bool dontchangeheight;
|
bool dontchangeheight;
|
||||||
|
|
||||||
// elements relatifs au traitement effectue par le dialogue
|
// elements relatifs au traitement effectue par le dialogue
|
||||||
Schema *diagram;
|
Diagram *diagram;
|
||||||
QSize diagram_size;
|
QSize diagram_size;
|
||||||
QString diagram_path;
|
QString diagram_path;
|
||||||
qreal diagram_ratio;
|
qreal diagram_ratio;
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ HEADERS += aboutqet.h \
|
|||||||
exportdialog.h \
|
exportdialog.h \
|
||||||
panelappareils.h \
|
panelappareils.h \
|
||||||
qetapp.h \
|
qetapp.h \
|
||||||
schema.h \
|
diagram.h \
|
||||||
schemavue.h
|
diagramview.h
|
||||||
SOURCES += aboutqet.cpp \
|
SOURCES += aboutqet.cpp \
|
||||||
borderinset.cpp \
|
borderinset.cpp \
|
||||||
borne.cpp \
|
borne.cpp \
|
||||||
@@ -31,8 +31,8 @@ SOURCES += aboutqet.cpp \
|
|||||||
main.cpp \
|
main.cpp \
|
||||||
panelappareils.cpp \
|
panelappareils.cpp \
|
||||||
qetapp.cpp \
|
qetapp.cpp \
|
||||||
schema.cpp \
|
diagram.cpp \
|
||||||
schemavue.cpp
|
diagramview.cpp
|
||||||
RESOURCES += qelectrotech.qrc
|
RESOURCES += qelectrotech.qrc
|
||||||
TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts
|
TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts
|
||||||
QT += xml
|
QT += xml
|
||||||
|
|||||||
193
qetapp.cpp
193
qetapp.cpp
@@ -1,10 +1,9 @@
|
|||||||
#include "qetapp.h"
|
#include "qetapp.h"
|
||||||
#include "schemavue.h"
|
#include "diagramview.h"
|
||||||
#include "schema.h"
|
#include "diagram.h"
|
||||||
#include "panelappareils.h"
|
#include "panelappareils.h"
|
||||||
#include "aboutqet.h"
|
#include "aboutqet.h"
|
||||||
#include "exportdialog.h"
|
#include "exportdialog.h"
|
||||||
// #include "borderinset.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
constructeur
|
constructeur
|
||||||
@@ -21,27 +20,27 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) {
|
|||||||
QStringList args = QCoreApplication::arguments();
|
QStringList args = QCoreApplication::arguments();
|
||||||
|
|
||||||
// recupere les chemins de fichiers parmi les arguments
|
// recupere les chemins de fichiers parmi les arguments
|
||||||
QStringList fichiers;
|
QStringList files;
|
||||||
for (int i = 1 ; i < args.size() ; ++ i) {
|
for (int i = 1 ; i < args.size() ; ++ i) {
|
||||||
if (QFileInfo(args.at(i)).exists()) fichiers << args.at(i);
|
if (QFileInfo(args.at(i)).exists()) files << args.at(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// si des chemins de fichiers valides sont passes en arguments
|
// si des chemins de fichiers valides sont passes en arguments
|
||||||
QList<SchemaVue *> schema_vues;
|
QList<DiagramView *> diagram_views;
|
||||||
if (fichiers.size()) {
|
if (files.size()) {
|
||||||
// alors on ouvre ces fichiers
|
// alors on ouvre ces fichiers
|
||||||
foreach(QString fichier, fichiers) {
|
foreach(QString file, files) {
|
||||||
SchemaVue *sv = new SchemaVue(this);
|
DiagramView *sv = new DiagramView(this);
|
||||||
if (sv -> ouvrir(fichier)) schema_vues << sv;
|
if (sv -> ouvrir(file)) diagram_views << sv;
|
||||||
else delete sv;
|
else delete sv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// si aucun schema n'a ete ouvert jusqu'a maintenant, on ouvre un nouveau schema
|
// si aucun schema n'a ete ouvert jusqu'a maintenant, on ouvre un nouveau schema
|
||||||
if (!schema_vues.size()) schema_vues << new SchemaVue(this);
|
if (!diagram_views.size()) diagram_views << new DiagramView(this);
|
||||||
|
|
||||||
// ajout de tous les SchemaVue necessaires
|
// ajout de tous les DiagramView necessaires
|
||||||
foreach (SchemaVue *sv, schema_vues) addSchemaVue(sv);
|
foreach (DiagramView *sv, diagram_views) addDiagramView(sv);
|
||||||
|
|
||||||
// titre de la fenetre
|
// titre de la fenetre
|
||||||
setWindowTitle(tr("QElectroTech"));
|
setWindowTitle(tr("QElectroTech"));
|
||||||
@@ -75,7 +74,7 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) {
|
|||||||
qsti -> setToolTip(tr("QElectroTech"));
|
qsti -> setToolTip(tr("QElectroTech"));
|
||||||
connect(qsti, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systray(QSystemTrayIcon::ActivationReason)));
|
connect(qsti, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systray(QSystemTrayIcon::ActivationReason)));
|
||||||
menu_systray = new QMenu(tr("QElectroTech"));
|
menu_systray = new QMenu(tr("QElectroTech"));
|
||||||
menu_systray -> addAction(masquer_appli);
|
menu_systray -> addAction(reduce_appli);
|
||||||
menu_systray -> addAction(quitter_qet);
|
menu_systray -> addAction(quitter_qet);
|
||||||
qsti -> setContextMenu(menu_systray);
|
qsti -> setContextMenu(menu_systray);
|
||||||
qsti -> show();
|
qsti -> show();
|
||||||
@@ -95,9 +94,9 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) {
|
|||||||
Gere les evenements relatifs au QSystemTrayIcon
|
Gere les evenements relatifs au QSystemTrayIcon
|
||||||
@param raison un entier representant l'evenement survenu sur le systray
|
@param raison un entier representant l'evenement survenu sur le systray
|
||||||
*/
|
*/
|
||||||
void QETApp::systray(QSystemTrayIcon::ActivationReason raison) {
|
void QETApp::systray(QSystemTrayIcon::ActivationReason reason) {
|
||||||
if (!QSystemTrayIcon::isSystemTrayAvailable()) return;
|
if (!QSystemTrayIcon::isSystemTrayAvailable()) return;
|
||||||
switch(raison) {
|
switch(reason) {
|
||||||
case QSystemTrayIcon::Context:
|
case QSystemTrayIcon::Context:
|
||||||
// affichage du menu
|
// affichage du menu
|
||||||
(qsti -> contextMenu()) -> show();
|
(qsti -> contextMenu()) -> show();
|
||||||
@@ -105,7 +104,7 @@ void QETApp::systray(QSystemTrayIcon::ActivationReason raison) {
|
|||||||
case QSystemTrayIcon::DoubleClick:
|
case QSystemTrayIcon::DoubleClick:
|
||||||
case QSystemTrayIcon::Trigger:
|
case QSystemTrayIcon::Trigger:
|
||||||
// reduction ou restauration de l'application
|
// reduction ou restauration de l'application
|
||||||
if (isVisible()) systrayReduire(); else systrayRestaurer();
|
if (isVisible()) systrayReduce(); else systrayRestore();
|
||||||
break;
|
break;
|
||||||
case QSystemTrayIcon::Unknown:
|
case QSystemTrayIcon::Unknown:
|
||||||
default: // ne rien faire
|
default: // ne rien faire
|
||||||
@@ -116,27 +115,27 @@ void QETApp::systray(QSystemTrayIcon::ActivationReason raison) {
|
|||||||
/**
|
/**
|
||||||
Reduit l'application dans le systray
|
Reduit l'application dans le systray
|
||||||
*/
|
*/
|
||||||
void QETApp::systrayReduire() {
|
void QETApp::systrayReduce() {
|
||||||
// on sauvegarde la position et les dimensions de l'application
|
// on sauvegarde la position et les dimensions de l'application
|
||||||
wg = saveGeometry();
|
wg = saveGeometry();
|
||||||
// on cache l'application
|
// on cache l'application
|
||||||
hide();
|
hide();
|
||||||
// on ajoute le menu "Restaurer" et on enlève le menu "Masquer"
|
// on ajoute le menu "Restaurer" et on enleve le menu "Masquer"
|
||||||
menu_systray -> insertAction(masquer_appli, restaurer_appli);
|
menu_systray -> insertAction(reduce_appli, restore_appli);
|
||||||
menu_systray -> removeAction(masquer_appli);
|
menu_systray -> removeAction(reduce_appli);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Restaure l'application reduite dans le systray
|
Restaure l'application reduite dans le systray
|
||||||
*/
|
*/
|
||||||
void QETApp::systrayRestaurer() {
|
void QETApp::systrayRestore() {
|
||||||
// on restaure la position et les dimensions de l'application
|
// on restaure la position et les dimensions de l'application
|
||||||
restoreGeometry(wg);
|
restoreGeometry(wg);
|
||||||
// on affiche l'application
|
// on affiche l'application
|
||||||
show();
|
show();
|
||||||
// on ajoute le menu "Masquer" et on enlève le menu "Restaurer"
|
// on ajoute le menu "Masquer" et on enleve le menu "Restaurer"
|
||||||
menu_systray -> insertAction(restaurer_appli, masquer_appli);
|
menu_systray -> insertAction(restore_appli, reduce_appli);
|
||||||
menu_systray -> removeAction(restaurer_appli);
|
menu_systray -> removeAction(restore_appli);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -144,20 +143,20 @@ void QETApp::systrayRestaurer() {
|
|||||||
@param qce Le QCloseEvent correspondant a l'evenement de fermeture
|
@param qce Le QCloseEvent correspondant a l'evenement de fermeture
|
||||||
*/
|
*/
|
||||||
void QETApp::closeEvent(QCloseEvent *qce) {
|
void QETApp::closeEvent(QCloseEvent *qce) {
|
||||||
quitter(qce);
|
quit(qce);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Gere la sortie de l'application
|
Gere la sortie de l'application
|
||||||
@param e Le QCloseEvent correspondant a l'evenement de fermeture
|
@param e Le QCloseEvent correspondant a l'evenement de fermeture
|
||||||
*/
|
*/
|
||||||
void QETApp::quitter(QCloseEvent *e) {
|
void QETApp::quit(QCloseEvent *e) {
|
||||||
// quitte directement s'il n'y a aucun schema ouvert
|
// quitte directement s'il n'y a aucun schema ouvert
|
||||||
bool peut_quitter = true;
|
bool peut_quitter = true;
|
||||||
if (schemaEnCours()) {
|
if (diagramEnCours()) {
|
||||||
// sinon demande la permission de fermer chaque schema
|
// sinon demande la permission de fermer chaque schema
|
||||||
foreach(QWidget *fenetre, workspace.windowList()) {
|
foreach(QWidget *fenetre, workspace.windowList()) {
|
||||||
if (qobject_cast<SchemaVue *>(fenetre)) {
|
if (qobject_cast<DiagramView *>(fenetre)) {
|
||||||
workspace.setActiveWindow(fenetre);
|
workspace.setActiveWindow(fenetre);
|
||||||
if (!fermer()) {
|
if (!fermer()) {
|
||||||
peut_quitter = false;
|
peut_quitter = false;
|
||||||
@@ -181,10 +180,10 @@ void QETApp::toggleFullScreen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Active ou desactive l'antialiasing sur le rendu graphique du Schema
|
Active ou desactive l'antialiasing sur le rendu graphique du Diagram
|
||||||
*/
|
*/
|
||||||
void QETApp::toggleAntialiasing() {
|
void QETApp::toggleAntialiasing() {
|
||||||
SchemaVue *sv = schemaEnCours();
|
DiagramView *sv = diagramEnCours();
|
||||||
if (!sv) return;
|
if (!sv) return;
|
||||||
sv -> setAntialiasing(!sv -> antialiased());
|
sv -> setAntialiasing(!sv -> antialiased());
|
||||||
toggle_aa -> setText(sv -> antialiased() ? tr("D\351sactiver l'&antialiasing") : tr("Activer l'&antialiasing"));
|
toggle_aa -> setText(sv -> antialiased() ? tr("D\351sactiver l'&antialiasing") : tr("Activer l'&antialiasing"));
|
||||||
@@ -227,7 +226,7 @@ void QETApp::actions() {
|
|||||||
sel_inverse = new QAction( tr("Inverser la s\351lection"), this);
|
sel_inverse = new QAction( tr("Inverser la s\351lection"), this);
|
||||||
supprimer = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer"), this);
|
supprimer = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer"), this);
|
||||||
pivoter = new QAction(QIcon(":/ico/pivoter.png"), tr("Pivoter"), this);
|
pivoter = new QAction(QIcon(":/ico/pivoter.png"), tr("Pivoter"), this);
|
||||||
infos_schema = new QAction(QIcon(":/ico/info.png"), tr("Informations sur le sch\351ma"), this);
|
infos_diagram = new QAction(QIcon(":/ico/info.png"), tr("Informations sur le sch\351ma"), this);
|
||||||
add_column = new QAction( tr("Ajouter une colonne"), this);
|
add_column = new QAction( tr("Ajouter une colonne"), this);
|
||||||
remove_column = new QAction( tr("Enlever une colonne"), this);
|
remove_column = new QAction( tr("Enlever une colonne"), this);
|
||||||
|
|
||||||
@@ -246,19 +245,19 @@ void QETApp::actions() {
|
|||||||
|
|
||||||
f_mosaique = new QAction( tr("&Mosa\357que"), this);
|
f_mosaique = new QAction( tr("&Mosa\357que"), this);
|
||||||
f_cascade = new QAction( tr("&Cascade"), this);
|
f_cascade = new QAction( tr("&Cascade"), this);
|
||||||
f_reorganise = new QAction( tr("Arranger les fen\352tres réduites"),this);
|
f_reorganise = new QAction( tr("Arranger les fen\352tres r\351duites"), this);
|
||||||
f_suiv = new QAction( tr("Fen\352tre suivante"), this);
|
f_suiv = new QAction( tr("Fen\352tre suivante"), this);
|
||||||
f_prec = new QAction( tr("Fen\352tre pr\351c\351dente"), this);
|
f_prec = new QAction( tr("Fen\352tre pr\351c\351dente"), this);
|
||||||
|
|
||||||
a_propos_de_qet = new QAction(QIcon(":/ico/qet.png"), tr("\300 &propos de QElectroTech"), this);
|
a_propos_de_qet = new QAction(QIcon(":/ico/qet.png"), tr("\300 &propos de QElectroTech"), this);
|
||||||
a_propos_de_qt = new QAction(QIcon(":/ico/qt.png"), tr("\300 propos de &Qt"), this);
|
a_propos_de_qt = new QAction(QIcon(":/ico/qt.png"), tr("\300 propos de &Qt"), this);
|
||||||
|
|
||||||
masquer_appli = new QAction(QIcon(":/ico/masquer.png"), tr("&Masquer"), this);
|
reduce_appli = new QAction(QIcon(":/ico/masquer.png"), tr("&Masquer"), this);
|
||||||
restaurer_appli = new QAction(QIcon(":/ico/restaurer.png"), tr("&Restaurer"), this);
|
restore_appli = new QAction(QIcon(":/ico/restaurer.png"), tr("&Restaurer"), this);
|
||||||
|
|
||||||
// info-bulles
|
// info-bulles
|
||||||
masquer_appli -> setToolTip(tr("Reduire QElectroTech dans le systray"));
|
reduce_appli -> setToolTip(tr("Reduire QElectroTech dans le systray"));
|
||||||
restaurer_appli -> setToolTip(tr("Restaurer QElectroTech"));
|
restore_appli -> setToolTip(tr("Restaurer QElectroTech"));
|
||||||
|
|
||||||
// raccourcis clavier
|
// raccourcis clavier
|
||||||
nouveau_fichier -> setShortcut(QKeySequence::New);
|
nouveau_fichier -> setShortcut(QKeySequence::New);
|
||||||
@@ -310,7 +309,7 @@ void QETApp::actions() {
|
|||||||
sel_inverse -> setStatusTip(tr("D\351s\351lectionne les \351l\351ments s\351lectionn\351s et s\351lectionne les \351l\351ments non s\351lectionn\351s"));
|
sel_inverse -> setStatusTip(tr("D\351s\351lectionne les \351l\351ments s\351lectionn\351s et s\351lectionne les \351l\351ments non s\351lectionn\351s"));
|
||||||
supprimer -> setStatusTip(tr("Enl\350ve les \351l\351ments s\351lectionn\351s du sch\351ma"));
|
supprimer -> setStatusTip(tr("Enl\350ve les \351l\351ments s\351lectionn\351s du sch\351ma"));
|
||||||
pivoter -> setStatusTip(tr("Pivote les \351l\351ments s\351lectionn\351s"));
|
pivoter -> setStatusTip(tr("Pivote les \351l\351ments s\351lectionn\351s"));
|
||||||
infos_schema -> setStatusTip(tr("\311dite les informations affich\351es par le cartouche"));
|
infos_diagram -> setStatusTip(tr("\311dite les informations affich\351es par le cartouche"));
|
||||||
add_column -> setStatusTip(tr("Ajoute une colonne au sch\351ma"));
|
add_column -> setStatusTip(tr("Ajoute une colonne au sch\351ma"));
|
||||||
remove_column -> setStatusTip(tr("Enl\350ve une colonne au sch\351ma"));
|
remove_column -> setStatusTip(tr("Enl\350ve une colonne au sch\351ma"));
|
||||||
|
|
||||||
@@ -329,7 +328,7 @@ void QETApp::actions() {
|
|||||||
|
|
||||||
f_mosaique -> setStatusTip(tr("Dispose les fen\352tres en mosa\357que"));
|
f_mosaique -> setStatusTip(tr("Dispose les fen\352tres en mosa\357que"));
|
||||||
f_cascade -> setStatusTip(tr("Dispose les fen\352tres en cascade"));
|
f_cascade -> setStatusTip(tr("Dispose les fen\352tres en cascade"));
|
||||||
f_reorganise -> setStatusTip(tr("Aligne les fen\352tres réduites"));
|
f_reorganise -> setStatusTip(tr("Aligne les fen\352tres r\351duites"));
|
||||||
f_suiv -> setStatusTip(tr("Active la fen\352tre suivante"));
|
f_suiv -> setStatusTip(tr("Active la fen\352tre suivante"));
|
||||||
f_prec -> setStatusTip(tr("Active la fen\352tre pr\351c\351dente"));
|
f_prec -> setStatusTip(tr("Active la fen\352tre pr\351c\351dente"));
|
||||||
|
|
||||||
@@ -347,7 +346,7 @@ void QETApp::actions() {
|
|||||||
grp_visu_sel -> setExclusive(true);
|
grp_visu_sel -> setExclusive(true);
|
||||||
|
|
||||||
// connexion a des slots
|
// connexion a des slots
|
||||||
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(quitter()) );
|
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(quit()) );
|
||||||
connect(sel_tout, SIGNAL(triggered()), this, SLOT(slot_selectAll()) );
|
connect(sel_tout, SIGNAL(triggered()), this, SLOT(slot_selectAll()) );
|
||||||
connect(sel_rien, SIGNAL(triggered()), this, SLOT(slot_selectNothing()) );
|
connect(sel_rien, SIGNAL(triggered()), this, SLOT(slot_selectNothing()) );
|
||||||
connect(sel_inverse, SIGNAL(triggered()), this, SLOT(slot_selectInvert()) );
|
connect(sel_inverse, SIGNAL(triggered()), this, SLOT(slot_selectInvert()) );
|
||||||
@@ -359,8 +358,8 @@ void QETApp::actions() {
|
|||||||
connect(mode_visualise, SIGNAL(triggered()), this, SLOT(slot_setVisualisationMode()));
|
connect(mode_visualise, SIGNAL(triggered()), this, SLOT(slot_setVisualisationMode()));
|
||||||
connect(a_propos_de_qet, SIGNAL(triggered()), this, SLOT(aPropos()) );
|
connect(a_propos_de_qet, SIGNAL(triggered()), this, SLOT(aPropos()) );
|
||||||
connect(a_propos_de_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) );
|
connect(a_propos_de_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) );
|
||||||
connect(masquer_appli, SIGNAL(triggered()), this, SLOT(systrayReduire ()) );
|
connect(reduce_appli, SIGNAL(triggered()), this, SLOT(systrayReduce()) );
|
||||||
connect(restaurer_appli, SIGNAL(triggered()), this, SLOT(systrayRestaurer()) );
|
connect(restore_appli, SIGNAL(triggered()), this, SLOT(systrayRestore()) );
|
||||||
connect(zoom_avant, SIGNAL(triggered()), this, SLOT(slot_zoomPlus()) );
|
connect(zoom_avant, SIGNAL(triggered()), this, SLOT(slot_zoomPlus()) );
|
||||||
connect(zoom_arriere, SIGNAL(triggered()), this, SLOT(slot_zoomMoins()) );
|
connect(zoom_arriere, SIGNAL(triggered()), this, SLOT(slot_zoomMoins()) );
|
||||||
connect(zoom_adapte, SIGNAL(triggered()), this, SLOT(slot_zoomFit()) );
|
connect(zoom_adapte, SIGNAL(triggered()), this, SLOT(slot_zoomFit()) );
|
||||||
@@ -381,7 +380,7 @@ void QETApp::actions() {
|
|||||||
connect(f_reorganise, SIGNAL(triggered()), &workspace, SLOT(arrangeIcons()) );
|
connect(f_reorganise, SIGNAL(triggered()), &workspace, SLOT(arrangeIcons()) );
|
||||||
connect(f_suiv, SIGNAL(triggered()), &workspace, SLOT(activateNextWindow()) );
|
connect(f_suiv, SIGNAL(triggered()), &workspace, SLOT(activateNextWindow()) );
|
||||||
connect(f_prec, SIGNAL(triggered()), &workspace, SLOT(activatePreviousWindow()) );
|
connect(f_prec, SIGNAL(triggered()), &workspace, SLOT(activatePreviousWindow()) );
|
||||||
connect(infos_schema, SIGNAL(activated()), this, SLOT(editInfos()) );
|
connect(infos_diagram, SIGNAL(activated()), this, SLOT(editInfos()) );
|
||||||
connect(add_column, SIGNAL(activated()), this, SLOT(slot_addColumn()) );
|
connect(add_column, SIGNAL(activated()), this, SLOT(slot_addColumn()) );
|
||||||
connect(remove_column, SIGNAL(activated()), this, SLOT(slot_removeColumn()) );
|
connect(remove_column, SIGNAL(activated()), this, SLOT(slot_removeColumn()) );
|
||||||
}
|
}
|
||||||
@@ -435,7 +434,7 @@ void QETApp::menus() {
|
|||||||
menu_edition -> addAction(supprimer);
|
menu_edition -> addAction(supprimer);
|
||||||
menu_edition -> addAction(pivoter);
|
menu_edition -> addAction(pivoter);
|
||||||
menu_edition -> addSeparator();
|
menu_edition -> addSeparator();
|
||||||
menu_edition -> addAction(infos_schema);
|
menu_edition -> addAction(infos_diagram);
|
||||||
menu_edition -> addAction(add_column);
|
menu_edition -> addAction(add_column);
|
||||||
menu_edition -> addAction(remove_column);
|
menu_edition -> addAction(remove_column);
|
||||||
|
|
||||||
@@ -465,7 +464,7 @@ void QETApp::menus() {
|
|||||||
menu_config -> addAction(entrer_pe);
|
menu_config -> addAction(entrer_pe);
|
||||||
menu_config -> addAction(configurer);
|
menu_config -> addAction(configurer);
|
||||||
|
|
||||||
// menu Fenêtres
|
// menu Fenetres
|
||||||
slot_updateMenuFenetres();
|
slot_updateMenuFenetres();
|
||||||
|
|
||||||
// menu Aide
|
// menu Aide
|
||||||
@@ -514,7 +513,7 @@ void QETApp::dialogue_imprimer() {
|
|||||||
|
|
||||||
if (qpd.exec() == QDialog::Accepted) {
|
if (qpd.exec() == QDialog::Accepted) {
|
||||||
QPainter qp(&qprin);
|
QPainter qp(&qprin);
|
||||||
Schema *sc = schemaEnCours() -> scene;
|
Diagram *sc = diagramEnCours() -> scene;
|
||||||
sc -> setAffichageGrille(false);
|
sc -> setAffichageGrille(false);
|
||||||
sc -> render(&qp);
|
sc -> render(&qp);
|
||||||
sc -> setAffichageGrille(true);
|
sc -> setAffichageGrille(true);
|
||||||
@@ -525,7 +524,7 @@ void QETApp::dialogue_imprimer() {
|
|||||||
Gere l'export de schema vers un autre format (PNG pour le moment)
|
Gere l'export de schema vers un autre format (PNG pour le moment)
|
||||||
*/
|
*/
|
||||||
void QETApp::dialogue_exporter() {
|
void QETApp::dialogue_exporter() {
|
||||||
Schema *sc = schemaEnCours() -> scene;
|
Diagram *sc = diagramEnCours() -> scene;
|
||||||
ExportDialog ed(*sc);
|
ExportDialog ed(*sc);
|
||||||
ed.exec();
|
ed.exec();
|
||||||
}
|
}
|
||||||
@@ -536,8 +535,8 @@ void QETApp::dialogue_exporter() {
|
|||||||
@return true si l'enregistrement a reussi, false sinon
|
@return true si l'enregistrement a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool QETApp::enregistrer() {
|
bool QETApp::enregistrer() {
|
||||||
if (!schemaEnCours()) return(false);
|
if (!diagramEnCours()) return(false);
|
||||||
return(schemaEnCours() -> enregistrer());
|
return(diagramEnCours() -> enregistrer());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -550,8 +549,8 @@ bool QETApp::enregistrer() {
|
|||||||
@todo detecter le chemin du bureau automatiquement
|
@todo detecter le chemin du bureau automatiquement
|
||||||
*/
|
*/
|
||||||
bool QETApp::dialogue_enregistrer_sous() {
|
bool QETApp::dialogue_enregistrer_sous() {
|
||||||
if (!schemaEnCours()) return(false);
|
if (!diagramEnCours()) return(false);
|
||||||
return(schemaEnCours() -> enregistrer_sous());
|
return(diagramEnCours() -> enregistrer_sous());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -559,7 +558,7 @@ bool QETApp::dialogue_enregistrer_sous() {
|
|||||||
@return true si tout s'est bien passe ; false si vous executez cette fonction dans un univers non cartesien (en fait y'a pas de return(false) :p)
|
@return true si tout s'est bien passe ; false si vous executez cette fonction dans un univers non cartesien (en fait y'a pas de return(false) :p)
|
||||||
*/
|
*/
|
||||||
bool QETApp::nouveau() {
|
bool QETApp::nouveau() {
|
||||||
addSchemaVue(new SchemaVue(this));
|
addDiagramView(new DiagramView(this));
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -573,14 +572,14 @@ bool QETApp::ouvrir() {
|
|||||||
this,
|
this,
|
||||||
tr("Ouvrir un fichier"),
|
tr("Ouvrir un fichier"),
|
||||||
QDir::homePath(),
|
QDir::homePath(),
|
||||||
tr("Schema QelectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*)")
|
tr("Diagram QelectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*)")
|
||||||
);
|
);
|
||||||
if (nom_fichier == "") return(false);
|
if (nom_fichier == "") return(false);
|
||||||
|
|
||||||
// verifie que le fichier n'est pas deja ouvert
|
// verifie que le fichier n'est pas deja ouvert
|
||||||
QString chemin_fichier = QFileInfo(nom_fichier).canonicalFilePath();
|
QString chemin_fichier = QFileInfo(nom_fichier).canonicalFilePath();
|
||||||
foreach (QWidget *fenetre, workspace.windowList()) {
|
foreach (QWidget *fenetre, workspace.windowList()) {
|
||||||
SchemaVue *fenetre_en_cours = qobject_cast<SchemaVue *>(fenetre);
|
DiagramView *fenetre_en_cours = qobject_cast<DiagramView *>(fenetre);
|
||||||
if (QFileInfo(fenetre_en_cours -> nom_fichier).canonicalFilePath() == chemin_fichier) {
|
if (QFileInfo(fenetre_en_cours -> nom_fichier).canonicalFilePath() == chemin_fichier) {
|
||||||
workspace.setActiveWindow(fenetre);
|
workspace.setActiveWindow(fenetre);
|
||||||
return(false);
|
return(false);
|
||||||
@@ -588,10 +587,10 @@ bool QETApp::ouvrir() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ouvre le fichier
|
// ouvre le fichier
|
||||||
SchemaVue *sv = new SchemaVue(this);
|
DiagramView *sv = new DiagramView(this);
|
||||||
int code_erreur;
|
int code_erreur;
|
||||||
if (sv -> ouvrir(nom_fichier, &code_erreur)) {
|
if (sv -> ouvrir(nom_fichier, &code_erreur)) {
|
||||||
addSchemaVue(sv);
|
addDiagramView(sv);
|
||||||
return(true);
|
return(true);
|
||||||
} else {
|
} else {
|
||||||
QString message_erreur;
|
QString message_erreur;
|
||||||
@@ -613,123 +612,123 @@ bool QETApp::ouvrir() {
|
|||||||
@todo detecter les modifications et ne demander que si besoin est
|
@todo detecter les modifications et ne demander que si besoin est
|
||||||
*/
|
*/
|
||||||
bool QETApp::fermer() {
|
bool QETApp::fermer() {
|
||||||
SchemaVue *sv = schemaEnCours();
|
DiagramView *sv = diagramEnCours();
|
||||||
if (!sv) return(false);
|
if (!sv) return(false);
|
||||||
bool fermeture_schema = sv -> close();
|
bool fermeture_diagram = sv -> close();
|
||||||
if (fermeture_schema) delete sv;
|
if (fermeture_diagram) delete sv;
|
||||||
return(fermeture_schema);
|
return(fermeture_diagram);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return Le SchemaVue qui a le focus dans l'interface MDI
|
@return Le DiagramView qui a le focus dans l'interface MDI
|
||||||
*/
|
*/
|
||||||
SchemaVue *QETApp::schemaEnCours() {
|
DiagramView *QETApp::diagramEnCours() {
|
||||||
return(qobject_cast<SchemaVue *>(workspace.activeWindow()));
|
return(qobject_cast<DiagramView *>(workspace.activeWindow()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "couper" sur le schema en cours
|
Effectue l'action "couper" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_couper() {
|
void QETApp::slot_couper() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> couper();
|
if(diagramEnCours()) diagramEnCours() -> couper();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "copier" sur le schema en cours
|
Effectue l'action "copier" sur le diagram en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_copier() {
|
void QETApp::slot_copier() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> copier();
|
if(diagramEnCours()) diagramEnCours() -> copier();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "coller" sur le schema en cours
|
Effectue l'action "coller" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_coller() {
|
void QETApp::slot_coller() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> coller();
|
if(diagramEnCours()) diagramEnCours() -> coller();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "zoom avant" sur le schema en cours
|
Effectue l'action "zoom avant" sur le diagram en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_zoomPlus() {
|
void QETApp::slot_zoomPlus() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> zoomPlus();
|
if(diagramEnCours()) diagramEnCours() -> zoomPlus();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "zoom arriere" sur le schema en cours
|
Effectue l'action "zoom arriere" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_zoomMoins() {
|
void QETApp::slot_zoomMoins() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> zoomMoins();
|
if(diagramEnCours()) diagramEnCours() -> zoomMoins();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "zoom arriere" sur le schema en cours
|
Effectue l'action "zoom arriere" sur le diagram en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_zoomFit() {
|
void QETApp::slot_zoomFit() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> zoomFit();
|
if(diagramEnCours()) diagramEnCours() -> zoomFit();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "zoom par defaut" sur le schema en cours
|
Effectue l'action "zoom par defaut" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_zoomReset() {
|
void QETApp::slot_zoomReset() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> zoomReset();
|
if(diagramEnCours()) diagramEnCours() -> zoomReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "selectionner tout" sur le schema en cours
|
Effectue l'action "selectionner tout" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_selectAll() {
|
void QETApp::slot_selectAll() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> selectAll();
|
if(diagramEnCours()) diagramEnCours() -> selectAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "deselectionenr tout" sur le schema en cours
|
Effectue l'action "deselectionenr tout" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_selectNothing() {
|
void QETApp::slot_selectNothing() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> selectNothing();
|
if(diagramEnCours()) diagramEnCours() -> selectNothing();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "inverser la selection" sur le schema en cours
|
Effectue l'action "inverser la selection" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_selectInvert() {
|
void QETApp::slot_selectInvert() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> selectInvert();
|
if(diagramEnCours()) diagramEnCours() -> selectInvert();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "supprimer" sur le schema en cours
|
Effectue l'action "supprimer" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_supprimer() {
|
void QETApp::slot_supprimer() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> supprimer();
|
if(diagramEnCours()) diagramEnCours() -> supprimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "pivoter" sur le schema en cours
|
Effectue l'action "pivoter" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_pivoter() {
|
void QETApp::slot_pivoter() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> pivoter();
|
if(diagramEnCours()) diagramEnCours() -> pivoter();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "mode selection" sur le schema en cours
|
Effectue l'action "mode selection" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_setSelectionMode() {
|
void QETApp::slot_setSelectionMode() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> setSelectionMode();
|
if(diagramEnCours()) diagramEnCours() -> setSelectionMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Effectue l'action "mode visualisation" sur le schema en cours
|
Effectue l'action "mode visualisation" sur le schema en cours
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_setVisualisationMode() {
|
void QETApp::slot_setVisualisationMode() {
|
||||||
if(schemaEnCours()) schemaEnCours() -> setVisualisationMode();
|
if(diagramEnCours()) diagramEnCours() -> setVisualisationMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
gere les actions ayant besoin d'un document ouvert
|
gere les actions ayant besoin d'un document ouvert
|
||||||
*/
|
*/
|
||||||
void QETApp::slot_updateActions() {
|
void QETApp::slot_updateActions() {
|
||||||
SchemaVue *sv = schemaEnCours();
|
DiagramView *sv = diagramEnCours();
|
||||||
bool document_ouvert = (sv != 0);
|
bool document_ouvert = (sv != 0);
|
||||||
|
|
||||||
// actions ayant juste besoin d'un document ouvert
|
// actions ayant juste besoin d'un document ouvert
|
||||||
@@ -747,7 +746,7 @@ void QETApp::slot_updateActions() {
|
|||||||
zoom_adapte -> setEnabled(document_ouvert);
|
zoom_adapte -> setEnabled(document_ouvert);
|
||||||
zoom_reset -> setEnabled(document_ouvert);
|
zoom_reset -> setEnabled(document_ouvert);
|
||||||
toggle_aa -> setEnabled(document_ouvert);
|
toggle_aa -> setEnabled(document_ouvert);
|
||||||
infos_schema -> setEnabled(document_ouvert);
|
infos_diagram -> setEnabled(document_ouvert);
|
||||||
|
|
||||||
// actions ayant aussi besoin d'un historique des actions
|
// actions ayant aussi besoin d'un historique des actions
|
||||||
annuler -> setEnabled(document_ouvert);
|
annuler -> setEnabled(document_ouvert);
|
||||||
@@ -797,15 +796,21 @@ void QETApp::slot_updateActions() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Ajoute un schema dans l'espace de travail
|
Ajoute un schema dans l'espace de travail
|
||||||
@param sv L'objet SchemaVue a ajouter a l'espace de travail
|
@param sv L'objet DiagramView a ajouter a l'espace de travail
|
||||||
*/
|
*/
|
||||||
void QETApp::addSchemaVue(SchemaVue *sv) {
|
void QETApp::addDiagramView(DiagramView *sv) {
|
||||||
if (!sv) return;
|
if (!sv) return;
|
||||||
SchemaVue *s_v = schemaEnCours();
|
|
||||||
|
// on maximise la nouvelle fenetre si la fenetre en cours est inexistante ou bien maximisee
|
||||||
|
DiagramView *s_v = diagramEnCours();
|
||||||
bool maximise = ((!s_v) || (s_v -> windowState() & Qt::WindowMaximized));
|
bool maximise = ((!s_v) || (s_v -> windowState() & Qt::WindowMaximized));
|
||||||
|
|
||||||
|
// ajoute la fenetre
|
||||||
QWidget *p = workspace.addWindow(sv);
|
QWidget *p = workspace.addWindow(sv);
|
||||||
connect(sv, SIGNAL(selectionChanged()), this, SLOT(slot_updateActions()));
|
connect(sv, SIGNAL(selectionChanged()), this, SLOT(slot_updateActions()));
|
||||||
connect(sv, SIGNAL(modeChanged()), this, SLOT(slot_updateActions()));
|
connect(sv, SIGNAL(modeChanged()), this, SLOT(slot_updateActions()));
|
||||||
|
|
||||||
|
// affiche la fenetre
|
||||||
if (maximise) p -> showMaximized();
|
if (maximise) p -> showMaximized();
|
||||||
else p -> show();
|
else p -> show();
|
||||||
}
|
}
|
||||||
@@ -836,12 +841,12 @@ void QETApp::slot_updateMenuFenetres() {
|
|||||||
QList<QWidget *> fenetres = workspace.windowList();
|
QList<QWidget *> fenetres = workspace.windowList();
|
||||||
if (!fenetres.isEmpty()) menu_fenetres -> addSeparator();
|
if (!fenetres.isEmpty()) menu_fenetres -> addSeparator();
|
||||||
for (int i = 0 ; i < fenetres.size() ; ++ i) {
|
for (int i = 0 ; i < fenetres.size() ; ++ i) {
|
||||||
SchemaVue *sv = qobject_cast<SchemaVue *>(fenetres.at(i));
|
DiagramView *sv = qobject_cast<DiagramView *>(fenetres.at(i));
|
||||||
QString sv_titre = sv -> windowTitle().left(sv -> windowTitle().length() - 3);
|
QString sv_titre = sv -> windowTitle().left(sv -> windowTitle().length() - 3);
|
||||||
QAction *action = menu_fenetres -> addAction(sv_titre);
|
QAction *action = menu_fenetres -> addAction(sv_titre);
|
||||||
action -> setStatusTip(tr("Active la fen\352tre ") + sv_titre);
|
action -> setStatusTip(tr("Active la fen\352tre ") + sv_titre);
|
||||||
action -> setCheckable(true);
|
action -> setCheckable(true);
|
||||||
action -> setChecked(sv == schemaEnCours());
|
action -> setChecked(sv == diagramEnCours());
|
||||||
connect(action, SIGNAL(triggered()), &windowMapper, SLOT(map()));
|
connect(action, SIGNAL(triggered()), &windowMapper, SLOT(map()));
|
||||||
windowMapper.setMapping(action, sv);
|
windowMapper.setMapping(action, sv);
|
||||||
}
|
}
|
||||||
@@ -871,7 +876,7 @@ QString QETApp::customElementsDir() {
|
|||||||
lequel QET lira les informations de configuration et de personnalisation
|
lequel QET lira les informations de configuration et de personnalisation
|
||||||
propres a l'utilisateur courant. Ce dossier est generalement
|
propres a l'utilisateur courant. Ce dossier est generalement
|
||||||
C:\Documents And Settings\utilisateur\Application Data\qet sous Windows et
|
C:\Documents And Settings\utilisateur\Application Data\qet sous Windows et
|
||||||
~/.qet sous les systèmes type UNIX.
|
~/.qet sous les systemes type UNIX.
|
||||||
@return Le chemin du dossier de configuration de QElectroTech
|
@return Le chemin du dossier de configuration de QElectroTech
|
||||||
*/
|
*/
|
||||||
QString QETApp::configDir() {
|
QString QETApp::configDir() {
|
||||||
@@ -929,7 +934,7 @@ QString QETApp::languagesPath() {
|
|||||||
|
|
||||||
void QETApp::editInfos() {
|
void QETApp::editInfos() {
|
||||||
// ne fait rien s'il n'y a pas de schema ouvert
|
// ne fait rien s'il n'y a pas de schema ouvert
|
||||||
SchemaVue *sv = schemaEnCours();
|
DiagramView *sv = diagramEnCours();
|
||||||
if (!sv) return;
|
if (!sv) return;
|
||||||
|
|
||||||
// recupere le cartouche du schema
|
// recupere le cartouche du schema
|
||||||
@@ -942,9 +947,9 @@ void QETApp::editInfos() {
|
|||||||
|
|
||||||
QLineEdit *titre = new QLineEdit(inset -> title(), &popup);
|
QLineEdit *titre = new QLineEdit(inset -> title(), &popup);
|
||||||
QLineEdit *auteur = new QLineEdit(inset -> author(), &popup);
|
QLineEdit *auteur = new QLineEdit(inset -> author(), &popup);
|
||||||
QDate date_schema = QDate(inset -> date());
|
QDate date_diagram = QDate(inset -> date());
|
||||||
if (date_schema.isNull() || !date_schema.isValid()) date_schema = QDate::currentDate();
|
if (date_diagram.isNull() || !date_diagram.isValid()) date_diagram = QDate::currentDate();
|
||||||
QDateEdit *date = new QDateEdit(date_schema, &popup);
|
QDateEdit *date = new QDateEdit(date_diagram, &popup);
|
||||||
date -> setCalendarPopup(true);
|
date -> setCalendarPopup(true);
|
||||||
QLineEdit *fichier = new QLineEdit(inset -> fileName(), &popup);
|
QLineEdit *fichier = new QLineEdit(inset -> fileName(), &popup);
|
||||||
QLineEdit *folio = new QLineEdit(inset -> folio(), &popup);
|
QLineEdit *folio = new QLineEdit(inset -> folio(), &popup);
|
||||||
@@ -980,7 +985,7 @@ void QETApp::editInfos() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QETApp::slot_addColumn() {
|
void QETApp::slot_addColumn() {
|
||||||
SchemaVue *sv = schemaEnCours();
|
DiagramView *sv = diagramEnCours();
|
||||||
if (!sv) return;
|
if (!sv) return;
|
||||||
|
|
||||||
// ajoute la colonne
|
// ajoute la colonne
|
||||||
@@ -996,7 +1001,7 @@ void QETApp::slot_addColumn() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QETApp::slot_removeColumn() {
|
void QETApp::slot_removeColumn() {
|
||||||
SchemaVue *sv = schemaEnCours();
|
DiagramView *sv = diagramEnCours();
|
||||||
if (!sv) return;
|
if (!sv) return;
|
||||||
sv -> scene -> border_and_inset.removeColumn();
|
sv -> scene -> border_and_inset.removeColumn();
|
||||||
|
|
||||||
|
|||||||
27
qetapp.h
27
qetapp.h
@@ -1,21 +1,21 @@
|
|||||||
#ifndef QETAPP_H
|
#ifndef QETAPP_H
|
||||||
#define QETAPP_H
|
#define QETAPP_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
class SchemaVue;
|
class DiagramView;
|
||||||
class PanelAppareils;
|
class PanelAppareils;
|
||||||
/**
|
/**
|
||||||
Cette classe represente la fenetre principale de QElectroTech et,
|
Cette classe represente la fenetre principale de QElectroTech et,
|
||||||
ipso facto, la plus grande partie de l'interface graphique de QElectroTech.
|
ipso facto, la plus grande partie de l'interface graphique de QElectroTech.
|
||||||
Il s'agit d'un objet QMainWindow avec un QWorkSpace contenant des objets
|
Il s'agit d'un objet QMainWindow avec un QWorkSpace contenant des objets
|
||||||
« Schema » en guise de widget central et un « Panel d'Appareils » en guise
|
« Diagram » en guise de widget central et un « Panel d'Appareils » en guise
|
||||||
de widget « Dock ».
|
de widget « Dock ».
|
||||||
*/
|
*/
|
||||||
class QETApp : public QMainWindow {
|
class QETApp : public QMainWindow {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
QETApp(QWidget *parent=0);
|
QETApp(QWidget * = 0);
|
||||||
void closeEvent(QCloseEvent * event );
|
void closeEvent(QCloseEvent *);
|
||||||
void addSchemaVue(SchemaVue *);
|
void addDiagramView(DiagramView *);
|
||||||
static QString commonElementsDir();
|
static QString commonElementsDir();
|
||||||
static QString customElementsDir();
|
static QString customElementsDir();
|
||||||
static QString configDir();
|
static QString configDir();
|
||||||
@@ -23,10 +23,10 @@
|
|||||||
static QString realPath(QString &);
|
static QString realPath(QString &);
|
||||||
static QString symbolicPath(QString &);
|
static QString symbolicPath(QString &);
|
||||||
public slots:
|
public slots:
|
||||||
void systray(QSystemTrayIcon::ActivationReason raison);
|
void systray(QSystemTrayIcon::ActivationReason);
|
||||||
void systrayReduire();
|
void systrayReduce();
|
||||||
void systrayRestaurer();
|
void systrayRestore();
|
||||||
void quitter(QCloseEvent * = NULL);
|
void quit(QCloseEvent * = NULL);
|
||||||
void toggleFullScreen();
|
void toggleFullScreen();
|
||||||
void toggleAntialiasing();
|
void toggleAntialiasing();
|
||||||
void aPropos();
|
void aPropos();
|
||||||
@@ -63,12 +63,12 @@
|
|||||||
QAction *supprimer;
|
QAction *supprimer;
|
||||||
QAction *selectionner;
|
QAction *selectionner;
|
||||||
QAction *pivoter;
|
QAction *pivoter;
|
||||||
QAction *infos_schema;
|
QAction *infos_diagram;
|
||||||
QAction *add_column;
|
QAction *add_column;
|
||||||
QAction *remove_column;
|
QAction *remove_column;
|
||||||
QAction *poser_fil;
|
QAction *poser_fil;
|
||||||
QAction *masquer_appli;
|
QAction *reduce_appli;
|
||||||
QAction *restaurer_appli;
|
QAction *restore_appli;
|
||||||
QAction *zoom_avant;
|
QAction *zoom_avant;
|
||||||
QAction *zoom_arriere;
|
QAction *zoom_arriere;
|
||||||
QAction *zoom_adapte;
|
QAction *zoom_adapte;
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QWorkspace workspace;
|
QWorkspace workspace;
|
||||||
SchemaVue *schemaEnCours();
|
DiagramView *diagramEnCours();
|
||||||
QSignalMapper windowMapper;
|
QSignalMapper windowMapper;
|
||||||
/// Dock pour le Panel d'Appareils
|
/// Dock pour le Panel d'Appareils
|
||||||
QDockWidget *qdw_pa;
|
QDockWidget *qdw_pa;
|
||||||
@@ -101,7 +101,6 @@
|
|||||||
QMenu *menu_systray;
|
QMenu *menu_systray;
|
||||||
QAction *systray_masquer;
|
QAction *systray_masquer;
|
||||||
QAction * config_fullscreen;
|
QAction * config_fullscreen;
|
||||||
QAction *systray_quitter;
|
|
||||||
QMenu *menu_fenetres;
|
QMenu *menu_fenetres;
|
||||||
/// Icone dans le systray
|
/// Icone dans le systray
|
||||||
QSystemTrayIcon *qsti;
|
QSystemTrayIcon *qsti;
|
||||||
|
|||||||
Reference in New Issue
Block a user