mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Fichier > exporter exporte desormais le contenu du cadre
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@49 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
a5cc50f5ab
commit
982b2bce9a
@ -12,6 +12,9 @@ BorderInset::BorderInset(QObject *parent) : QObject(parent) {
|
||||
inset_width = nb_columns * columns_width;
|
||||
inset_height = 50.0;
|
||||
columns_header_height = 20.0;
|
||||
display_inset = true;
|
||||
display_columns = true;
|
||||
display_border = true;
|
||||
updateRectangles();
|
||||
}
|
||||
|
||||
@ -61,40 +64,43 @@ void BorderInset::draw(QPainter *qp, qreal x, qreal y) {
|
||||
qp -> setBrush(Qt::NoBrush);
|
||||
|
||||
// dessine le cadre
|
||||
qp -> drawRect(border);
|
||||
if (display_border) qp -> drawRect(border);
|
||||
|
||||
// dessine la numerotation des colonnes
|
||||
qp -> setBrush(Qt::white);
|
||||
for (int i = 1 ; i <= nb_columns ; ++ i) {
|
||||
QRectF numbered_rectangle = QRectF(
|
||||
border.topLeft().x() + ((i - 1) * columns_width),
|
||||
border.topLeft().y(),
|
||||
columns_width,
|
||||
columns_header_height
|
||||
);
|
||||
qp -> drawRect(numbered_rectangle);
|
||||
qp -> drawText(numbered_rectangle, Qt::AlignVCenter | Qt::AlignCenter, QString("%1").arg(i));
|
||||
if (display_columns) {
|
||||
qp -> setBrush(Qt::white);
|
||||
for (int i = 1 ; i <= nb_columns ; ++ i) {
|
||||
QRectF numbered_rectangle = QRectF(
|
||||
border.topLeft().x() + ((i - 1) * columns_width),
|
||||
border.topLeft().y(),
|
||||
columns_width,
|
||||
columns_header_height
|
||||
);
|
||||
qp -> drawRect(numbered_rectangle);
|
||||
qp -> drawText(numbered_rectangle, Qt::AlignVCenter | Qt::AlignCenter, QString("%1").arg(i));
|
||||
}
|
||||
}
|
||||
|
||||
// dessine le cartouche
|
||||
qp -> drawRect(inset);
|
||||
|
||||
qp -> drawRect(inset_author);
|
||||
qp -> drawText(inset_author, Qt::AlignVCenter | Qt::AlignLeft, tr(" Auteur : ") + bi_author);
|
||||
|
||||
qp -> drawRect(inset_date);
|
||||
qp -> drawText(inset_date, Qt::AlignVCenter | Qt::AlignLeft, tr(" Date : ") + bi_date.toString());
|
||||
|
||||
qp -> drawRect(inset_title);
|
||||
qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document: ") + bi_title);
|
||||
|
||||
qp -> drawRect(inset_file);
|
||||
qp -> drawText(inset_file, Qt::AlignVCenter | Qt::AlignLeft, tr(" Fichier : ") + bi_filename);
|
||||
|
||||
qp -> drawRect(inset_folio);
|
||||
qp -> drawText(inset_folio, Qt::AlignVCenter | Qt::AlignLeft, tr(" Folio : ") + bi_folio);
|
||||
qp -> restore();
|
||||
|
||||
if (display_inset) {
|
||||
qp -> drawRect(inset);
|
||||
|
||||
qp -> drawRect(inset_author);
|
||||
qp -> drawText(inset_author, Qt::AlignVCenter | Qt::AlignLeft, tr(" Auteur : ") + bi_author);
|
||||
|
||||
qp -> drawRect(inset_date);
|
||||
qp -> drawText(inset_date, Qt::AlignVCenter | Qt::AlignLeft, tr(" Date : ") + bi_date.toString());
|
||||
|
||||
qp -> drawRect(inset_title);
|
||||
qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document: ") + bi_title);
|
||||
|
||||
qp -> drawRect(inset_file);
|
||||
qp -> drawText(inset_file, Qt::AlignVCenter | Qt::AlignLeft, tr(" Fichier : ") + bi_filename);
|
||||
|
||||
qp -> drawRect(inset_folio);
|
||||
qp -> drawText(inset_folio, Qt::AlignVCenter | Qt::AlignLeft, tr(" Folio : ") + bi_folio);
|
||||
qp -> restore();
|
||||
}
|
||||
// annule la translation des rectangles
|
||||
border .translate(-x, -y);
|
||||
inset .translate(-x, -y);
|
||||
|
70
diagram.cpp
70
diagram.cpp
@ -2,6 +2,7 @@
|
||||
#include "conducer.h"
|
||||
#include "customelement.h"
|
||||
#include "diagram.h"
|
||||
#include "exportdialog.h"
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@ -17,7 +18,8 @@ Diagram::Diagram(QObject *parent) : QGraphicsScene(parent) {
|
||||
t.setStyle(Qt::DashLine);
|
||||
poseur_de_conducer -> setPen(t);
|
||||
poseur_de_conducer -> setLine(QLineF(QPointF(0.0, 0.0), QPointF(0.0, 0.0)));
|
||||
doit_dessiner_grille = true;
|
||||
draw_grid = true;
|
||||
use_border = true;
|
||||
connect(this, SIGNAL(changed(const QList<QRectF> &)), this, SLOT(slot_checkSelectionChange()));
|
||||
}
|
||||
|
||||
@ -29,9 +31,9 @@ Diagram::Diagram(QObject *parent) : QGraphicsScene(parent) {
|
||||
void Diagram::drawBackground(QPainter *p, const QRectF &r) {
|
||||
p -> save();
|
||||
|
||||
// desactive tout antialiasing
|
||||
// desactive tout antialiasing, sauf pour le texte
|
||||
p -> setRenderHint(QPainter::Antialiasing, false);
|
||||
p -> setRenderHint(QPainter::TextAntialiasing, false);
|
||||
p -> setRenderHint(QPainter::TextAntialiasing, true);
|
||||
p -> setRenderHint(QPainter::SmoothPixmapTransform, false);
|
||||
|
||||
// dessine un fond blanc
|
||||
@ -39,7 +41,7 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
|
||||
p -> setBrush(Qt::white);
|
||||
p -> drawRect(r);
|
||||
|
||||
if (doit_dessiner_grille) {
|
||||
if (draw_grid) {
|
||||
// dessine les points de la grille
|
||||
p -> setPen(Qt::black);
|
||||
p -> setBrush(Qt::NoBrush);
|
||||
@ -58,7 +60,7 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
|
||||
}
|
||||
}
|
||||
|
||||
border_and_inset.draw(p, MARGIN, MARGIN);
|
||||
if (use_border) border_and_inset.draw(p, MARGIN, MARGIN);
|
||||
p -> restore();
|
||||
}
|
||||
|
||||
@ -66,18 +68,22 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
|
||||
Exporte le schema vers une image
|
||||
@return Une QImage representant le schema
|
||||
*/
|
||||
QImage Diagram::toImage(int width, int height, bool respectRatio) {
|
||||
// determine le contenu du schema
|
||||
QRectF diagram_content = itemsBoundingRect();
|
||||
|
||||
// calcule la marge = 5 % de la longueur necessaire
|
||||
qreal margin = 0.05 * diagram_content.width();
|
||||
|
||||
// en deduit la zone source utilisee pour l'image
|
||||
QRectF source_area = diagram_content;
|
||||
source_area.translate(-margin, -margin);
|
||||
source_area.setWidth(diagram_content.width() + 2.0 * margin);
|
||||
source_area.setHeight(diagram_content.height() + 2.0 * margin);
|
||||
QImage Diagram::toImage(int width, int height, Qt::AspectRatioMode aspectRatioMode) {
|
||||
// determine la zone source = contenu du schema + marges
|
||||
QRectF source_area;
|
||||
if (!use_border) {
|
||||
source_area = itemsBoundingRect();
|
||||
source_area.translate(-MARGIN, -MARGIN);
|
||||
source_area.setWidth (source_area.width () + 2.0 * MARGIN);
|
||||
source_area.setHeight(source_area.height() + 2.0 * MARGIN);
|
||||
} else {
|
||||
source_area = QRectF(
|
||||
0.0,
|
||||
0.0,
|
||||
border_and_inset.borderWidth () + 2.0 * MARGIN,
|
||||
border_and_inset.borderHeight() + 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);
|
||||
@ -87,8 +93,7 @@ QImage Diagram::toImage(int width, int height, bool respectRatio) {
|
||||
|
||||
// prepare le rendu
|
||||
QPainter p;
|
||||
bool painter_ok = p.begin(&pix);
|
||||
if (!painter_ok) return(QImage());
|
||||
if (!p.begin(&pix)) return(QImage());
|
||||
|
||||
// rendu antialiase
|
||||
p.setRenderHint(QPainter::Antialiasing, true);
|
||||
@ -100,7 +105,7 @@ QImage Diagram::toImage(int width, int height, bool respectRatio) {
|
||||
foreach (QGraphicsItem *qgi, selected_elmts) qgi -> setSelected(false);
|
||||
|
||||
// effectue le rendu lui-meme
|
||||
render(&p, pix.rect(), source_area, respectRatio ? Qt::KeepAspectRatio : Qt::IgnoreAspectRatio);
|
||||
render(&p, pix.rect(), source_area, aspectRatioMode);
|
||||
p.end();
|
||||
|
||||
// restaure les elements selectionnes
|
||||
@ -112,22 +117,25 @@ QImage Diagram::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()
|
||||
@todo tenir compte des arguments
|
||||
*/
|
||||
QSize Diagram::imageSize() const {
|
||||
// determine le contenu du schema
|
||||
QRectF diagram_content = itemsBoundingRect();
|
||||
// determine la zone source = contenu du schema + marges
|
||||
qreal image_width, image_height;
|
||||
if (!use_border) {
|
||||
QRectF items_rect = itemsBoundingRect();
|
||||
image_width = items_rect.width();
|
||||
image_height = items_rect.height();
|
||||
} else {
|
||||
image_width = border_and_inset.borderWidth();
|
||||
image_height = border_and_inset.borderHeight();
|
||||
}
|
||||
|
||||
// calcule la marge = 5 % de la longueur necessaire
|
||||
qreal margin = 0.05 * diagram_content.width();
|
||||
|
||||
// en deduit la zone source utilisee pour l'image
|
||||
QRectF source_area = diagram_content;
|
||||
source_area.translate(-margin, -margin);
|
||||
source_area.setWidth(diagram_content.width() + 2.0 * margin);
|
||||
source_area.setHeight(diagram_content.height() + 2.0 * margin);
|
||||
image_width += 2.0 * MARGIN;
|
||||
image_height += 2.0 * MARGIN;
|
||||
|
||||
// renvoie la taille de la zone source
|
||||
return(source_area.size().toSize());
|
||||
return(QSizeF(image_width, image_height).toSize());
|
||||
}
|
||||
|
||||
/**
|
||||
|
33
diagram.h
33
diagram.h
@ -11,9 +11,12 @@
|
||||
class Terminal;
|
||||
class Diagram : public QGraphicsScene {
|
||||
Q_OBJECT
|
||||
enum BorderOptions { EmptyBorder, Inset, Columns };
|
||||
public:
|
||||
Diagram(QObject * = 0);
|
||||
void drawBackground(QPainter *, const QRectF &);
|
||||
|
||||
// fonctions relatives a la pose de conducteurs
|
||||
inline void poseConducer(bool pf) {
|
||||
if (pf) {
|
||||
if (!poseur_de_conducer -> scene()) addItem(poseur_de_conducer);
|
||||
@ -23,18 +26,38 @@
|
||||
}
|
||||
inline void setDepart (QPointF d) { poseur_de_conducer -> setLine(QLineF(d, poseur_de_conducer -> line().p2())); }
|
||||
inline void setArrivee(QPointF a) { poseur_de_conducer -> setLine(QLineF(poseur_de_conducer -> line().p1(), a)); }
|
||||
QImage toImage(int = -1, int = -1, bool = true);
|
||||
QSize imageSize() const;
|
||||
|
||||
// fonctions relatives a l'import / export XML
|
||||
QDomDocument toXml(bool = true);
|
||||
bool fromXml(QDomDocument &, QPointF = QPointF(), bool = true);
|
||||
QGraphicsItem *getElementById(uint id);
|
||||
inline void setAffichageGrille(bool ddg) { doit_dessiner_grille = ddg; }
|
||||
|
||||
// fonctions relatives aux options graphiques
|
||||
inline void setAffichageGrille(bool dg) { draw_grid = dg; }
|
||||
inline bool displayGrid() { return(draw_grid); }
|
||||
inline void setUseBorder(bool ub) { use_border = ub; }
|
||||
inline bool useBorder() { return(use_border); }
|
||||
inline void setBorderOptions(BorderOptions bo) {
|
||||
border_and_inset.displayBorder(!(bo & EmptyBorder));
|
||||
border_and_inset.displayColumns(bo & Columns);
|
||||
border_and_inset.displayInset(bo & Inset);
|
||||
}
|
||||
inline BorderOptions borderOptions() {
|
||||
BorderOptions retour = EmptyBorder;
|
||||
if (border_and_inset.insetIsDisplayed()) retour = (BorderOptions)(retour|Inset);
|
||||
if (border_and_inset.columnsAreDisplayed()) retour = (BorderOptions)(retour|Columns);
|
||||
return(retour);
|
||||
}
|
||||
|
||||
BorderInset border_and_inset;
|
||||
QRectF border() const;
|
||||
QImage toImage(int = -1, int = -1, Qt::AspectRatioMode = Qt::KeepAspectRatio);
|
||||
QSize imageSize() const;
|
||||
|
||||
private:
|
||||
QGraphicsLineItem *poseur_de_conducer;
|
||||
bool doit_dessiner_grille;
|
||||
bool draw_grid;
|
||||
bool use_border;
|
||||
|
||||
Element *elementFromXml(QDomElement &, QHash<int, Terminal *> &);
|
||||
|
||||
private slots:
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "diagramview.h"
|
||||
#include "diagram.h"
|
||||
#include "customelement.h"
|
||||
#include "exportdialog.h"
|
||||
|
||||
/**
|
||||
Initialise le DiagramView
|
||||
@ -432,3 +433,96 @@ bool DiagramView::private_enregistrer(QString &n_fichier) {
|
||||
return(true);
|
||||
}
|
||||
|
||||
void DiagramView::dialogExport() {
|
||||
ExportDialog ed(scene, this);
|
||||
ed.exec();
|
||||
}
|
||||
|
||||
void DiagramView::dialogPrint() {
|
||||
QPrinter qprin;
|
||||
qprin.setOutputFormat(QPrinter::PdfFormat);
|
||||
qprin.setOrientation(QPrinter::Landscape);
|
||||
qprin.setPageSize(QPrinter::A4);
|
||||
QPrintDialog qpd(&qprin, this);
|
||||
|
||||
if (qpd.exec() == QDialog::Accepted) {
|
||||
QPainter qp(&qprin);
|
||||
scene -> setAffichageGrille(false);
|
||||
scene -> render(&qp);
|
||||
scene -> setAffichageGrille(true);
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramView::dialogEditInfos() {
|
||||
// recupere le cartouche du schema
|
||||
BorderInset *inset = &(scene -> border_and_inset);
|
||||
|
||||
// construit le dialogue
|
||||
QDialog popup;
|
||||
popup.setMinimumWidth(400);
|
||||
popup.setWindowTitle(tr("Cartouche du sch\351ma"));
|
||||
|
||||
QLineEdit *titre = new QLineEdit(inset -> title(), &popup);
|
||||
QLineEdit *auteur = new QLineEdit(inset -> author(), &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);
|
||||
QWidget bidon(&popup);
|
||||
QGridLayout layout_champs(&bidon);
|
||||
layout_champs.addWidget(new QLabel(tr("Titre : ")), 0, 0);
|
||||
layout_champs.addWidget(titre, 0, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Auteur : ")), 1, 0);
|
||||
layout_champs.addWidget(auteur, 1, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Date : ")), 2, 0);
|
||||
layout_champs.addWidget(date, 2, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Fichier : ")), 3, 0);
|
||||
layout_champs.addWidget(fichier, 3, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Folio : ")), 4, 0);
|
||||
layout_champs.addWidget(folio, 4, 1);
|
||||
|
||||
// boutons
|
||||
QDialogButtonBox boutons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
connect(&boutons, SIGNAL(accepted()), &popup, SLOT(accept()));
|
||||
connect(&boutons, SIGNAL(rejected()), &popup, SLOT(accept()));
|
||||
|
||||
// ajout dans une disposition verticale
|
||||
QVBoxLayout layout_v(&popup);
|
||||
layout_v.addWidget(&bidon);
|
||||
layout_v.addWidget(&boutons);
|
||||
if (popup.exec() == QDialog::Accepted) {
|
||||
inset -> setTitle(titre -> text());
|
||||
inset -> setAuthor(auteur -> text());
|
||||
inset -> setDate(date -> date());
|
||||
inset -> setFileName(fichier -> text());
|
||||
inset -> setFolio(folio -> text());
|
||||
}
|
||||
}
|
||||
|
||||
bool DiagramView::hasSelectedItems() {
|
||||
return(scene -> selectedItems().size() > 0);
|
||||
}
|
||||
|
||||
void DiagramView::addColumn() {
|
||||
// ajoute la colonne
|
||||
scene -> border_and_inset.addColumn();
|
||||
|
||||
// met a jour la zone affichee par la vue
|
||||
QRectF sr = sceneRect();
|
||||
sr.setWidth(5.0 + scene -> border_and_inset.borderWidth());
|
||||
setSceneRect(sr);
|
||||
|
||||
// rafraichit la vue
|
||||
scene -> update(sceneRect());
|
||||
}
|
||||
|
||||
void DiagramView::removeColumn() {
|
||||
scene -> border_and_inset.removeColumn();
|
||||
|
||||
// on pourrait mettre a jour la zone affichee par la vue
|
||||
|
||||
// rafraichit la vue
|
||||
scene -> update(sceneRect());
|
||||
}
|
||||
|
@ -26,6 +26,13 @@
|
||||
QString nom_fichier;
|
||||
bool enregistrer();
|
||||
bool enregistrer_sous();
|
||||
void dialogExport();
|
||||
void dialogEditInfos();
|
||||
void dialogPrint();
|
||||
void addColumn();
|
||||
void removeColumn();
|
||||
Diagram *diagram() { return(scene); }
|
||||
bool hasSelectedItems();
|
||||
|
||||
private:
|
||||
bool private_enregistrer(QString &);
|
||||
|
@ -21,18 +21,18 @@ ElementsPanel::ElementsPanel(QWidget *parent) : QTreeWidget(parent) {
|
||||
setIconSize(QSize(50, 50));
|
||||
|
||||
// chargement des elements de la collection QET
|
||||
ajouterDossier(invisibleRootItem(), QETApp::commonElementsDir(), tr("Collection QET"));
|
||||
addDir(invisibleRootItem(), QETApp::commonElementsDir(), tr("Collection QET"));
|
||||
|
||||
// chargement des elements de la collection utilisateur
|
||||
ajouterDossier(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur"));
|
||||
addDir(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur"));
|
||||
|
||||
// force du noir sur une alternance de blanc (comme le schema) et de gris
|
||||
// clair, avec du blanc sur bleu pas trop fonce pour la selection
|
||||
QPalette qp = palette();
|
||||
qp.setColor(QPalette::Text, Qt::black);
|
||||
qp.setColor(QPalette::Base, Qt::white);
|
||||
qp.setColor(QPalette::AlternateBase, QColor("#e8e8e8"));
|
||||
qp.setColor(QPalette::Highlight, QColor("#678db2"));
|
||||
qp.setColor(QPalette::Text, Qt::black);
|
||||
qp.setColor(QPalette::Base, Qt::white);
|
||||
qp.setColor(QPalette::AlternateBase, QColor("#e8e8e8"));
|
||||
qp.setColor(QPalette::Highlight, QColor("#678db2"));
|
||||
qp.setColor(QPalette::HighlightedText, Qt::white);
|
||||
setPalette(qp);
|
||||
}
|
||||
@ -87,7 +87,6 @@ void ElementsPanel::startDrag(Qt::DropActions /*supportedActions*/) {
|
||||
delete appar;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Methode privee permettant d'ajouter un dossier au panel d'appareils
|
||||
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element
|
||||
@ -97,7 +96,7 @@ void ElementsPanel::startDrag(Qt::DropActions /*supportedActions*/) {
|
||||
dans le dossier et y lit le nom du dossier ; si ce fichier n'existe pas ou
|
||||
est invalide, la fonction utilise le nom du dossier.
|
||||
*/
|
||||
void ElementsPanel::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QString nom) {
|
||||
void ElementsPanel::addDir(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QString nom) {
|
||||
QDir dossier(adr_dossier);
|
||||
if (!dossier.exists()) return;
|
||||
adr_dossier = dossier.canonicalPath() + "/";
|
||||
@ -115,11 +114,11 @@ void ElementsPanel::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_dos
|
||||
|
||||
// ajout des sous-categories / sous-dossiers
|
||||
QStringList dossiers = dossier.entryList(QStringList(), QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDir::Name);
|
||||
foreach(QString dossier, dossiers) ajouterDossier(qtwi_dossier, adr_dossier + dossier);
|
||||
foreach(QString dossier, dossiers) addDir(qtwi_dossier, adr_dossier + dossier);
|
||||
|
||||
// ajout des elements / fichiers
|
||||
QStringList fichiers = dossier.entryList(QStringList("*.elmt"), QDir::Files, QDir::Name);
|
||||
foreach(QString fichier, fichiers) ajouterFichier(qtwi_dossier, adr_dossier + fichier);
|
||||
foreach(QString fichier, fichiers) addFile(qtwi_dossier, adr_dossier + fichier);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -127,7 +126,7 @@ void ElementsPanel::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_dos
|
||||
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element
|
||||
@param fichier Chemin absolu du fichier XML decrivant l'element a inserer
|
||||
*/
|
||||
void ElementsPanel::ajouterFichier(QTreeWidgetItem *qtwi_parent, QString fichier) {
|
||||
void ElementsPanel::addFile(QTreeWidgetItem *qtwi_parent, QString fichier) {
|
||||
QString whats_this = tr("Ceci est un \351l\351ment que vous pouvez ins\351rer dans votre sch\351ma par cliquer-d\351placer");
|
||||
QString tool_tip = tr("Cliquer-d\351posez cet \351l\351ment sur le sch\351ma pour ins\351rer un \351l\351ment ");
|
||||
int etat;
|
||||
@ -145,7 +144,6 @@ void ElementsPanel::ajouterFichier(QTreeWidgetItem *qtwi_parent, QString fichier
|
||||
qtwi -> setData(0, 42, fichier);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Methode permettant d'obtenir le nom affichable d'une categorie etant donne
|
||||
son chemin (dossier).
|
||||
@ -162,7 +160,7 @@ QString ElementsPanel::categoryName(QDir &directory) {
|
||||
if (directory_conf.exists()) {
|
||||
// ouvre le fichier
|
||||
if (directory_conf.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
// recupere les deux premiers caracteres de la lcoale en cours du systeme
|
||||
// recupere les deux premiers caracteres de la locale en cours du systeme
|
||||
QString system_language = QLocale::system().name().left(2);
|
||||
// lit le contenu du fichier dans un QDomDocument XML
|
||||
QDomDocument document;
|
||||
|
@ -17,7 +17,7 @@
|
||||
void dropEvent(QDropEvent *);
|
||||
void startDrag(Qt::DropActions);
|
||||
private:
|
||||
void ajouterFichier(QTreeWidgetItem *, QString);
|
||||
void ajouterDossier(QTreeWidgetItem *, QString, QString = QString());
|
||||
void addFile(QTreeWidgetItem *, QString);
|
||||
void addDir(QTreeWidgetItem *, QString, QString = QString());
|
||||
};
|
||||
#endif
|
||||
|
@ -5,11 +5,13 @@
|
||||
@param dia Le schema a exporter
|
||||
@param parent Le Widget parent de ce dialogue
|
||||
*/
|
||||
ExportDialog::ExportDialog(Diagram &dia, QWidget *parent) : QDialog(parent) {
|
||||
ExportDialog::ExportDialog(Diagram *dia, QWidget *parent) : QDialog(parent) {
|
||||
if (!dia) return;
|
||||
// recupere le schema a exporter, sa taille et ses proportions
|
||||
diagram = &dia;
|
||||
diagram = dia;
|
||||
diagram_size = diagram -> imageSize();
|
||||
diagram_ratio = (qreal)diagram_size.width() / (qreal)diagram_size.height();
|
||||
dontchangewidth = dontchangeheight = false;
|
||||
|
||||
// la taille du dialogue est fixee
|
||||
setFixedSize(400, 310);
|
||||
@ -190,7 +192,11 @@ void ExportDialog::slot_check() {
|
||||
|
||||
// genere l'image
|
||||
if (!export_grid -> isChecked()) diagram -> setAffichageGrille(false);
|
||||
QImage image = diagram -> toImage(width -> value(), height -> value(), keep_aspect_ratio -> isChecked());
|
||||
QImage image = diagram -> toImage(
|
||||
width -> value(),
|
||||
height -> value(),
|
||||
keep_aspect_ratio -> isChecked() ? Qt::KeepAspectRatio : Qt::IgnoreAspectRatio
|
||||
);
|
||||
if (!export_grid -> isChecked()) diagram -> setAffichageGrille(true);
|
||||
|
||||
// convertit l'image en niveaux de gris si besoin
|
||||
|
@ -9,7 +9,7 @@
|
||||
class ExportDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
public:
|
||||
ExportDialog(Diagram &, QWidget * = 0);
|
||||
ExportDialog(Diagram *, QWidget * = 0);
|
||||
|
||||
private:
|
||||
// elements graphiques
|
||||
|
119
qetapp.cpp
119
qetapp.cpp
@ -1,9 +1,8 @@
|
||||
#include "qetapp.h"
|
||||
//#include "diagram.h"
|
||||
#include "diagramview.h"
|
||||
#include "diagram.h"
|
||||
#include "elementspanel.h"
|
||||
#include "aboutqet.h"
|
||||
#include "exportdialog.h"
|
||||
|
||||
/**
|
||||
constructeur
|
||||
@ -364,8 +363,8 @@ void QETApp::actions() {
|
||||
connect(zoom_arriere, SIGNAL(triggered()), this, SLOT(slot_zoomMoins()) );
|
||||
connect(zoom_adapte, SIGNAL(triggered()), this, SLOT(slot_zoomFit()) );
|
||||
connect(zoom_reset, SIGNAL(triggered()), this, SLOT(slot_zoomReset()) );
|
||||
connect(imprimer, SIGNAL(triggered()), this, SLOT(dialogue_imprimer()) );
|
||||
connect(exporter, SIGNAL(triggered()), this, SLOT(dialogue_exporter()) );
|
||||
connect(imprimer, SIGNAL(triggered()), this, SLOT(dialog_print()) );
|
||||
connect(exporter, SIGNAL(triggered()), this, SLOT(dialog_export()) );
|
||||
connect(enr_fichier_sous, SIGNAL(triggered()), this, SLOT(dialogue_enregistrer_sous()));
|
||||
connect(enr_fichier, SIGNAL(triggered()), this, SLOT(enregistrer()) );
|
||||
connect(nouveau_fichier, SIGNAL(triggered()), this, SLOT(nouveau()) );
|
||||
@ -380,7 +379,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_diagram, SIGNAL(activated()), this, SLOT(editInfos()) );
|
||||
connect(infos_diagram, SIGNAL(activated()), this, SLOT(slot_editInfos()) );
|
||||
connect(add_column, SIGNAL(activated()), this, SLOT(slot_addColumn()) );
|
||||
connect(remove_column, SIGNAL(activated()), this, SLOT(slot_removeColumn()) );
|
||||
}
|
||||
@ -502,31 +501,21 @@ void QETApp::toolbar() {
|
||||
}
|
||||
|
||||
/**
|
||||
gere l'impression
|
||||
Imprime le schema courant
|
||||
*/
|
||||
void QETApp::dialogue_imprimer() {
|
||||
QPrinter qprin;
|
||||
qprin.setOrientation(QPrinter::Landscape);
|
||||
qprin.setPageSize(QPrinter::A4);
|
||||
//qprin.setPrintProgram("lp");
|
||||
QPrintDialog qpd(&qprin, this);
|
||||
|
||||
if (qpd.exec() == QDialog::Accepted) {
|
||||
QPainter qp(&qprin);
|
||||
Diagram *sc = diagramEnCours() -> scene;
|
||||
sc -> setAffichageGrille(false);
|
||||
sc -> render(&qp);
|
||||
sc -> setAffichageGrille(true);
|
||||
}
|
||||
void QETApp::dialog_print() {
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
sv -> dialogPrint();
|
||||
}
|
||||
|
||||
/**
|
||||
Gere l'export de schema vers un autre format (PNG pour le moment)
|
||||
Gere l'export de schema sous forme d'image
|
||||
*/
|
||||
void QETApp::dialogue_exporter() {
|
||||
Diagram *sc = diagramEnCours() -> scene;
|
||||
ExportDialog ed(*sc);
|
||||
ed.exec();
|
||||
void QETApp::dialog_export() {
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
sv -> dialogExport();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -753,7 +742,7 @@ void QETApp::slot_updateActions() {
|
||||
refaire -> setEnabled(document_ouvert);
|
||||
|
||||
// actions ayant aussi besoin d'elements selectionnes
|
||||
bool elements_selectionnes = document_ouvert ? (sv -> scene -> selectedItems().size() > 0) : false;
|
||||
bool elements_selectionnes = document_ouvert ? (sv -> hasSelectedItems()) : false;
|
||||
couper -> setEnabled(elements_selectionnes);
|
||||
copier -> setEnabled(elements_selectionnes);
|
||||
supprimer -> setEnabled(elements_selectionnes);
|
||||
@ -932,81 +921,29 @@ QString QETApp::languagesPath() {
|
||||
return(QDir::current().path() + "/lang/");
|
||||
}
|
||||
|
||||
void QETApp::editInfos() {
|
||||
// ne fait rien s'il n'y a pas de schema ouvert
|
||||
/**
|
||||
Edite les informations du schema en cours
|
||||
*/
|
||||
void QETApp::slot_editInfos() {
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
|
||||
// recupere le cartouche du schema
|
||||
BorderInset *inset = &(sv -> scene -> border_and_inset);
|
||||
|
||||
// construit le dialogue
|
||||
QDialog popup;
|
||||
popup.setMinimumWidth(400);
|
||||
popup.setWindowTitle(tr("Cartouche du sch\351ma"));
|
||||
|
||||
QLineEdit *titre = new QLineEdit(inset -> title(), &popup);
|
||||
QLineEdit *auteur = new QLineEdit(inset -> author(), &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);
|
||||
QWidget bidon(&popup);
|
||||
QGridLayout layout_champs(&bidon);
|
||||
layout_champs.addWidget(new QLabel(tr("Titre : ")), 0, 0);
|
||||
layout_champs.addWidget(titre, 0, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Auteur : ")), 1, 0);
|
||||
layout_champs.addWidget(auteur, 1, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Date : ")), 2, 0);
|
||||
layout_champs.addWidget(date, 2, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Fichier : ")), 3, 0);
|
||||
layout_champs.addWidget(fichier, 3, 1);
|
||||
layout_champs.addWidget(new QLabel(tr("Folio : ")), 4, 0);
|
||||
layout_champs.addWidget(folio, 4, 1);
|
||||
|
||||
// boutons
|
||||
QDialogButtonBox boutons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
connect(&boutons, SIGNAL(accepted()), &popup, SLOT(accept()));
|
||||
connect(&boutons, SIGNAL(rejected()), &popup, SLOT(accept()));
|
||||
|
||||
// ajout dans une disposition verticale
|
||||
QVBoxLayout layout_v(&popup);
|
||||
layout_v.addWidget(&bidon);
|
||||
layout_v.addWidget(&boutons);
|
||||
if (popup.exec() == QDialog::Accepted) {
|
||||
inset -> setTitle(titre -> text());
|
||||
inset -> setAuthor(auteur -> text());
|
||||
inset -> setDate(date -> date());
|
||||
inset -> setFileName(fichier -> text());
|
||||
inset -> setFolio(folio -> text());
|
||||
}
|
||||
sv -> dialogEditInfos();
|
||||
}
|
||||
|
||||
/**
|
||||
Ajoute une colonne au schema en cours
|
||||
*/
|
||||
void QETApp::slot_addColumn() {
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
|
||||
// ajoute la colonne
|
||||
sv -> scene -> border_and_inset.addColumn();
|
||||
|
||||
// met a jour la zone affichee par la vue
|
||||
QRectF sr = sv -> sceneRect();
|
||||
sr.setWidth(5.0 + sv -> scene -> border_and_inset.borderWidth());
|
||||
sv -> setSceneRect(sr);
|
||||
|
||||
// rafraichit la vue
|
||||
sv -> scene -> update(sv -> sceneRect());
|
||||
sv -> addColumn();
|
||||
}
|
||||
|
||||
/**
|
||||
Enleve une colonne au schema en cours
|
||||
*/
|
||||
void QETApp::slot_removeColumn() {
|
||||
DiagramView *sv = diagramEnCours();
|
||||
if (!sv) return;
|
||||
sv -> scene -> border_and_inset.removeColumn();
|
||||
|
||||
// on pourrait mettre a jour la zone affichee par la vue
|
||||
|
||||
// rafraichit la vue
|
||||
sv -> scene -> update(sv -> sceneRect());
|
||||
sv -> removeColumn();
|
||||
}
|
||||
|
45
qetapp.h
45
qetapp.h
@ -22,6 +22,7 @@
|
||||
static QString languagesPath();
|
||||
static QString realPath(QString &);
|
||||
static QString symbolicPath(QString &);
|
||||
|
||||
public slots:
|
||||
void systray(QSystemTrayIcon::ActivationReason);
|
||||
void systrayReduce();
|
||||
@ -30,14 +31,32 @@
|
||||
void toggleFullScreen();
|
||||
void toggleAntialiasing();
|
||||
void aPropos();
|
||||
void editInfos();
|
||||
void dialogue_imprimer();
|
||||
void dialogue_exporter();
|
||||
void dialog_print();
|
||||
void dialog_export();
|
||||
bool dialogue_enregistrer_sous();
|
||||
bool enregistrer();
|
||||
bool nouveau();
|
||||
bool ouvrir();
|
||||
bool fermer();
|
||||
void slot_editInfos();
|
||||
void slot_couper();
|
||||
void slot_copier();
|
||||
void slot_coller();
|
||||
void slot_zoomPlus();
|
||||
void slot_zoomMoins();
|
||||
void slot_zoomFit();
|
||||
void slot_zoomReset();
|
||||
void slot_selectAll();
|
||||
void slot_selectNothing();
|
||||
void slot_selectInvert();
|
||||
void slot_supprimer();
|
||||
void slot_pivoter();
|
||||
void slot_setSelectionMode();
|
||||
void slot_setVisualisationMode();
|
||||
void slot_updateActions();
|
||||
void slot_updateMenuFenetres();
|
||||
void slot_addColumn();
|
||||
void slot_removeColumn();
|
||||
|
||||
protected:
|
||||
// Actions faisables au travers de menus dans l'application QElectroTech
|
||||
@ -109,25 +128,5 @@
|
||||
void menus();
|
||||
void toolbar();
|
||||
QToolBar *barre_outils;
|
||||
|
||||
private slots:
|
||||
void slot_couper();
|
||||
void slot_copier();
|
||||
void slot_coller();
|
||||
void slot_zoomPlus();
|
||||
void slot_zoomMoins();
|
||||
void slot_zoomFit();
|
||||
void slot_zoomReset();
|
||||
void slot_selectAll();
|
||||
void slot_selectNothing();
|
||||
void slot_selectInvert();
|
||||
void slot_supprimer();
|
||||
void slot_pivoter();
|
||||
void slot_setSelectionMode();
|
||||
void slot_setVisualisationMode();
|
||||
void slot_updateActions();
|
||||
void slot_updateMenuFenetres();
|
||||
void slot_addColumn();
|
||||
void slot_removeColumn();
|
||||
};
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user