diff --git a/sources/diagram.cpp b/sources/diagram.cpp index d5534538f..9804a708c 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -898,6 +898,34 @@ bool Diagram::usesElement(const ElementsLocation &location) { return(false); } +/** + Cette methode permet d'appliquer de nouvelles options de rendu tout en + accedant aux proprietes de rendu en cours. + @param new_properties Nouvelles options de rendu a appliquer + @return les options de rendu avant l'application de new_properties +*/ +ExportProperties Diagram::applyProperties(const ExportProperties &new_properties) { + // exporte les options de rendu en cours + ExportProperties old_properties; + old_properties.draw_grid = displayGrid(); + old_properties.draw_border = border_and_inset.borderIsDisplayed(); + old_properties.draw_inset = border_and_inset.insetIsDisplayed(); + old_properties.draw_terminals = drawTerminals(); + old_properties.draw_colored_conductors = drawColoredConductors(); + old_properties.exported_area = useBorder() ? QET::BorderArea : QET::ElementsArea; + + // applique les nouvelles options de rendu + setUseBorder (new_properties.exported_area == QET::BorderArea); + setDrawTerminals (new_properties.draw_terminals); + setDrawColoredConductors (new_properties.draw_colored_conductors); + setDisplayGrid (new_properties.draw_grid); + border_and_inset.displayBorder(new_properties.draw_border); + border_and_inset.displayInset (new_properties.draw_inset); + + // retourne les anciennes options de rendu + return(old_properties); +} + /** @param pos Position cartesienne (ex : 10.3, 45.2) a transformer en position dans la grille (ex : B2) diff --git a/sources/diagram.h b/sources/diagram.h index 882ac9683..1d80bcb16 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -22,6 +22,7 @@ #include "borderinset.h" #include "qgimanager.h" #include "conductorproperties.h" +#include "exportproperties.h" class Element; class CustomElement; class Terminal; @@ -128,6 +129,7 @@ class Diagram : public QGraphicsScene { void removeDiagramTextItem(DiagramTextItem *); // fonctions relatives aux options graphiques + ExportProperties applyProperties(const ExportProperties &); void setDisplayGrid(bool); bool displayGrid(); void setUseBorder(bool); diff --git a/sources/exportdialog.cpp b/sources/exportdialog.cpp index 8790505ba..51b95788d 100644 --- a/sources/exportdialog.cpp +++ b/sources/exportdialog.cpp @@ -309,38 +309,14 @@ QImage ExportDialog::generateImage(Diagram *diagram, int width, int height, bool definis par le formulaire, false pour restaurer les parametres */ void ExportDialog::saveReloadDiagramParameters(Diagram *diagram, bool save) { - static bool state_drawBorder; - static bool state_drawInset; - static bool state_drawGrid; - static bool state_drawTerm; - static bool state_drawColCond; - static bool state_useBorder; + static ExportProperties state_exportProperties; if (save) { - // memorise les parametres relatifs au schema - state_drawBorder = diagram -> border_and_inset.borderIsDisplayed(); - state_drawInset = diagram -> border_and_inset.insetIsDisplayed(); - state_drawGrid = diagram -> displayGrid(); - state_drawTerm = diagram -> drawTerminals(); - state_drawColCond = diagram -> drawColoredConductors(); - state_useBorder = diagram -> useBorder(); - - ExportProperties export_properties = epw -> exportProperties(); - - diagram -> setUseBorder (export_properties.exported_area == QET::BorderArea); - diagram -> setDrawTerminals (export_properties.draw_terminals); - diagram -> setDrawColoredConductors (export_properties.draw_colored_conductors); - diagram -> setDisplayGrid (export_properties.draw_grid); - diagram -> border_and_inset.displayBorder(export_properties.draw_border); - diagram -> border_and_inset.displayInset (export_properties.draw_inset); + // memorise les parametres relatifs au schema tout en appliquant les nouveaux + state_exportProperties = diagram -> applyProperties(epw -> exportProperties()); } else { // restaure les parametres relatifs au schema - diagram -> border_and_inset.displayBorder(state_drawBorder); - diagram -> border_and_inset.displayInset(state_drawInset); - diagram -> setDisplayGrid(state_drawGrid); - diagram -> setDrawTerminals(state_drawTerm); - diagram -> setDrawColoredConductors(state_drawColCond); - diagram -> setUseBorder(state_useBorder); + diagram -> applyProperties(state_exportProperties); } }