diff --git a/sources/diagramprintdialog.cpp b/sources/diagramprintdialog.cpp index 8c1209995..6241a3a8f 100644 --- a/sources/diagramprintdialog.cpp +++ b/sources/diagramprintdialog.cpp @@ -19,6 +19,7 @@ #include "qetprintpreviewdialog.h" #include #include "diagramschooser.h" +#include "exportproperties.h" #include "qeticons.h" #include "qetmessagebox.h" @@ -122,13 +123,23 @@ void DiagramPrintDialog::exec() { // Apercu avant impression QETPrintPreviewDialog preview_dialog(project_, printer_, parentWidget()); - connect(&preview_dialog, SIGNAL(paintRequested(const QList &, bool, QPrinter *)), this, SLOT(print(const QList &, bool, QPrinter *))); + connect( + &preview_dialog, + SIGNAL(paintRequested(const QList &, bool, const ExportProperties, QPrinter *)), + this, + SLOT(print(const QList &, bool, const ExportProperties, QPrinter *)) + ); DiagramsChooser *dc = preview_dialog.diagramsChooser(); dc -> setSelectedAllDiagrams(); if (preview_dialog.exec() == QDialog::Rejected) return; // effectue l'impression en elle-meme - print(dc -> selectedDiagrams(), preview_dialog.fitDiagramsToPages(), printer_); + print( + dc -> selectedDiagrams(), + preview_dialog.fitDiagramsToPages(), + preview_dialog.exportProperties(), + printer_ + ); } /** @@ -317,9 +328,10 @@ void DiagramPrintDialog::browseFilePrintTypeDialog() { @param diagrams Schemas a imprimer @param fit_page Booleen indiquant s'il faut adapter les schemas aux pages ou non + @param options Options de rendu @param printer L'imprimante a utiliser */ -void DiagramPrintDialog::print(const QList &diagrams, bool fit_page, QPrinter */*printer*/) { +void DiagramPrintDialog::print(const QList &diagrams, bool fit_page, const ExportProperties options, QPrinter */*printer*/) { //qDebug() << "Demande d'impression de " << diagrams.count() << "schemas."; // QPainter utiliser pour effectuer le rendu @@ -333,7 +345,7 @@ void DiagramPrintDialog::print(const QList &diagrams, bool fit_page, // imprime les schemas for (int i = 0 ; i < diagrams.count() ; ++ i) { - printDiagram(diagrams[i], fit_page, &qp, printer_); + printDiagram(diagrams[i], fit_page, options, &qp, printer_); if (i != diagrams.count() - 1) { printer_ -> newPage(); } @@ -347,7 +359,7 @@ void DiagramPrintDialog::print(const QList &diagrams, bool fit_page, @param qp QPainter a utiliser (deja initialise sur printer) @param printer Imprimante a utiliser */ -void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, QPainter *qp, QPrinter *printer) { +void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, const ExportProperties options, QPainter *qp, QPrinter *printer) { //qDebug() << printer -> paperSize() << printer -> paperRect() << diagram -> title(); // l'imprimante utilise-t-elle toute la feuille ? bool full_page = printer -> fullPage (); @@ -357,8 +369,7 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, QPainter // utiliser cette condition pour agir differemment en cas d'impression physique } - diagram -> setDisplayGrid(false); - diagram -> setDrawTerminals(false); + saveReloadDiagramParameters(diagram, options, true); if (fit_page) { // impression adaptee sur une seule page @@ -426,6 +437,24 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, QPainter } } } - diagram -> setDrawTerminals(true); - diagram -> setDisplayGrid(true); + saveReloadDiagramParameters(diagram, options, false); +} + +/** + Sauve ou restaure les parametres du schema + @param diagram Schema dont on sauve ou restaure les parametres + @param options Parametres a appliquer + @param save true pour memoriser les parametres du schema et appliquer ceux + definis dans options, false pour restaurer les parametres +*/ +void DiagramPrintDialog::saveReloadDiagramParameters(Diagram *diagram, const ExportProperties options, bool save) { + static ExportProperties state_exportProperties; + + if (save) { + // memorise les parametres relatifs au schema tout en appliquant les nouveaux + state_exportProperties = diagram -> applyProperties(options); + } else { + // restaure les parametres relatifs au schema + diagram -> applyProperties(state_exportProperties); + } } diff --git a/sources/diagramprintdialog.h b/sources/diagramprintdialog.h index bf8ba22e0..29ec9b87d 100644 --- a/sources/diagramprintdialog.h +++ b/sources/diagramprintdialog.h @@ -20,6 +20,7 @@ #include #include "qetproject.h" #include "diagram.h" +#include "exportproperties.h" /** Cette classe represente le dialogue de configuration de l'impression d'un schema electrique. @@ -49,10 +50,11 @@ class DiagramPrintDialog : public QWidget { private: void buildPrintTypeDialog(); void buildDialog(); + void saveReloadDiagramParameters(Diagram *, const ExportProperties, bool); private slots: - void print(const QList &, bool, QPrinter *); - void printDiagram(Diagram *, bool, QPainter *, QPrinter * = 0); + void print(const QList &, bool, const ExportProperties, QPrinter *); + void printDiagram(Diagram *, bool, const ExportProperties, QPainter *, QPrinter * = 0); void updatePrintTypeDialog(); void acceptPrintTypeDialog(); void browseFilePrintTypeDialog(); diff --git a/sources/qetprintpreviewdialog.cpp b/sources/qetprintpreviewdialog.cpp index 71f7d9b4f..a4022213e 100644 --- a/sources/qetprintpreviewdialog.cpp +++ b/sources/qetprintpreviewdialog.cpp @@ -17,6 +17,8 @@ */ #include "qetprintpreviewdialog.h" #include "diagramschooser.h" +#include "exportproperties.h" +#include "exportpropertieswidget.h" #include "qeticons.h" /** @@ -59,6 +61,13 @@ bool QETPrintPreviewDialog::fitDiagramsToPages() const { return(fit_diagram_to_page_ -> isChecked()); } +/** + @return les options de rendu definies par l'utilisateur +*/ +ExportProperties QETPrintPreviewDialog::exportProperties() const { + return(render_properties_ -> exportProperties()); +} + /** Passe a la premiere page */ @@ -222,6 +231,9 @@ void QETPrintPreviewDialog::build() { fit_diagram_to_page_label_ -> setContentsMargins(20, 0, 0, 0); fit_diagram_to_page_ -> setChecked(true); + render_properties_ = new ExportPropertiesWidget(); + render_properties_ -> setPrintingMode(true); + buttons_ = new QDialogButtonBox(); buttons_ -> addButton(new QPushButton(QET::Icons::DocumentPrint, tr("Imprimer")), QDialogButtonBox::AcceptRole); buttons_ -> addButton(QDialogButtonBox::Cancel); @@ -246,6 +258,8 @@ void QETPrintPreviewDialog::build() { connect(use_full_page_, SIGNAL(toggled(bool)), this, SLOT(useFullPage(bool))); connect(fit_diagram_to_page_, SIGNAL(toggled(bool)), this, SLOT(fitDiagramToPage(bool))); + connect(render_properties_, SIGNAL(optionChanged()), preview_, SLOT(updatePreview())); + connect(preview_, SIGNAL(previewChanged()), this, SLOT(updateZoomList())); connect(zoom_box_, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePreviewZoom())); @@ -271,6 +285,7 @@ void QETPrintPreviewDialog::build() { vlayout0_ -> addWidget(toolbar_); vlayout0_ -> addLayout(hlayout0_); + vlayout0_ -> addWidget(render_properties_); vlayout0_ -> addWidget(print_options_box_); vlayout0_ -> addWidget(buttons_); @@ -289,6 +304,7 @@ void QETPrintPreviewDialog::requestPaint(QPrinter *printer) { paintRequested( diagrams_list_ -> selectedDiagrams(), fit_diagram_to_page_ -> isChecked(), + render_properties_ -> exportProperties(), printer ) ); @@ -328,6 +344,7 @@ void QETPrintPreviewDialog::setDiagramsListVisible(bool display) { */ void QETPrintPreviewDialog::setPrintOptionsVisible(bool display) { print_options_box_ -> setVisible(display); + render_properties_ -> setVisible(display); if (display) { toggle_print_options_ -> setText(tr("Cacher les options d'impression")); diff --git a/sources/qetprintpreviewdialog.h b/sources/qetprintpreviewdialog.h index afacc6970..ff6ad5f7a 100644 --- a/sources/qetprintpreviewdialog.h +++ b/sources/qetprintpreviewdialog.h @@ -18,8 +18,10 @@ #ifndef QET_PRINT_PREVIEW_DIALOG #define QET_PRINT_PREVIEW_DIALOG #include +#include "exportproperties.h" class Diagram; class DiagramsChooser; +class ExportPropertiesWidget; class QETProject; /** Cette classe represente un dialogue permettant d'affiner les options @@ -40,10 +42,11 @@ class QETPrintPreviewDialog : public QDialog { public: DiagramsChooser *diagramsChooser(); bool fitDiagramsToPages() const; + ExportProperties exportProperties() const; // signaux signals: - void paintRequested(const QList &, bool, QPrinter *); + void paintRequested(const QList &, bool, const ExportProperties, QPrinter *); public slots: void firstPage(); @@ -91,6 +94,7 @@ class QETPrintPreviewDialog : public QDialog { QLabel *use_full_page_label_; QCheckBox *fit_diagram_to_page_; QLabel *fit_diagram_to_page_label_; + ExportPropertiesWidget *render_properties_; // methodes private: