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 "schema.h"
|
||||
#include "diagram.h"
|
||||
#include "element.h"
|
||||
#include "conducteur.h"
|
||||
|
||||
@@ -48,7 +48,7 @@ void Borne::initialise(QPointF pf, Borne::Orientation o) {
|
||||
*/
|
||||
Borne::Borne() : QGraphicsItem(0, 0) {
|
||||
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 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);
|
||||
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 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);
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ void Borne::hoverLeaveEvent(QGraphicsSceneHoverEvent *) {
|
||||
@param e L'evenement souris correspondant
|
||||
*/
|
||||
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 -> setArrivee(e -> scenePos());
|
||||
s -> poseConducteur(true);
|
||||
@@ -246,8 +246,8 @@ void Borne::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
|
||||
borne_precedente -> update();
|
||||
}
|
||||
|
||||
// si la scene est un Schema, on actualise le poseur de conducteur
|
||||
if (Schema *s = qobject_cast<Schema *>(scene())) s -> setArrivee(e -> scenePos());
|
||||
// si la scene est un Diagram, on actualise le poseur de conducteur
|
||||
if (Diagram *s = qobject_cast<Diagram *>(scene())) s -> setArrivee(e -> scenePos());
|
||||
|
||||
// on recupere la liste des qgi sous le pointeur
|
||||
QList<QGraphicsItem *> qgis = scene() -> items(e -> scenePos());
|
||||
@@ -306,8 +306,8 @@ void Borne::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
||||
setCursor(Qt::ArrowCursor);
|
||||
borne_precedente = NULL;
|
||||
couleur_hovered = couleur_neutre;
|
||||
// verifie que la scene est bien un Schema
|
||||
if (Schema *s = qobject_cast<Schema *>(scene())) {
|
||||
// verifie que la scene est bien un Diagram
|
||||
if (Diagram *s = qobject_cast<Diagram *>(scene())) {
|
||||
// on arrete de dessiner l'apercu du conducteur
|
||||
s -> poseConducteur(false);
|
||||
// on recupere l'element sous le pointeur lors du MouseReleaseEvent
|
||||
|
||||
10
borne.h
10
borne.h
@@ -5,7 +5,7 @@
|
||||
#include <QtXml>
|
||||
class Conducteur;
|
||||
class Element;
|
||||
class Schema;
|
||||
class Diagram;
|
||||
/**
|
||||
Classe modelisant la « borne » d'un appareil, c'est-a-dire un
|
||||
branchement possible pour un Conducteur.
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
// constructeurs
|
||||
Borne();
|
||||
Borne(QPointF, Borne::Orientation, Element * = 0, Schema * = 0);
|
||||
Borne(qreal, qreal, Borne::Orientation, Element * = 0, Schema * = 0);
|
||||
Borne(QPointF, Borne::Orientation, Element * = 0, Diagram * = 0);
|
||||
Borne(qreal, qreal, Borne::Orientation, Element * = 0, Diagram * = 0);
|
||||
|
||||
// destructeur
|
||||
~Borne();
|
||||
@@ -57,8 +57,8 @@
|
||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
|
||||
|
||||
private:
|
||||
// pointeur vers la QGraphicsScene de type Schema (evite quelques casts en interne)
|
||||
Schema *schema_scene;
|
||||
// pointeur vers la QGraphicsScene de type Diagram (evite quelques casts en interne)
|
||||
Diagram *diagram_scene;
|
||||
// coordonnees des points d'amarrage
|
||||
QPointF amarrage_conducteur;
|
||||
QPointF amarrage_elmt;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#include <math.h>
|
||||
#include "conducteur.h"
|
||||
#include "elementperso.h"
|
||||
#include "schema.h"
|
||||
#include "diagram.h"
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@param parent Le QObject parent du schema
|
||||
*/
|
||||
Schema::Schema(QObject *parent) : QGraphicsScene(parent) {
|
||||
Diagram::Diagram(QObject *parent) : QGraphicsScene(parent) {
|
||||
setBackgroundBrush(Qt::white);
|
||||
poseur_de_conducteur = new QGraphicsLineItem(0, 0);
|
||||
poseur_de_conducteur -> setZValue(1000000);
|
||||
@@ -26,7 +26,7 @@ Schema::Schema(QObject *parent) : QGraphicsScene(parent) {
|
||||
@param p Le QPainter a utiliser pour 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();
|
||||
|
||||
// desactive tout antialiasing
|
||||
@@ -66,18 +66,18 @@ void Schema::drawBackground(QPainter *p, const QRectF &r) {
|
||||
Exporte le schema vers une image
|
||||
@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
|
||||
QRectF schema_content = itemsBoundingRect();
|
||||
QRectF diagram_content = itemsBoundingRect();
|
||||
|
||||
// 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
|
||||
QRectF source_area = schema_content;
|
||||
QRectF source_area = diagram_content;
|
||||
source_area.translate(-margin, -margin);
|
||||
source_area.setWidth(schema_content.width() + 2.0 * margin);
|
||||
source_area.setHeight(schema_content.height() + 2.0 * margin);
|
||||
source_area.setWidth(diagram_content.width() + 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
|
||||
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()
|
||||
@return La taille de l'image generee par toImage()
|
||||
*/
|
||||
QSize Schema::imageSize() const {
|
||||
QSize Diagram::imageSize() const {
|
||||
// determine le contenu du schema
|
||||
QRectF schema_content = itemsBoundingRect();
|
||||
QRectF diagram_content = itemsBoundingRect();
|
||||
|
||||
// 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
|
||||
QRectF source_area = schema_content;
|
||||
QRectF source_area = diagram_content;
|
||||
source_area.translate(-margin, -margin);
|
||||
source_area.setWidth(schema_content.width() + 2.0 * margin);
|
||||
source_area.setHeight(schema_content.height() + 2.0 * margin);
|
||||
source_area.setWidth(diagram_content.width() + 2.0 * margin);
|
||||
source_area.setHeight(diagram_content.height() + 2.0 * margin);
|
||||
|
||||
// renvoie la taille de la zone source
|
||||
return(source_area.size().toSize());
|
||||
@@ -136,15 +136,15 @@ QSize Schema::imageSize() const {
|
||||
representer tout le schema ou seulement les elements selectionnes
|
||||
@return Un Document XML (QDomDocument)
|
||||
*/
|
||||
QDomDocument Schema::toXml(bool schema) {
|
||||
QDomDocument Diagram::toXml(bool diagram) {
|
||||
// document
|
||||
QDomDocument document;
|
||||
|
||||
// racine de l'arbre XML
|
||||
QDomElement racine = document.createElement("schema");
|
||||
QDomElement racine = document.createElement("diagram");
|
||||
|
||||
// proprietes du schema
|
||||
if (schema) {
|
||||
if (diagram) {
|
||||
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.title().isNull()) racine.setAttribute("titre", border_and_inset.title());
|
||||
@@ -164,11 +164,11 @@ QDomDocument Schema::toXml(bool schema) {
|
||||
// Determine les elements a « XMLiser »
|
||||
foreach(QGraphicsItem *qgi, items()) {
|
||||
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 (Conducteur *f = qgraphicsitem_cast<Conducteur *>(qgi)) {
|
||||
if (schema) liste_conducteurs << f;
|
||||
// lorsqu'on n'exporte pas tout le schema, il faut retirer les conducteurs non selectionnes
|
||||
if (diagram) liste_conducteurs << f;
|
||||
// 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
|
||||
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
|
||||
coin superieur gauche du plus petit rectangle pouvant les entourant tous
|
||||
(le bounding rect) soit a cette position.
|
||||
@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
|
||||
@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();
|
||||
// le premier element doit etre un schema
|
||||
/// @todo renommer schema en diagram
|
||||
if (racine.tagName() != "schema") return(false);
|
||||
|
||||
// lecture des attributs de ce schema
|
||||
if (consider_informations) {
|
||||
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();
|
||||
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) {
|
||||
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";
|
||||
}
|
||||
@@ -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
|
||||
@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
|
||||
QString type = e.attribute("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
|
||||
selectionChanged() est emis.
|
||||
*/
|
||||
void Schema::slot_checkSelectionChange() {
|
||||
void Diagram::slot_checkSelectionChange() {
|
||||
static QList<QGraphicsItem *> cache_selecteditems = QList<QGraphicsItem *>();
|
||||
QList<QGraphicsItem *> selecteditems = selectedItems();
|
||||
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
|
||||
*/
|
||||
QRectF Schema::border() const {
|
||||
QRectF Diagram::border() const {
|
||||
return(
|
||||
QRectF(
|
||||
MARGIN,
|
||||
@@ -9,10 +9,10 @@
|
||||
#include "borderinset.h"
|
||||
class Element;
|
||||
class Borne;
|
||||
class Schema : public QGraphicsScene {
|
||||
class Diagram : public QGraphicsScene {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Schema(QObject * = 0);
|
||||
Diagram(QObject * = 0);
|
||||
void drawBackground(QPainter *, const QRectF &);
|
||||
inline void poseConducteur(bool pf) {
|
||||
if (pf) {
|
||||
@@ -1,14 +1,14 @@
|
||||
#include "schemavue.h"
|
||||
#include "schema.h"
|
||||
#include "diagramview.h"
|
||||
#include "diagram.h"
|
||||
#include "elementperso.h"
|
||||
|
||||
/**
|
||||
Initialise le SchemaVue
|
||||
Initialise le DiagramView
|
||||
*/
|
||||
void SchemaVue::initialise() {
|
||||
void DiagramView::initialise() {
|
||||
setInteractive(true);
|
||||
setAntialiasing(true);
|
||||
setScene(scene = new Schema(this));
|
||||
setScene(scene = new Diagram(this));
|
||||
setDragMode(RubberBandDrag);
|
||||
setAcceptDrops(true);
|
||||
setWindowTitle(tr("Nouveau sch\351ma") + "[*]");
|
||||
@@ -22,7 +22,7 @@ void SchemaVue::initialise() {
|
||||
/**
|
||||
Constructeur par defaut
|
||||
*/
|
||||
SchemaVue::SchemaVue() : QGraphicsView() {
|
||||
DiagramView::DiagramView() : QGraphicsView() {
|
||||
initialise();
|
||||
}
|
||||
|
||||
@@ -30,23 +30,23 @@ SchemaVue::SchemaVue() : QGraphicsView() {
|
||||
Constructeur
|
||||
@param parent Le QWidegt parent de cette vue de schema
|
||||
*/
|
||||
SchemaVue::SchemaVue(QWidget *parent) : QGraphicsView(parent) {
|
||||
DiagramView::DiagramView(QWidget *parent) : QGraphicsView(parent) {
|
||||
initialise();
|
||||
}
|
||||
|
||||
/**
|
||||
Permet de savoir si le rendu graphique du SchemaVue est antialiase ou non.
|
||||
@return Un booleen indiquant si le SchemaVue est antialiase
|
||||
Permet de savoir si le rendu graphique du DiagramView est antialiase ou non.
|
||||
@return Un booleen indiquant si le DiagramView est antialiase
|
||||
*/
|
||||
bool SchemaVue::antialiased() const {
|
||||
bool DiagramView::antialiased() const {
|
||||
return(antialiasing);
|
||||
}
|
||||
|
||||
/**
|
||||
Active ou desactive l'antialiasing pour le rendu graphique du SchemaVue.
|
||||
@param aa un booleen indiquant si le SchemaVue doit etre antialiase ou non
|
||||
Active ou desactive l'antialiasing pour le rendu graphique du DiagramView.
|
||||
@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;
|
||||
setRenderHint(QPainter::Antialiasing, 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
|
||||
*/
|
||||
void SchemaVue::selectAll() {
|
||||
void DiagramView::selectAll() {
|
||||
if (scene -> items().isEmpty()) return;
|
||||
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
|
||||
*/
|
||||
void SchemaVue::selectNothing() {
|
||||
void DiagramView::selectNothing() {
|
||||
if (scene -> items().isEmpty()) return;
|
||||
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
|
||||
*/
|
||||
void SchemaVue::selectInvert() {
|
||||
void DiagramView::selectInvert() {
|
||||
if (scene -> items().isEmpty()) return;
|
||||
foreach (QGraphicsItem *item, scene -> items()) item -> setSelected(!item -> isSelected());
|
||||
}
|
||||
@@ -81,7 +81,7 @@ void SchemaVue::selectInvert() {
|
||||
/**
|
||||
Supprime les composants selectionnes
|
||||
*/
|
||||
void SchemaVue::supprimer() {
|
||||
void DiagramView::supprimer() {
|
||||
|
||||
QList<QGraphicsItem *> garbage_elmt;
|
||||
QList<QGraphicsItem *> garbage_conducteurs;
|
||||
@@ -131,7 +131,7 @@ void SchemaVue::supprimer() {
|
||||
Envoie un item vers le "garbage" pour qu'il soit supprime plus tard
|
||||
@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)
|
||||
bool qgi_deja_dans_le_garbage = false;
|
||||
foreach(QGraphicsItem *gbg_qgi, garbage) {
|
||||
@@ -146,7 +146,7 @@ void SchemaVue::throwToGarbage(QGraphicsItem *qgi) {
|
||||
/**
|
||||
Supprime tous les elements du "garbage"
|
||||
*/
|
||||
void SchemaVue::flushGarbage() {
|
||||
void DiagramView::flushGarbage() {
|
||||
foreach(QGraphicsItem *qgi, garbage) {
|
||||
delete(qgi);
|
||||
garbage.removeAll(qgi);
|
||||
@@ -156,7 +156,7 @@ void SchemaVue::flushGarbage() {
|
||||
/**
|
||||
Pivote les composants selectionnes
|
||||
*/
|
||||
void SchemaVue::pivoter() {
|
||||
void DiagramView::pivoter() {
|
||||
if (scene -> selectedItems().isEmpty()) return;
|
||||
foreach (QGraphicsItem *item, scene -> selectedItems()) {
|
||||
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
|
||||
@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();
|
||||
else e-> ignore();
|
||||
}
|
||||
@@ -179,22 +179,22 @@ void SchemaVue::dragEnterEvent(QDragEnterEvent *e) {
|
||||
gere les dragleaveevent
|
||||
@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
|
||||
@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();
|
||||
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
|
||||
*/
|
||||
void SchemaVue::dropEvent(QDropEvent *e) {
|
||||
void DiagramView::dropEvent(QDropEvent *e) {
|
||||
QString fichier = e -> mimeData() -> text();
|
||||
int 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);
|
||||
emit(modeChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
Passe le Schema en mode Selection
|
||||
Passe le Diagram en mode Selection
|
||||
*/
|
||||
void SchemaVue::setSelectionMode() {
|
||||
void DiagramView::setSelectionMode() {
|
||||
setDragMode(RubberBandDrag);
|
||||
viewport() -> setCursor(Qt::ArrowCursor);
|
||||
emit(modeChanged());
|
||||
@@ -226,14 +226,14 @@ void SchemaVue::setSelectionMode() {
|
||||
/**
|
||||
Agrandit le schema (+33% = inverse des -25 % de zoomMoins())
|
||||
*/
|
||||
void SchemaVue::zoomPlus() {
|
||||
void DiagramView::zoomPlus() {
|
||||
scale(4.0/3.0, 4.0/3.0);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrecit le schema (-25% = inverse des +33 % de zoomPlus())
|
||||
*/
|
||||
void SchemaVue::zoomMoins() {
|
||||
void DiagramView::zoomMoins() {
|
||||
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,
|
||||
le zoom est reinitialise
|
||||
*/
|
||||
void SchemaVue::zoomFit() {
|
||||
void DiagramView::zoomFit() {
|
||||
if (scene -> items().isEmpty()) {
|
||||
zoomReset();
|
||||
return;
|
||||
@@ -259,14 +259,14 @@ void SchemaVue::zoomFit() {
|
||||
/**
|
||||
Reinitialise le zoom
|
||||
*/
|
||||
void SchemaVue::zoomReset() {
|
||||
void DiagramView::zoomReset() {
|
||||
resetMatrix();
|
||||
}
|
||||
|
||||
/**
|
||||
copie les elements selectionnes du schema dans le presse-papier puis les supprime
|
||||
*/
|
||||
void SchemaVue::couper() {
|
||||
void DiagramView::couper() {
|
||||
copier();
|
||||
supprimer();
|
||||
}
|
||||
@@ -274,7 +274,7 @@ void SchemaVue::couper() {
|
||||
/**
|
||||
copie les elements selectionnes du schema dans le presse-papier
|
||||
*/
|
||||
void SchemaVue::copier() {
|
||||
void DiagramView::copier() {
|
||||
QClipboard *presse_papier = QApplication::clipboard();
|
||||
QString contenu_presse_papier = scene -> toXml(false).toString(4);
|
||||
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
|
||||
*/
|
||||
void SchemaVue::coller() {
|
||||
void DiagramView::coller() {
|
||||
QString texte_presse_papier;
|
||||
QDomDocument document_xml;
|
||||
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)
|
||||
*/
|
||||
void SchemaVue::mousePressEvent(QMouseEvent *e) {
|
||||
void DiagramView::mousePressEvent(QMouseEvent *e) {
|
||||
if (e -> buttons() == Qt::MidButton) {
|
||||
QString texte_presse_papier;
|
||||
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 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
|
||||
*/
|
||||
bool SchemaVue::ouvrir(QString n_fichier, int *erreur) {
|
||||
bool DiagramView::ouvrir(QString n_fichier, int *erreur) {
|
||||
// verifie l'existence du fichier
|
||||
if (!QFileInfo(n_fichier).exists()) {
|
||||
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());
|
||||
}
|
||||
|
||||
void SchemaVue::closeEvent(QCloseEvent *event) {
|
||||
void DiagramView::closeEvent(QCloseEvent *event) {
|
||||
// demande d'abord a l'utilisateur s'il veut enregistrer le schema en cours
|
||||
QMessageBox::StandardButton reponse = QMessageBox::question(
|
||||
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
|
||||
@return true si l'enregistrement a reussi, false sinon
|
||||
*/
|
||||
bool SchemaVue::enregistrer() {
|
||||
bool DiagramView::enregistrer() {
|
||||
if (nom_fichier == QString()) return(enregistrer_sous());
|
||||
else return(private_enregistrer(nom_fichier));
|
||||
}
|
||||
@@ -389,13 +389,13 @@ bool SchemaVue::enregistrer() {
|
||||
Sinon, faux est renvoye.
|
||||
@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
|
||||
QString n_fichier = QFileDialog::getSaveFileName(
|
||||
this,
|
||||
tr("Enregistrer sous"),
|
||||
QDir::homePath(),
|
||||
tr("Schema QelectroTech (*.qet)")
|
||||
tr("Diagram QelectroTech (*.qet)")
|
||||
);
|
||||
// si aucun nom n'est entre, renvoie faux.
|
||||
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
|
||||
@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);
|
||||
if (!fichier.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
QMessageBox::warning(this, tr("Erreur"), tr("Impossible d'ecrire dans ce fichier"));
|
||||
@@ -1,22 +1,22 @@
|
||||
#ifndef SCHEMAVUE_H
|
||||
#define SCHEMAVUE_H
|
||||
#ifndef DIAGRAMVIEW_H
|
||||
#define DIAGRAMVIEW_H
|
||||
#include <QtGui>
|
||||
class Schema;
|
||||
class Diagram;
|
||||
#include "element.h"
|
||||
#include "conducteur.h"
|
||||
#define TAILLE_GRILLE 10
|
||||
/**
|
||||
Classe representant graphiquement un schema electrique
|
||||
*/
|
||||
class SchemaVue : public QGraphicsView {
|
||||
class DiagramView : public QGraphicsView {
|
||||
Q_OBJECT
|
||||
public:
|
||||
// constructeurs
|
||||
SchemaVue();
|
||||
SchemaVue(QWidget * = 0);
|
||||
DiagramView();
|
||||
DiagramView(QWidget * = 0);
|
||||
|
||||
// nouveaux attributs
|
||||
Schema *scene;
|
||||
Diagram *scene;
|
||||
|
||||
// methodes publiques
|
||||
bool antialiased() const;
|
||||
@@ -30,7 +30,7 @@
|
||||
private:
|
||||
bool private_enregistrer(QString &);
|
||||
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;
|
||||
|
||||
void throwToGarbage(QGraphicsItem *);
|
||||
10
element.cpp
10
element.cpp
@@ -1,5 +1,5 @@
|
||||
#include "element.h"
|
||||
#include "schema.h"
|
||||
#include "diagram.h"
|
||||
#include <QtDebug>
|
||||
|
||||
/*** Methodes publiques ***/
|
||||
@@ -7,7 +7,7 @@
|
||||
/**
|
||||
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;
|
||||
setZValue(10);
|
||||
}
|
||||
@@ -191,12 +191,12 @@ void Element::updatePixmap() {
|
||||
|
||||
/**
|
||||
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
|
||||
*/
|
||||
void Element::setPos(const QPointF &p) {
|
||||
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()) {
|
||||
// arrondit l'abscisse a 10 px pres
|
||||
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
|
||||
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 y Nouvelle ordonnee de l'element
|
||||
*/
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
#define ELEMENT_H
|
||||
#include <QtGui>
|
||||
#include "borne.h"
|
||||
class Schema;
|
||||
class Diagram;
|
||||
class Element : public QGraphicsItem {
|
||||
public:
|
||||
enum { Type = UserType + 1000 };
|
||||
virtual int type() const { return Type; }
|
||||
Element(QGraphicsItem * = 0, Schema * = 0);
|
||||
Element(QGraphicsItem * = 0, Diagram * = 0);
|
||||
|
||||
virtual int nbBornes() const = 0;
|
||||
virtual int nbBornesMin() const = 0;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
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"
|
||||
class ElementFixe : public Element {
|
||||
public:
|
||||
ElementFixe(QGraphicsItem * = 0, Schema * = 0);
|
||||
ElementFixe(QGraphicsItem * = 0, Diagram * = 0);
|
||||
int nbBornesMin() const;
|
||||
int nbBornesMax() const;
|
||||
virtual bool fromXml(QDomElement &, QHash<int, Borne *>&);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
en parametre.
|
||||
@param nom_fichier Le chemin du fichier XML decrivant l'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
|
||||
sera changee de maniere a refleter le deroulement de l'instanciation :
|
||||
- 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
|
||||
- 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;
|
||||
nb_bornes = 0;
|
||||
// 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 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
|
||||
@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));
|
||||
else if (e.tagName() == "ligne") return(parseLigne(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
|
||||
@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
|
||||
double bornex, borney;
|
||||
Borne::Orientation borneo;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <QtGui>
|
||||
class ElementPerso : public ElementFixe {
|
||||
public:
|
||||
ElementPerso(QString &, QGraphicsItem * = 0, Schema * = 0, int * = NULL);
|
||||
ElementPerso(QString &, QGraphicsItem * = 0, Diagram * = 0, int * = NULL);
|
||||
virtual int nbBornes() const;
|
||||
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *);
|
||||
inline QString typeId() { return(nomfichier); }
|
||||
@@ -18,13 +18,13 @@
|
||||
QString priv_nom;
|
||||
QString nomfichier;
|
||||
QPicture dessin;
|
||||
bool parseElement(QDomElement &, QPainter &, Schema *);
|
||||
bool parseElement(QDomElement &, QPainter &, Diagram *);
|
||||
bool parseLigne(QDomElement &, QPainter &);
|
||||
bool parseEllipse(QDomElement &, QPainter &);
|
||||
bool parseCercle(QDomElement &, QPainter &);
|
||||
bool parseArc(QDomElement &, QPainter &);
|
||||
bool parsePolygone(QDomElement &, QPainter &);
|
||||
bool parseBorne(QDomElement &, Schema *);
|
||||
bool parseBorne(QDomElement &, Diagram *);
|
||||
void setQPainterAntiAliasing(QPainter &, bool);
|
||||
bool attributeIsAnInteger(QDomElement &, QString, int * = NULL);
|
||||
bool attributeIsAReal(QDomElement &, QString, double * = NULL);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
@param dia Le schema a exporter
|
||||
@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
|
||||
diagram = &dia;
|
||||
diagram_size = diagram -> imageSize();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef EXPORTDIALOG_H
|
||||
#define EXPORTDIALOG_H
|
||||
#include <QtGui>
|
||||
#include "schema.h"
|
||||
#include "diagram.h"
|
||||
/**
|
||||
Cette classe represente le dialogue permettant d'exporter un schema
|
||||
sous forme d'image selon les desirs de l'utilisateur
|
||||
@@ -9,7 +9,7 @@
|
||||
class ExportDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
public:
|
||||
ExportDialog(Schema &, QWidget * = 0);
|
||||
ExportDialog(Diagram &, QWidget * = 0);
|
||||
|
||||
private:
|
||||
// elements graphiques
|
||||
@@ -28,7 +28,7 @@
|
||||
bool dontchangeheight;
|
||||
|
||||
// elements relatifs au traitement effectue par le dialogue
|
||||
Schema *diagram;
|
||||
Diagram *diagram;
|
||||
QSize diagram_size;
|
||||
QString diagram_path;
|
||||
qreal diagram_ratio;
|
||||
|
||||
@@ -18,8 +18,8 @@ HEADERS += aboutqet.h \
|
||||
exportdialog.h \
|
||||
panelappareils.h \
|
||||
qetapp.h \
|
||||
schema.h \
|
||||
schemavue.h
|
||||
diagram.h \
|
||||
diagramview.h
|
||||
SOURCES += aboutqet.cpp \
|
||||
borderinset.cpp \
|
||||
borne.cpp \
|
||||
@@ -31,8 +31,8 @@ SOURCES += aboutqet.cpp \
|
||||
main.cpp \
|
||||
panelappareils.cpp \
|
||||
qetapp.cpp \
|
||||
schema.cpp \
|
||||
schemavue.cpp
|
||||
diagram.cpp \
|
||||
diagramview.cpp
|
||||
RESOURCES += qelectrotech.qrc
|
||||
TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts
|
||||
QT += xml
|
||||
|
||||
193
qetapp.cpp
193
qetapp.cpp
@@ -1,10 +1,9 @@
|
||||
#include "qetapp.h"
|
||||
#include "schemavue.h"
|
||||
#include "schema.h"
|
||||
#include "diagramview.h"
|
||||
#include "diagram.h"
|
||||
#include "panelappareils.h"
|
||||
#include "aboutqet.h"
|
||||
#include "exportdialog.h"
|
||||
// #include "borderinset.h"
|
||||
|
||||
/**
|
||||
constructeur
|
||||
@@ -21,27 +20,27 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) {
|
||||
QStringList args = QCoreApplication::arguments();
|
||||
|
||||
// recupere les chemins de fichiers parmi les arguments
|
||||
QStringList fichiers;
|
||||
QStringList files;
|
||||
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
|
||||
QList<SchemaVue *> schema_vues;
|
||||
if (fichiers.size()) {
|
||||
QList<DiagramView *> diagram_views;
|
||||
if (files.size()) {
|
||||
// alors on ouvre ces fichiers
|
||||
foreach(QString fichier, fichiers) {
|
||||
SchemaVue *sv = new SchemaVue(this);
|
||||
if (sv -> ouvrir(fichier)) schema_vues << sv;
|
||||
foreach(QString file, files) {
|
||||
DiagramView *sv = new DiagramView(this);
|
||||
if (sv -> ouvrir(file)) diagram_views << sv;
|
||||
else delete sv;
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
foreach (SchemaVue *sv, schema_vues) addSchemaVue(sv);
|
||||
// ajout de tous les DiagramView necessaires
|
||||
foreach (DiagramView *sv, diagram_views) addDiagramView(sv);
|
||||
|
||||
// titre de la fenetre
|
||||
setWindowTitle(tr("QElectroTech"));
|
||||
@@ -75,7 +74,7 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) {
|
||||
qsti -> setToolTip(tr("QElectroTech"));
|
||||
connect(qsti, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systray(QSystemTrayIcon::ActivationReason)));
|
||||
menu_systray = new QMenu(tr("QElectroTech"));
|
||||
menu_systray -> addAction(masquer_appli);
|
||||
menu_systray -> addAction(reduce_appli);
|
||||
menu_systray -> addAction(quitter_qet);
|
||||
qsti -> setContextMenu(menu_systray);
|
||||
qsti -> show();
|
||||
@@ -95,9 +94,9 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) {
|
||||
Gere les evenements relatifs au QSystemTrayIcon
|
||||
@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;
|
||||
switch(raison) {
|
||||
switch(reason) {
|
||||
case QSystemTrayIcon::Context:
|
||||
// affichage du menu
|
||||
(qsti -> contextMenu()) -> show();
|
||||
@@ -105,7 +104,7 @@ void QETApp::systray(QSystemTrayIcon::ActivationReason raison) {
|
||||
case QSystemTrayIcon::DoubleClick:
|
||||
case QSystemTrayIcon::Trigger:
|
||||
// reduction ou restauration de l'application
|
||||
if (isVisible()) systrayReduire(); else systrayRestaurer();
|
||||
if (isVisible()) systrayReduce(); else systrayRestore();
|
||||
break;
|
||||
case QSystemTrayIcon::Unknown:
|
||||
default: // ne rien faire
|
||||
@@ -116,27 +115,27 @@ void QETApp::systray(QSystemTrayIcon::ActivationReason raison) {
|
||||
/**
|
||||
Reduit l'application dans le systray
|
||||
*/
|
||||
void QETApp::systrayReduire() {
|
||||
void QETApp::systrayReduce() {
|
||||
// on sauvegarde la position et les dimensions de l'application
|
||||
wg = saveGeometry();
|
||||
// on cache l'application
|
||||
hide();
|
||||
// on ajoute le menu "Restaurer" et on enlève le menu "Masquer"
|
||||
menu_systray -> insertAction(masquer_appli, restaurer_appli);
|
||||
menu_systray -> removeAction(masquer_appli);
|
||||
// on ajoute le menu "Restaurer" et on enleve le menu "Masquer"
|
||||
menu_systray -> insertAction(reduce_appli, restore_appli);
|
||||
menu_systray -> removeAction(reduce_appli);
|
||||
}
|
||||
|
||||
/**
|
||||
Restaure l'application reduite dans le systray
|
||||
*/
|
||||
void QETApp::systrayRestaurer() {
|
||||
void QETApp::systrayRestore() {
|
||||
// on restaure la position et les dimensions de l'application
|
||||
restoreGeometry(wg);
|
||||
// on affiche l'application
|
||||
show();
|
||||
// on ajoute le menu "Masquer" et on enlève le menu "Restaurer"
|
||||
menu_systray -> insertAction(restaurer_appli, masquer_appli);
|
||||
menu_systray -> removeAction(restaurer_appli);
|
||||
// on ajoute le menu "Masquer" et on enleve le menu "Restaurer"
|
||||
menu_systray -> insertAction(restore_appli, reduce_appli);
|
||||
menu_systray -> removeAction(restore_appli);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,20 +143,20 @@ void QETApp::systrayRestaurer() {
|
||||
@param qce Le QCloseEvent correspondant a l'evenement de fermeture
|
||||
*/
|
||||
void QETApp::closeEvent(QCloseEvent *qce) {
|
||||
quitter(qce);
|
||||
quit(qce);
|
||||
}
|
||||
|
||||
/**
|
||||
Gere la sortie de l'application
|
||||
@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
|
||||
bool peut_quitter = true;
|
||||
if (schemaEnCours()) {
|
||||
if (diagramEnCours()) {
|
||||
// sinon demande la permission de fermer chaque schema
|
||||
foreach(QWidget *fenetre, workspace.windowList()) {
|
||||
if (qobject_cast<SchemaVue *>(fenetre)) {
|
||||
if (qobject_cast<DiagramView *>(fenetre)) {
|
||||
workspace.setActiveWindow(fenetre);
|
||||
if (!fermer()) {
|
||||
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() {
|
||||
SchemaVue *sv = schemaEnCours();
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
sv -> setAntialiasing(!sv -> antialiased());
|
||||
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);
|
||||
supprimer = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer"), 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);
|
||||
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_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_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_qt = new QAction(QIcon(":/ico/qt.png"), tr("\300 propos de &Qt"), this);
|
||||
|
||||
masquer_appli = new QAction(QIcon(":/ico/masquer.png"), tr("&Masquer"), this);
|
||||
restaurer_appli = new QAction(QIcon(":/ico/restaurer.png"), tr("&Restaurer"), this);
|
||||
reduce_appli = new QAction(QIcon(":/ico/masquer.png"), tr("&Masquer"), this);
|
||||
restore_appli = new QAction(QIcon(":/ico/restaurer.png"), tr("&Restaurer"), this);
|
||||
|
||||
// info-bulles
|
||||
masquer_appli -> setToolTip(tr("Reduire QElectroTech dans le systray"));
|
||||
restaurer_appli -> setToolTip(tr("Restaurer QElectroTech"));
|
||||
reduce_appli -> setToolTip(tr("Reduire QElectroTech dans le systray"));
|
||||
restore_appli -> setToolTip(tr("Restaurer QElectroTech"));
|
||||
|
||||
// raccourcis clavier
|
||||
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"));
|
||||
supprimer -> setStatusTip(tr("Enl\350ve les \351l\351ments s\351lectionn\351s du sch\351ma"));
|
||||
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"));
|
||||
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_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_prec -> setStatusTip(tr("Active la fen\352tre pr\351c\351dente"));
|
||||
|
||||
@@ -347,7 +346,7 @@ void QETApp::actions() {
|
||||
grp_visu_sel -> setExclusive(true);
|
||||
|
||||
// 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_rien, SIGNAL(triggered()), this, SLOT(slot_selectNothing()) );
|
||||
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(a_propos_de_qet, SIGNAL(triggered()), this, SLOT(aPropos()) );
|
||||
connect(a_propos_de_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) );
|
||||
connect(masquer_appli, SIGNAL(triggered()), this, SLOT(systrayReduire ()) );
|
||||
connect(restaurer_appli, SIGNAL(triggered()), this, SLOT(systrayRestaurer()) );
|
||||
connect(reduce_appli, SIGNAL(triggered()), this, SLOT(systrayReduce()) );
|
||||
connect(restore_appli, SIGNAL(triggered()), this, SLOT(systrayRestore()) );
|
||||
connect(zoom_avant, SIGNAL(triggered()), this, SLOT(slot_zoomPlus()) );
|
||||
connect(zoom_arriere, SIGNAL(triggered()), this, SLOT(slot_zoomMoins()) );
|
||||
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_suiv, SIGNAL(triggered()), &workspace, SLOT(activateNextWindow()) );
|
||||
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(remove_column, SIGNAL(activated()), this, SLOT(slot_removeColumn()) );
|
||||
}
|
||||
@@ -435,7 +434,7 @@ void QETApp::menus() {
|
||||
menu_edition -> addAction(supprimer);
|
||||
menu_edition -> addAction(pivoter);
|
||||
menu_edition -> addSeparator();
|
||||
menu_edition -> addAction(infos_schema);
|
||||
menu_edition -> addAction(infos_diagram);
|
||||
menu_edition -> addAction(add_column);
|
||||
menu_edition -> addAction(remove_column);
|
||||
|
||||
@@ -465,7 +464,7 @@ void QETApp::menus() {
|
||||
menu_config -> addAction(entrer_pe);
|
||||
menu_config -> addAction(configurer);
|
||||
|
||||
// menu Fenêtres
|
||||
// menu Fenetres
|
||||
slot_updateMenuFenetres();
|
||||
|
||||
// menu Aide
|
||||
@@ -514,7 +513,7 @@ void QETApp::dialogue_imprimer() {
|
||||
|
||||
if (qpd.exec() == QDialog::Accepted) {
|
||||
QPainter qp(&qprin);
|
||||
Schema *sc = schemaEnCours() -> scene;
|
||||
Diagram *sc = diagramEnCours() -> scene;
|
||||
sc -> setAffichageGrille(false);
|
||||
sc -> render(&qp);
|
||||
sc -> setAffichageGrille(true);
|
||||
@@ -525,7 +524,7 @@ void QETApp::dialogue_imprimer() {
|
||||
Gere l'export de schema vers un autre format (PNG pour le moment)
|
||||
*/
|
||||
void QETApp::dialogue_exporter() {
|
||||
Schema *sc = schemaEnCours() -> scene;
|
||||
Diagram *sc = diagramEnCours() -> scene;
|
||||
ExportDialog ed(*sc);
|
||||
ed.exec();
|
||||
}
|
||||
@@ -536,8 +535,8 @@ void QETApp::dialogue_exporter() {
|
||||
@return true si l'enregistrement a reussi, false sinon
|
||||
*/
|
||||
bool QETApp::enregistrer() {
|
||||
if (!schemaEnCours()) return(false);
|
||||
return(schemaEnCours() -> enregistrer());
|
||||
if (!diagramEnCours()) return(false);
|
||||
return(diagramEnCours() -> enregistrer());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -550,8 +549,8 @@ bool QETApp::enregistrer() {
|
||||
@todo detecter le chemin du bureau automatiquement
|
||||
*/
|
||||
bool QETApp::dialogue_enregistrer_sous() {
|
||||
if (!schemaEnCours()) return(false);
|
||||
return(schemaEnCours() -> enregistrer_sous());
|
||||
if (!diagramEnCours()) return(false);
|
||||
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)
|
||||
*/
|
||||
bool QETApp::nouveau() {
|
||||
addSchemaVue(new SchemaVue(this));
|
||||
addDiagramView(new DiagramView(this));
|
||||
return(true);
|
||||
}
|
||||
|
||||
@@ -573,14 +572,14 @@ bool QETApp::ouvrir() {
|
||||
this,
|
||||
tr("Ouvrir un fichier"),
|
||||
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);
|
||||
|
||||
// verifie que le fichier n'est pas deja ouvert
|
||||
QString chemin_fichier = QFileInfo(nom_fichier).canonicalFilePath();
|
||||
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) {
|
||||
workspace.setActiveWindow(fenetre);
|
||||
return(false);
|
||||
@@ -588,10 +587,10 @@ bool QETApp::ouvrir() {
|
||||
}
|
||||
|
||||
// ouvre le fichier
|
||||
SchemaVue *sv = new SchemaVue(this);
|
||||
DiagramView *sv = new DiagramView(this);
|
||||
int code_erreur;
|
||||
if (sv -> ouvrir(nom_fichier, &code_erreur)) {
|
||||
addSchemaVue(sv);
|
||||
addDiagramView(sv);
|
||||
return(true);
|
||||
} else {
|
||||
QString message_erreur;
|
||||
@@ -613,123 +612,123 @@ bool QETApp::ouvrir() {
|
||||
@todo detecter les modifications et ne demander que si besoin est
|
||||
*/
|
||||
bool QETApp::fermer() {
|
||||
SchemaVue *sv = schemaEnCours();
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return(false);
|
||||
bool fermeture_schema = sv -> close();
|
||||
if (fermeture_schema) delete sv;
|
||||
return(fermeture_schema);
|
||||
bool fermeture_diagram = sv -> close();
|
||||
if (fermeture_diagram) delete sv;
|
||||
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() {
|
||||
return(qobject_cast<SchemaVue *>(workspace.activeWindow()));
|
||||
DiagramView *QETApp::diagramEnCours() {
|
||||
return(qobject_cast<DiagramView *>(workspace.activeWindow()));
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "couper" sur le schema en cours
|
||||
*/
|
||||
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() {
|
||||
if(schemaEnCours()) schemaEnCours() -> copier();
|
||||
if(diagramEnCours()) diagramEnCours() -> copier();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "coller" sur le schema en cours
|
||||
*/
|
||||
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() {
|
||||
if(schemaEnCours()) schemaEnCours() -> zoomPlus();
|
||||
if(diagramEnCours()) diagramEnCours() -> zoomPlus();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "zoom arriere" sur le schema en cours
|
||||
*/
|
||||
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() {
|
||||
if(schemaEnCours()) schemaEnCours() -> zoomFit();
|
||||
if(diagramEnCours()) diagramEnCours() -> zoomFit();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "zoom par defaut" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_zoomReset() {
|
||||
if(schemaEnCours()) schemaEnCours() -> zoomReset();
|
||||
if(diagramEnCours()) diagramEnCours() -> zoomReset();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "selectionner tout" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_selectAll() {
|
||||
if(schemaEnCours()) schemaEnCours() -> selectAll();
|
||||
if(diagramEnCours()) diagramEnCours() -> selectAll();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "deselectionenr tout" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_selectNothing() {
|
||||
if(schemaEnCours()) schemaEnCours() -> selectNothing();
|
||||
if(diagramEnCours()) diagramEnCours() -> selectNothing();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "inverser la selection" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_selectInvert() {
|
||||
if(schemaEnCours()) schemaEnCours() -> selectInvert();
|
||||
if(diagramEnCours()) diagramEnCours() -> selectInvert();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "supprimer" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_supprimer() {
|
||||
if(schemaEnCours()) schemaEnCours() -> supprimer();
|
||||
if(diagramEnCours()) diagramEnCours() -> supprimer();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "pivoter" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_pivoter() {
|
||||
if(schemaEnCours()) schemaEnCours() -> pivoter();
|
||||
if(diagramEnCours()) diagramEnCours() -> pivoter();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "mode selection" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_setSelectionMode() {
|
||||
if(schemaEnCours()) schemaEnCours() -> setSelectionMode();
|
||||
if(diagramEnCours()) diagramEnCours() -> setSelectionMode();
|
||||
}
|
||||
|
||||
/**
|
||||
Effectue l'action "mode visualisation" sur le schema en cours
|
||||
*/
|
||||
void QETApp::slot_setVisualisationMode() {
|
||||
if(schemaEnCours()) schemaEnCours() -> setVisualisationMode();
|
||||
if(diagramEnCours()) diagramEnCours() -> setVisualisationMode();
|
||||
}
|
||||
|
||||
/**
|
||||
gere les actions ayant besoin d'un document ouvert
|
||||
*/
|
||||
void QETApp::slot_updateActions() {
|
||||
SchemaVue *sv = schemaEnCours();
|
||||
DiagramView *sv = diagramEnCours();
|
||||
bool document_ouvert = (sv != 0);
|
||||
|
||||
// actions ayant juste besoin d'un document ouvert
|
||||
@@ -747,7 +746,7 @@ void QETApp::slot_updateActions() {
|
||||
zoom_adapte -> setEnabled(document_ouvert);
|
||||
zoom_reset -> 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
|
||||
annuler -> setEnabled(document_ouvert);
|
||||
@@ -797,15 +796,21 @@ void QETApp::slot_updateActions() {
|
||||
|
||||
/**
|
||||
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;
|
||||
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));
|
||||
|
||||
// ajoute la fenetre
|
||||
QWidget *p = workspace.addWindow(sv);
|
||||
connect(sv, SIGNAL(selectionChanged()), this, SLOT(slot_updateActions()));
|
||||
connect(sv, SIGNAL(modeChanged()), this, SLOT(slot_updateActions()));
|
||||
|
||||
// affiche la fenetre
|
||||
if (maximise) p -> showMaximized();
|
||||
else p -> show();
|
||||
}
|
||||
@@ -836,12 +841,12 @@ void QETApp::slot_updateMenuFenetres() {
|
||||
QList<QWidget *> fenetres = workspace.windowList();
|
||||
if (!fenetres.isEmpty()) menu_fenetres -> addSeparator();
|
||||
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);
|
||||
QAction *action = menu_fenetres -> addAction(sv_titre);
|
||||
action -> setStatusTip(tr("Active la fen\352tre ") + sv_titre);
|
||||
action -> setCheckable(true);
|
||||
action -> setChecked(sv == schemaEnCours());
|
||||
action -> setChecked(sv == diagramEnCours());
|
||||
connect(action, SIGNAL(triggered()), &windowMapper, SLOT(map()));
|
||||
windowMapper.setMapping(action, sv);
|
||||
}
|
||||
@@ -871,7 +876,7 @@ QString QETApp::customElementsDir() {
|
||||
lequel QET lira les informations de configuration et de personnalisation
|
||||
propres a l'utilisateur courant. Ce dossier est generalement
|
||||
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
|
||||
*/
|
||||
QString QETApp::configDir() {
|
||||
@@ -929,7 +934,7 @@ QString QETApp::languagesPath() {
|
||||
|
||||
void QETApp::editInfos() {
|
||||
// ne fait rien s'il n'y a pas de schema ouvert
|
||||
SchemaVue *sv = schemaEnCours();
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
|
||||
// recupere le cartouche du schema
|
||||
@@ -942,9 +947,9 @@ void QETApp::editInfos() {
|
||||
|
||||
QLineEdit *titre = new QLineEdit(inset -> title(), &popup);
|
||||
QLineEdit *auteur = new QLineEdit(inset -> author(), &popup);
|
||||
QDate date_schema = QDate(inset -> date());
|
||||
if (date_schema.isNull() || !date_schema.isValid()) date_schema = QDate::currentDate();
|
||||
QDateEdit *date = new QDateEdit(date_schema, &popup);
|
||||
QDate date_diagram = QDate(inset -> date());
|
||||
if (date_diagram.isNull() || !date_diagram.isValid()) date_diagram = QDate::currentDate();
|
||||
QDateEdit *date = new QDateEdit(date_diagram, &popup);
|
||||
date -> setCalendarPopup(true);
|
||||
QLineEdit *fichier = new QLineEdit(inset -> fileName(), &popup);
|
||||
QLineEdit *folio = new QLineEdit(inset -> folio(), &popup);
|
||||
@@ -980,7 +985,7 @@ void QETApp::editInfos() {
|
||||
}
|
||||
|
||||
void QETApp::slot_addColumn() {
|
||||
SchemaVue *sv = schemaEnCours();
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
|
||||
// ajoute la colonne
|
||||
@@ -996,7 +1001,7 @@ void QETApp::slot_addColumn() {
|
||||
}
|
||||
|
||||
void QETApp::slot_removeColumn() {
|
||||
SchemaVue *sv = schemaEnCours();
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
sv -> scene -> border_and_inset.removeColumn();
|
||||
|
||||
|
||||
27
qetapp.h
27
qetapp.h
@@ -1,21 +1,21 @@
|
||||
#ifndef QETAPP_H
|
||||
#define QETAPP_H
|
||||
#include <QtGui>
|
||||
class SchemaVue;
|
||||
class DiagramView;
|
||||
class PanelAppareils;
|
||||
/**
|
||||
Cette classe represente la fenetre principale de QElectroTech et,
|
||||
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
|
||||
« 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 ».
|
||||
*/
|
||||
class QETApp : public QMainWindow {
|
||||
Q_OBJECT
|
||||
public:
|
||||
QETApp(QWidget *parent=0);
|
||||
void closeEvent(QCloseEvent * event );
|
||||
void addSchemaVue(SchemaVue *);
|
||||
QETApp(QWidget * = 0);
|
||||
void closeEvent(QCloseEvent *);
|
||||
void addDiagramView(DiagramView *);
|
||||
static QString commonElementsDir();
|
||||
static QString customElementsDir();
|
||||
static QString configDir();
|
||||
@@ -23,10 +23,10 @@
|
||||
static QString realPath(QString &);
|
||||
static QString symbolicPath(QString &);
|
||||
public slots:
|
||||
void systray(QSystemTrayIcon::ActivationReason raison);
|
||||
void systrayReduire();
|
||||
void systrayRestaurer();
|
||||
void quitter(QCloseEvent * = NULL);
|
||||
void systray(QSystemTrayIcon::ActivationReason);
|
||||
void systrayReduce();
|
||||
void systrayRestore();
|
||||
void quit(QCloseEvent * = NULL);
|
||||
void toggleFullScreen();
|
||||
void toggleAntialiasing();
|
||||
void aPropos();
|
||||
@@ -63,12 +63,12 @@
|
||||
QAction *supprimer;
|
||||
QAction *selectionner;
|
||||
QAction *pivoter;
|
||||
QAction *infos_schema;
|
||||
QAction *infos_diagram;
|
||||
QAction *add_column;
|
||||
QAction *remove_column;
|
||||
QAction *poser_fil;
|
||||
QAction *masquer_appli;
|
||||
QAction *restaurer_appli;
|
||||
QAction *reduce_appli;
|
||||
QAction *restore_appli;
|
||||
QAction *zoom_avant;
|
||||
QAction *zoom_arriere;
|
||||
QAction *zoom_adapte;
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
private:
|
||||
QWorkspace workspace;
|
||||
SchemaVue *schemaEnCours();
|
||||
DiagramView *diagramEnCours();
|
||||
QSignalMapper windowMapper;
|
||||
/// Dock pour le Panel d'Appareils
|
||||
QDockWidget *qdw_pa;
|
||||
@@ -101,7 +101,6 @@
|
||||
QMenu *menu_systray;
|
||||
QAction *systray_masquer;
|
||||
QAction * config_fullscreen;
|
||||
QAction *systray_quitter;
|
||||
QMenu *menu_fenetres;
|
||||
/// Icone dans le systray
|
||||
QSystemTrayIcon *qsti;
|
||||
|
||||
Reference in New Issue
Block a user