Changed every occurence in the code of the "inset" term to "title block".

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@1132 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2010-12-20 02:45:36 +00:00
parent 596bd6fd1b
commit 616626cb1c
39 changed files with 737 additions and 737 deletions

View File

@@ -180,7 +180,7 @@
<file>ico/oxygen-icons/48x48/apps/qelectrotech.png</file>
<file>ico/oxygen-icons/64x64/apps/qelectrotech.png</file>
<file>ico/splash.png</file>
<file>insets/default.inset</file>
<file>titleblocks/default.titleblock</file>
<file>LICENSE</file>
</qresource>
</RCC>

View File

@@ -18,7 +18,7 @@
#include "borderpropertieswidget.h"
#include <QtGui>
#include "qetapp.h"
#include "borderinset.h"
#include "bordertitleblock.h"
/**
Constructeur
@@ -99,11 +99,11 @@ void BorderPropertiesWidget::build() {
QLabel *ds1 = new QLabel(tr("Colonnes :"));
columns_count = new QSpinBox(diagram_size_box);
columns_count -> setMinimum(BorderInset::minNbColumns());
columns_count -> setMinimum(BorderTitleBlock::minNbColumns());
columns_count -> setMaximum(10000); // valeur arbitraire
columns_width = new QSpinBox(diagram_size_box);
columns_width -> setMinimum(qRound(BorderInset::minColumnsWidth()));
columns_width -> setMinimum(qRound(BorderTitleBlock::minColumnsWidth()));
columns_width -> setSingleStep(10);
columns_width -> setPrefix(tr("\327", "multiplication symbol"));
columns_width -> setSuffix(tr("px", "unit for cols width"));
@@ -114,11 +114,11 @@ void BorderPropertiesWidget::build() {
QLabel *ds2 = new QLabel(tr("Lignes :"));
rows_count = new QSpinBox(diagram_size_box);
rows_count -> setMinimum(BorderInset::minNbRows());
rows_count -> setMinimum(BorderTitleBlock::minNbRows());
rows_count -> setMaximum(10000); // valeur arbitraire
rows_height = new QSpinBox(diagram_size_box);
rows_height -> setMinimum(qRound(BorderInset::minRowsHeight()));
rows_height -> setMinimum(qRound(BorderTitleBlock::minRowsHeight()));
rows_height -> setSingleStep(10);
rows_height -> setPrefix(tr("\327", "multiplication symbol"));
rows_height -> setSuffix(tr("px", "unit for rows height"));

View File

@@ -24,7 +24,7 @@ class QSpinBox;
/**
Cette classe represente un widget permettant d'editer les dimensions et les
options d'affichage d'un schema, cartouche non inclus.
@see InsetPropertiesWidget
@see TitleBlockPropertiesWidget
*/
class BorderPropertiesWidget : public QWidget {
Q_OBJECT

View File

@@ -16,10 +16,10 @@
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QPainter>
#include "insettemplate.h"
#include "insettemplaterenderer.h"
#include "titleblocktemplate.h"
#include "titleblocktemplaterenderer.h"
#include "diagramcontext.h"
#include "borderinset.h"
#include "bordertitleblock.h"
#include "diagramposition.h"
#include "qetapp.h"
#include "math.h"
@@ -27,22 +27,22 @@
/**
Constructeur simple : construit une bordure en recuperant les dimensions
dans la configuration de l'application.
@param parent QObject parent de ce BorderInset
@param parent QObject parent de ce BorderTitleBlock
*/
BorderInset::BorderInset(QObject *parent) :
BorderTitleBlock::BorderTitleBlock(QObject *parent) :
QObject(parent)
{
// at first, the internal inset template renderer uses the default inset template
inset_template_renderer = new InsetTemplateRenderer(this);
inset_template_renderer -> setInsetTemplate(QETApp::defaultInsetTemplate());
// at first, the internal titleblock template renderer uses the default titleblock template
titleblock_template_renderer = new TitleBlockTemplateRenderer(this);
titleblock_template_renderer -> setTitleBlockTemplate(QETApp::defaultTitleBlockTemplate());
// dimensions par defaut du schema
importBorder(BorderProperties());
// contenu par defaut du cartouche
importInset(InsetProperties());
importTitleBlock(TitleBlockProperties());
display_inset = true;
display_titleblock = true;
display_border = true;
setFolioData(1, 1);
updateRectangles();
@@ -51,49 +51,49 @@ BorderInset::BorderInset(QObject *parent) :
/**
Destructeur - ne fait rien
*/
BorderInset::~BorderInset() {
BorderTitleBlock::~BorderTitleBlock() {
}
/**
@return la hauteur du cartouche
*/
qreal BorderInset::insetHeight() const {
return(inset_template_renderer -> height());
qreal BorderTitleBlock::titleBlockHeight() const {
return(titleblock_template_renderer -> height());
}
/**
@return Le nombre minimum de colonnes qu'un schema doit comporter
*/
int BorderInset::minNbColumns() {
int BorderTitleBlock::minNbColumns() {
return(3);
}
/**
@return la largeur minimale d'une colonne de schema
*/
qreal BorderInset::minColumnsWidth() {
qreal BorderTitleBlock::minColumnsWidth() {
return(5.0);
}
/**
@return Le nombre minimum de lignes qu'un schema doit comporter
*/
int BorderInset::minNbRows() {
int BorderTitleBlock::minNbRows() {
return(2);
}
/**
@return la hauteur minimale d'une ligne de schema
*/
qreal BorderInset::minRowsHeight() {
qreal BorderTitleBlock::minRowsHeight() {
return(5.0);
}
/**
@return les proprietes du cartouches
*/
InsetProperties BorderInset::exportInset() {
InsetProperties ip;
TitleBlockProperties BorderTitleBlock::exportTitleBlock() {
TitleBlockProperties ip;
ip.author = bi_author;
ip.date = bi_date;
ip.title = bi_title;
@@ -105,20 +105,20 @@ InsetProperties BorderInset::exportInset() {
/**
@param ip les nouvelles proprietes du cartouche
*/
void BorderInset::importInset(const InsetProperties &ip) {
void BorderTitleBlock::importTitleBlock(const TitleBlockProperties &ip) {
bi_author = ip.author;
bi_date = ip.date;
setTitle(ip.title);
bi_folio = ip.folio;
bi_filename = ip.filename;
updateDiagramContextForInset();
updateDiagramContextForTitleBlock();
emit(needFolioData());
}
/**
@return les proprietes de la bordure
*/
BorderProperties BorderInset::exportBorder() {
BorderProperties BorderTitleBlock::exportBorder() {
BorderProperties bp;
bp.columns_count = nbColumns();
bp.columns_width = columnsWidth();
@@ -134,7 +134,7 @@ BorderProperties BorderInset::exportBorder() {
/**
@param bp les nouvelles proprietes de la bordure
*/
void BorderInset::importBorder(const BorderProperties &bp) {
void BorderTitleBlock::importBorder(const BorderProperties &bp) {
setColumnsHeaderHeight(bp.columns_header_height);
setNbColumns(bp.columns_count);
setColumnsWidth(bp.columns_width);
@@ -146,34 +146,34 @@ void BorderInset::importBorder(const BorderProperties &bp) {
}
/**
@return the inset template used to render the inset
@see InsetTemplateRenderer::insetTemplate()
@return the titleblock template used to render the titleblock
@see TitleBlockTemplateRenderer::titleBlockTemplate()
*/
const InsetTemplate *BorderInset::insetTemplate() {
return(inset_template_renderer -> insetTemplate());
const TitleBlockTemplate *BorderTitleBlock::titleBlockTemplate() {
return(titleblock_template_renderer -> titleBlockTemplate());
}
/**
@param inset_template The new inset template to use to render the inset
@see InsetTemplateRenderer::setInsetTemplate()
@param titleblock_template The new titleblock template to use to render the titleblock
@see TitleBlockTemplateRenderer::setTitleBlockTemplate()
*/
void BorderInset::setInsetTemplate(const InsetTemplate *inset_template) {
inset_template_renderer -> setInsetTemplate(inset_template);
void BorderTitleBlock::setTitleBlockTemplate(const TitleBlockTemplate *titleblock_template) {
titleblock_template_renderer -> setTitleBlockTemplate(titleblock_template);
}
/**
@param di true pour afficher le cartouche, false sinon
*/
void BorderInset::displayInset(bool di) {
bool change = (di != display_inset);
display_inset = di;
void BorderTitleBlock::displayTitleBlock(bool di) {
bool change = (di != display_titleblock);
display_titleblock = di;
if (change) emit(displayChanged());
}
/**
@param dc true pour afficher les entetes des colonnes, false sinon
*/
void BorderInset::displayColumns(bool dc) {
void BorderTitleBlock::displayColumns(bool dc) {
bool change = (dc != display_columns);
display_columns = dc;
if (change) emit(displayChanged());
@@ -182,7 +182,7 @@ void BorderInset::displayColumns(bool dc) {
/**
@param dr true pour afficher les entetes des lignes, false sinon
*/
void BorderInset::displayRows(bool dr) {
void BorderTitleBlock::displayRows(bool dr) {
bool change = (dr != display_rows);
display_rows = dr;
if (change) emit(displayChanged());
@@ -193,7 +193,7 @@ void BorderInset::displayRows(bool dr) {
Note : si l'affichage de la bordure est ainsi desactivee, les lignes et
colonnes ne seront pas dessinees.
*/
void BorderInset::displayBorder(bool db) {
void BorderTitleBlock::displayBorder(bool db) {
bool change = (db != display_border);
display_border = db;
if (change) emit(displayChanged());
@@ -203,14 +203,14 @@ void BorderInset::displayBorder(bool db) {
Methode recalculant les rectangles composant le cadre et le cartouche en
fonction des attributs de taille
*/
void BorderInset::updateRectangles() {
void BorderTitleBlock::updateRectangles() {
// rectangle delimitant le schema
QRectF previous_diagram = diagram;
diagram = QRectF(0, 0, diagramWidth(), diagramHeight());
if (diagram != previous_diagram) emit(borderChanged(previous_diagram, diagram));
// rectangles relatifs au cartouche
inset = QRectF(diagram.bottomLeft().x(), diagram.bottomLeft().y(), insetWidth(), insetHeight());
titleblock = QRectF(diagram.bottomLeft().x(), diagram.bottomLeft().y(), titleBlockWidth(), titleBlockHeight());
}
/**
@@ -219,10 +219,10 @@ void BorderInset::updateRectangles() {
@param x Abscisse du cadre
@param y Ordonnee du cadre
*/
void BorderInset::draw(QPainter *qp, qreal x, qreal y) {
void BorderTitleBlock::draw(QPainter *qp, qreal x, qreal y) {
// translate tous les rectangles
diagram .translate(x, y);
inset .translate(x, y);
titleblock .translate(x, y);
// prepare le QPainter
qp -> save();
@@ -276,24 +276,24 @@ void BorderInset::draw(QPainter *qp, qreal x, qreal y) {
}
}
// render the inset, using the InsetTemplate object
if (display_inset) {
qp -> translate(inset.topLeft());
inset_template_renderer -> render(qp, inset.width());
qp -> translate(-inset.topLeft());
// render the titleblock, using the TitleBlockTemplate object
if (display_titleblock) {
qp -> translate(titleblock.topLeft());
titleblock_template_renderer -> render(qp, titleblock.width());
qp -> translate(-titleblock.topLeft());
}
qp -> restore();
// annule la translation des rectangles
diagram .translate(-x, -y);
inset .translate(-x, -y);
titleblock .translate(-x, -y);
}
/**
Ajoute une colonne.
*/
void BorderInset::addColumn() {
void BorderTitleBlock::addColumn() {
setNbColumns(nbColumns() + 1);
}
@@ -301,14 +301,14 @@ void BorderInset::addColumn() {
Enleve une colonne sans passer sous le minimum requis.
@see minNbColumns()
*/
void BorderInset::removeColumn() {
void BorderTitleBlock::removeColumn() {
setNbColumns(nbColumns() - 1);
}
/**
Ajoute une ligne.
*/
void BorderInset::addRow() {
void BorderTitleBlock::addRow() {
setNbRows(nbRows() + 1);
}
@@ -316,7 +316,7 @@ void BorderInset::addRow() {
Enleve une ligne sans passer sous le minimum requis.
@see minNbRows()
*/
void BorderInset::removeRow() {
void BorderTitleBlock::removeRow() {
setNbRows(nbRows() - 1);
}
@@ -327,10 +327,10 @@ void BorderInset::removeRow() {
@param nb_c nouveau nombre de colonnes
@see minNbColumns()
*/
void BorderInset::setNbColumns(int nb_c) {
void BorderTitleBlock::setNbColumns(int nb_c) {
if (nb_c == nbColumns()) return;
nb_columns = qMax(minNbColumns(), nb_c);
setInsetWidth(diagramWidth());
setTitleBlockWidth(diagramWidth());
}
/**
@@ -340,10 +340,10 @@ void BorderInset::setNbColumns(int nb_c) {
@param new_cw nouvelle largeur des colonnes
@see minColumnsWidth()
*/
void BorderInset::setColumnsWidth(const qreal &new_cw) {
void BorderTitleBlock::setColumnsWidth(const qreal &new_cw) {
if (new_cw == columnsWidth()) return;
columns_width = qMax(minColumnsWidth(), new_cw);
setInsetWidth(diagramWidth());
setTitleBlockWidth(diagramWidth());
}
/**
@@ -351,7 +351,7 @@ void BorderInset::setColumnsWidth(const qreal &new_cw) {
doit rester comprise entre 5 et 50 px.
@param new_chh nouvelle hauteur des en-tetes de colonnes
*/
void BorderInset::setColumnsHeaderHeight(const qreal &new_chh) {
void BorderTitleBlock::setColumnsHeaderHeight(const qreal &new_chh) {
columns_header_height = qBound(qreal(5.0), new_chh, qreal(50.0));
updateRectangles();
}
@@ -363,10 +363,10 @@ void BorderInset::setColumnsHeaderHeight(const qreal &new_chh) {
@param nb_r nouveau nombre de lignes
@see minNbRows()
*/
void BorderInset::setNbRows(int nb_r) {
void BorderTitleBlock::setNbRows(int nb_r) {
if (nb_r == nbRows()) return;
nb_rows = qMax(minNbRows(), nb_r);
setInsetWidth(diagramWidth());
setTitleBlockWidth(diagramWidth());
updateRectangles();
}
@@ -377,7 +377,7 @@ void BorderInset::setNbRows(int nb_r) {
@param new_rh nouvelle hauteur des lignes
@see minRowsHeight()
*/
void BorderInset::setRowsHeight(const qreal &new_rh) {
void BorderTitleBlock::setRowsHeight(const qreal &new_rh) {
if (new_rh == rowsHeight()) return;
rows_height = qMax(minRowsHeight(), new_rh);
updateRectangles();
@@ -388,7 +388,7 @@ void BorderInset::setRowsHeight(const qreal &new_rh) {
doit rester comprise entre 5 et 50 px.
@param new_rhw nouvelle largeur des en-tetes des lignes
*/
void BorderInset::setRowsHeaderWidth(const qreal &new_rhw) {
void BorderTitleBlock::setRowsHeaderWidth(const qreal &new_rhw) {
rows_header_width = qBound(qreal(5.0), new_rhw, qreal(50.0));
updateRectangles();
}
@@ -397,7 +397,7 @@ void BorderInset::setRowsHeaderWidth(const qreal &new_rhw) {
Cette methode essaye de se rapprocher le plus possible de la hauteur donnee
en parametre en modifiant le nombre de lignes en cours.
*/
void BorderInset::setDiagramHeight(const qreal &height) {
void BorderTitleBlock::setDiagramHeight(const qreal &height) {
// taille des lignes a utiliser = rows_height
setNbRows(qRound(ceil(height / rows_height)));
}
@@ -406,8 +406,8 @@ void BorderInset::setDiagramHeight(const qreal &height) {
Change la largeur du cartouche. Cette largeur sera restreinte a celle du
schema.
*/
void BorderInset::setInsetWidth(const qreal &new_iw) {
inset_width = qMin(diagramWidth(), new_iw);
void BorderTitleBlock::setTitleBlockWidth(const qreal &new_iw) {
titleblock_width = qMin(diagramWidth(), new_iw);
updateRectangles();
}
@@ -416,8 +416,8 @@ void BorderInset::setInsetWidth(const qreal &new_iw) {
Ajuste la largeur du cartouche de facon a ce que celui-ci soit aussi large
que le schema
*/
void BorderInset::adjustInsetToColumns() {
setInsetWidth(diagramWidth());
void BorderTitleBlock::adjustTitleBlockToColumns() {
setTitleBlockWidth(diagramWidth());
}
/**
@@ -425,7 +425,7 @@ void BorderInset::adjustInsetToColumns() {
dans la grille (ex : B2)
@return la position dans la grille correspondant a pos
*/
DiagramPosition BorderInset::convertPosition(const QPointF &pos) {
DiagramPosition BorderTitleBlock::convertPosition(const QPointF &pos) {
// recupere le rectangle quadrille par les en-tetes
QRectF grid_rect(
rowsHeaderWidth(),
@@ -451,10 +451,10 @@ DiagramPosition BorderInset::convertPosition(const QPointF &pos) {
}
/**
Update the informations given to the inset template by regenerating a
Update the informations given to the titleblock template by regenerating a
DiagramContext object.
*/
void BorderInset::updateDiagramContextForInset() {
void BorderTitleBlock::updateDiagramContextForTitleBlock() {
DiagramContext context;
context.addValue("author", bi_author);
context.addValue("date", bi_date.toString("dd/MM/yyyy"));
@@ -464,10 +464,10 @@ void BorderInset::updateDiagramContextForInset() {
context.addValue("folio-id", folio_index_);
context.addValue("folio-total", folio_total_);
inset_template_renderer -> setContext(context);
titleblock_template_renderer -> setContext(context);
}
QString BorderInset::incrementLetters(const QString &string) {
QString BorderTitleBlock::incrementLetters(const QString &string) {
if (string.isEmpty()) {
return("A");
} else {
@@ -488,7 +488,7 @@ QString BorderInset::incrementLetters(const QString &string) {
@param index numero du schema (de 1 a total)
@param total nombre total de schemas dans le projet
*/
void BorderInset::setFolioData(int index, int total) {
void BorderTitleBlock::setFolioData(int index, int total) {
if (index < 1 || total < 1 || index > total) return;
// memorise les informations
@@ -500,5 +500,5 @@ void BorderInset::setFolioData(int index, int total) {
bi_final_folio.replace("%id", QString::number(folio_index_));
bi_final_folio.replace("%total", QString::number(folio_total_));
updateDiagramContextForInset();
updateDiagramContextForTitleBlock();
}

View File

@@ -15,31 +15,31 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BORDERINSET_H
#define BORDERINSET_H
#include "insetproperties.h"
#ifndef BORDERTITLEBLOCK_H
#define BORDERTITLEBLOCK_H
#include "titleblockproperties.h"
#include "borderproperties.h"
#include <QObject>
#include <QRectF>
#include <QDate>
class QPainter;
class DiagramPosition;
class InsetTemplate;
class InsetTemplateRenderer;
class TitleBlockTemplate;
class TitleBlockTemplateRenderer;
/**
Cette classe represente l'ensemble bordure + cartouche qui encadre le
schema electrique.
*/
class BorderInset : public QObject {
class BorderTitleBlock : public QObject {
Q_OBJECT
// constructeurs, destructeur
public:
BorderInset(QObject * = 0);
virtual ~BorderInset();
BorderTitleBlock(QObject * = 0);
virtual ~BorderTitleBlock();
private:
BorderInset(const BorderInset &);
BorderTitleBlock(const BorderTitleBlock &);
// methodes
public:
@@ -79,14 +79,14 @@ class BorderInset : public QObject {
// cartouche
/// @return la largeur du cartouche
qreal insetWidth() const { return(inset_width); }
qreal insetHeight() const;
qreal titleBlockWidth() const { return(titleblock_width); }
qreal titleBlockHeight() const;
// cadre avec le cartouche
/// @return la hauteur de la bordure
qreal borderWidth() const { return(diagramWidth()); }
/// @return la hauteur de la bordure
qreal borderHeight() const { return(diagramHeight() + insetHeight()); }
qreal borderHeight() const { return(diagramHeight() + titleBlockHeight()); }
// methodes d'acces en lecture aux informations du cartouche
/// @return le champ "Auteur" du cartouche
@@ -102,7 +102,7 @@ class BorderInset : public QObject {
// methodes d'acces en lecture aux options
/// @return true si le cartouche est affiche, false sinon
bool insetIsDisplayed() const { return(display_inset); }
bool titleBlockIsDisplayed() const { return(display_titleblock); }
/// @return true si les entetes des colonnes sont affiches, false sinon
bool columnsAreDisplayed() const { return(display_columns); }
/// @return true si les entetes des lignes sont affiches, false sinon
@@ -122,8 +122,8 @@ class BorderInset : public QObject {
void setColumnsHeaderHeight(const qreal &);
void setRowsHeaderWidth (const qreal &);
void setDiagramHeight (const qreal &);
void setInsetWidth (const qreal &);
void adjustInsetToColumns ();
void setTitleBlockWidth (const qreal &);
void adjustTitleBlockToColumns ();
DiagramPosition convertPosition(const QPointF &);
@@ -145,23 +145,23 @@ class BorderInset : public QObject {
/// @param filename le nouveau contenu du champ "Fichier"
void setFileName (const QString &filename) { bi_filename = filename; }
InsetProperties exportInset();
void importInset(const InsetProperties &);
TitleBlockProperties exportTitleBlock();
void importTitleBlock(const TitleBlockProperties &);
BorderProperties exportBorder();
void importBorder(const BorderProperties &);
const InsetTemplate *insetTemplate();
void setInsetTemplate(const InsetTemplate *);
const TitleBlockTemplate *titleBlockTemplate();
void setTitleBlockTemplate(const TitleBlockTemplate *);
// methodes d'acces en ecriture aux options
void displayInset(bool);
void displayTitleBlock(bool);
void displayColumns(bool);
void displayRows(bool);
void displayBorder(bool);
private:
void updateRectangles();
void updateDiagramContextForInset();
void updateDiagramContextForTitleBlock();
QString incrementLetters(const QString &);
// signaux
@@ -212,18 +212,18 @@ class BorderInset : public QObject {
qreal rows_header_width;
// dimensions du cartouche
qreal inset_width;
qreal inset_height;
qreal titleblock_width;
qreal titleblock_height;
// rectangles utilises pour le dessin
QRectF diagram;
QRectF inset;
QRectF titleblock;
// booleens pour les options de dessin
bool display_inset;
bool display_titleblock;
bool display_columns;
bool display_rows;
bool display_border;
InsetTemplateRenderer *inset_template_renderer;
TitleBlockTemplateRenderer *titleblock_template_renderer;
};
#endif

View File

@@ -18,10 +18,10 @@
#include "configpages.h"
#include "borderpropertieswidget.h"
#include "conductorpropertieswidget.h"
#include "insetpropertieswidget.h"
#include "titleblockpropertieswidget.h"
#include "qetapp.h"
#include "qetdiagrameditor.h"
#include "borderinset.h"
#include "bordertitleblock.h"
#include "qeticons.h"
#include "exportpropertieswidget.h"
@@ -34,7 +34,7 @@ NewDiagramPage::NewDiagramPage(QWidget *parent) : ConfigPage(parent) {
bpw = new BorderPropertiesWidget(QETDiagramEditor::defaultBorderProperties());
// proprietes par defaut d'un cartouche
ipw = new InsetPropertiesWidget(QETDiagramEditor::defaultInsetProperties(), true);
ipw = new TitleBlockPropertiesWidget(QETDiagramEditor::defaultTitleBlockProperties(), true);
// proprietes par defaut des conducteurs
cpw = new ConductorPropertiesWidget(QETDiagramEditor::defaultConductorProperties());
@@ -77,7 +77,7 @@ void NewDiagramPage::applyConf() {
bpw -> borderProperties().toSettings(settings, "diagrameditor/default");
// proprietes du cartouche
ipw-> insetProperties().toSettings(settings, "diagrameditor/default");
ipw-> titleBlockProperties().toSettings(settings, "diagrameditor/default");
// proprietes par defaut des conducteurs
cpw -> conductorProperties().toSettings(settings, "diagrameditor/defaultconductor");

View File

@@ -20,7 +20,7 @@
#include <QtGui>
class BorderPropertiesWidget;
class ConductorPropertiesWidget;
class InsetPropertiesWidget;
class TitleBlockPropertiesWidget;
class ExportPropertiesWidget;
/**
Cette classe abstraite contient les methodes que toutes les pages de
@@ -65,7 +65,7 @@ class NewDiagramPage : public ConfigPage {
// attributs
public:
BorderPropertiesWidget *bpw; ///< Widget d'edition des dimensions du schema
InsetPropertiesWidget *ipw; ///< Widget d'edition des proprietes par defaut du cartouche
TitleBlockPropertiesWidget *ipw; ///< Widget d'edition des proprietes par defaut du cartouche
ConductorPropertiesWidget *cpw; ///< Widget d'edition des proprietes par defaut des conducteurs
};

View File

@@ -131,7 +131,7 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
p -> drawPoints(points);
}
if (use_border) border_and_inset.draw(p, margin, margin);
if (use_border) border_and_titleblock.draw(p, margin, margin);
p -> restore();
}
@@ -190,8 +190,8 @@ bool Diagram::toPaintDevice(QPaintDevice &pix, int width, int height, Qt::Aspect
source_area = QRectF(
0.0,
0.0,
border_and_inset.borderWidth () + 2.0 * margin,
border_and_inset.borderHeight() + 2.0 * margin
border_and_titleblock.borderWidth () + 2.0 * margin,
border_and_titleblock.borderHeight() + 2.0 * margin
);
}
@@ -233,8 +233,8 @@ QSize Diagram::imageSize() const {
image_width = items_rect.width();
image_height = items_rect.height();
} else {
image_width = border_and_inset.borderWidth();
image_height = border_and_inset.borderHeight();
image_width = border_and_titleblock.borderWidth();
image_height = border_and_titleblock.borderHeight();
}
image_width += 2.0 * margin;
@@ -267,21 +267,21 @@ QDomDocument Diagram::toXml(bool whole_content) {
// proprietes du schema
if (whole_content) {
if (!border_and_inset.author().isNull()) racine.setAttribute("author", 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("title", border_and_inset.title());
if (!border_and_inset.fileName().isNull()) racine.setAttribute("filename", border_and_inset.fileName());
if (!border_and_inset.folio().isNull()) racine.setAttribute("folio", border_and_inset.folio());
racine.setAttribute("cols", border_and_inset.nbColumns());
racine.setAttribute("colsize", QString("%1").arg(border_and_inset.columnsWidth()));
racine.setAttribute("rows", border_and_inset.nbRows());
racine.setAttribute("rowsize", QString("%1").arg(border_and_inset.rowsHeight()));
if (!border_and_titleblock.author().isNull()) racine.setAttribute("author", border_and_titleblock.author());
if (!border_and_titleblock.date().isNull()) racine.setAttribute("date", border_and_titleblock.date().toString("yyyyMMdd"));
if (!border_and_titleblock.title().isNull()) racine.setAttribute("title", border_and_titleblock.title());
if (!border_and_titleblock.fileName().isNull()) racine.setAttribute("filename", border_and_titleblock.fileName());
if (!border_and_titleblock.folio().isNull()) racine.setAttribute("folio", border_and_titleblock.folio());
racine.setAttribute("cols", border_and_titleblock.nbColumns());
racine.setAttribute("colsize", QString("%1").arg(border_and_titleblock.columnsWidth()));
racine.setAttribute("rows", border_and_titleblock.nbRows());
racine.setAttribute("rowsize", QString("%1").arg(border_and_titleblock.rowsHeight()));
// attribut datant de la version 0.1 - laisse pour retrocompatibilite
racine.setAttribute("height", QString("%1").arg(border_and_inset.diagramHeight()));
racine.setAttribute("displaycols", border_and_inset.columnsAreDisplayed() ? "true" : "false");
racine.setAttribute("displayrows", border_and_inset.rowsAreDisplayed() ? "true" : "false");
if (!inset_template_name_.isEmpty()) {
racine.setAttribute("insettemplate", inset_template_name_);
racine.setAttribute("height", QString("%1").arg(border_and_titleblock.diagramHeight()));
racine.setAttribute("displaycols", border_and_titleblock.columnsAreDisplayed() ? "true" : "false");
racine.setAttribute("displayrows", border_and_titleblock.rowsAreDisplayed() ? "true" : "false");
if (!titleblock_template_name_.isEmpty()) {
racine.setAttribute("titleblocktemplate", titleblock_template_name_);
}
// type de conducteur par defaut
@@ -417,49 +417,49 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
// lecture des attributs de ce schema
if (consider_informations) {
border_and_inset.setAuthor(root.attribute("author"));
border_and_inset.setTitle(root.attribute("title"));
border_and_inset.setDate(QDate::fromString(root.attribute("date"), "yyyyMMdd"));
border_and_inset.setFileName(root.attribute("filename"));
border_and_inset.setFolio(root.attribute("folio"));
if (root.hasAttribute("insettemplate") && project_) {
QString inset_template_name = root.attribute("insettemplate");
const InsetTemplate *inset_template = project_ -> getTemplateByName(inset_template_name);
if (inset_template) {
inset_template_name_ = inset_template_name;
border_and_inset.setInsetTemplate(inset_template);
border_and_titleblock.setAuthor(root.attribute("author"));
border_and_titleblock.setTitle(root.attribute("title"));
border_and_titleblock.setDate(QDate::fromString(root.attribute("date"), "yyyyMMdd"));
border_and_titleblock.setFileName(root.attribute("filename"));
border_and_titleblock.setFolio(root.attribute("folio"));
if (root.hasAttribute("titleblocktemplate") && project_) {
QString titleblock_template_name = root.attribute("titleblocktemplate");
const TitleBlockTemplate *titleblock_template = project_ -> getTemplateByName(titleblock_template_name);
if (titleblock_template) {
titleblock_template_name_ = titleblock_template_name;
border_and_titleblock.setTitleBlockTemplate(titleblock_template);
}
}
bool ok;
// nombre de colonnes
int nb_cols = root.attribute("cols").toInt(&ok);
if (ok) border_and_inset.setNbColumns(nb_cols);
if (ok) border_and_titleblock.setNbColumns(nb_cols);
// taille des colonnes
double col_size = root.attribute("colsize").toDouble(&ok);
if (ok) border_and_inset.setColumnsWidth(col_size);
if (ok) border_and_titleblock.setColumnsWidth(col_size);
// retrocompatibilite : les schemas enregistres avec la 0.1 ont un attribut "height"
if (root.hasAttribute("rows") && root.hasAttribute("rowsize")) {
// nombre de lignes
int nb_rows = root.attribute("rows").toInt(&ok);
if (ok) border_and_inset.setNbRows(nb_rows);
if (ok) border_and_titleblock.setNbRows(nb_rows);
// taille des lignes
double row_size = root.attribute("rowsize").toDouble(&ok);
if (ok) border_and_inset.setRowsHeight(row_size);
if (ok) border_and_titleblock.setRowsHeight(row_size);
} else {
// hauteur du schema
double height = root.attribute("height").toDouble(&ok);
if (ok) border_and_inset.setDiagramHeight(height);
if (ok) border_and_titleblock.setDiagramHeight(height);
}
// affichage des lignes et colonnes
border_and_inset.displayColumns(root.attribute("displaycols") != "false");
border_and_inset.displayRows(root.attribute("displayrows") != "false");
border_and_titleblock.displayColumns(root.attribute("displaycols") != "false");
border_and_titleblock.displayRows(root.attribute("displayrows") != "false");
border_and_inset.adjustInsetToColumns();
border_and_titleblock.adjustTitleBlockToColumns();
// repere le permier element "defaultconductor"
for (QDomNode node = root.firstChild() ; !node.isNull() ; node = node.nextSibling()) {
@@ -806,8 +806,8 @@ QRectF Diagram::border() const {
QRectF(
margin,
margin,
border_and_inset.borderWidth(),
border_and_inset.borderHeight()
border_and_titleblock.borderWidth(),
border_and_titleblock.borderHeight()
)
);
}
@@ -816,7 +816,7 @@ QRectF Diagram::border() const {
@return le titre du cartouche
*/
QString Diagram::title() const {
return(border_and_inset.title());
return(border_and_titleblock.title());
}
/**
@@ -912,8 +912,8 @@ 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_border = border_and_titleblock.borderIsDisplayed();
old_properties.draw_titleblock = border_and_titleblock.titleBlockIsDisplayed();
old_properties.draw_terminals = drawTerminals();
old_properties.draw_colored_conductors = drawColoredConductors();
old_properties.exported_area = useBorder() ? QET::BorderArea : QET::ElementsArea;
@@ -923,8 +923,8 @@ ExportProperties Diagram::applyProperties(const ExportProperties &new_properties
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);
border_and_titleblock.displayBorder(new_properties.draw_border);
border_and_titleblock.displayTitleBlock (new_properties.draw_titleblock);
// retourne les anciennes options de rendu
return(old_properties);
@@ -939,8 +939,8 @@ DiagramPosition Diagram::convertPosition(const QPointF &pos) {
// decale la position pour prendre en compte les marges en haut a gauche du schema
QPointF final_pos = pos - QPointF(margin, margin);
// delegue le calcul au BorderInset
DiagramPosition diagram_position = border_and_inset.convertPosition(final_pos);
// delegue le calcul au BorderTitleBlock
DiagramPosition diagram_position = border_and_titleblock.convertPosition(final_pos);
// embarque la position cartesienne
diagram_position.setPosition(pos);

View File

@@ -19,7 +19,7 @@
#define DIAGRAM_H
#include <QtGui>
#include <QtXml>
#include "borderinset.h"
#include "bordertitleblock.h"
#include "conductorproperties.h"
#include "exportproperties.h"
#include "qgimanager.h"
@@ -57,14 +57,14 @@ class Diagram : public QGraphicsScene {
/**
Represente les options possibles pour l'affichage du schema :
* EmptyBorder : N'afficher que la bordure
* Inset : Afficher le cartouche
* TitleBlock : Afficher le cartouche
* Columns : Afficher les colonnes
*/
enum BorderOptions { EmptyBorder, Inset, Columns };
enum BorderOptions { EmptyBorder, TitleBlock, Columns };
/// Proprietes par defaut des nouveaux conducteurs
ConductorProperties defaultConductorProperties;
/// Dimensions et cartouches du schema
BorderInset border_and_inset;
BorderTitleBlock border_and_titleblock;
/// taille de la grille en abscisse
static const int xGrid;
/// taille de la grille en ordonnee
@@ -85,7 +85,7 @@ class Diagram : public QGraphicsScene {
QDomDocument xml_document;
QETProject *project_;
bool read_only_;
QString inset_template_name_;
QString titleblock_template_name_;
// methodes
protected:
@@ -249,9 +249,9 @@ inline bool Diagram::useBorder() {
@see BorderOptions
*/
inline void Diagram::setBorderOptions(Diagram::BorderOptions bo) {
border_and_inset.displayBorder(!(bo & EmptyBorder));
border_and_inset.displayColumns(bo & Columns);
border_and_inset.displayInset(bo & Inset);
border_and_titleblock.displayBorder(!(bo & EmptyBorder));
border_and_titleblock.displayColumns(bo & Columns);
border_and_titleblock.displayTitleBlock(bo & TitleBlock);
}
/**
@@ -261,8 +261,8 @@ inline void Diagram::setBorderOptions(Diagram::BorderOptions bo) {
*/
inline Diagram::BorderOptions Diagram::borderOptions() {
BorderOptions retour = EmptyBorder;
if (border_and_inset.insetIsDisplayed()) retour = (BorderOptions)(retour|Inset);
if (border_and_inset.columnsAreDisplayed()) retour = (BorderOptions)(retour|Columns);
if (border_and_titleblock.titleBlockIsDisplayed()) retour = (BorderOptions)(retour|TitleBlock);
if (border_and_titleblock.columnsAreDisplayed()) retour = (BorderOptions)(retour|Columns);
return(retour);
}

View File

@@ -828,32 +828,32 @@ void ResetConductorCommand::redo() {
@param new_ip Nouvelles proprietes du cartouche
@param parent QUndoCommand parent
*/
ChangeInsetCommand::ChangeInsetCommand(
ChangeTitleBlockCommand::ChangeTitleBlockCommand(
Diagram *d,
const InsetProperties &old_ip,
const InsetProperties &new_ip,
const TitleBlockProperties &old_ip,
const TitleBlockProperties &new_ip,
QUndoCommand *parent
) :
QUndoCommand(QObject::tr("modifier le cartouche", "undo caption"), parent),
diagram(d),
old_inset(old_ip),
new_inset(new_ip)
old_titleblock(old_ip),
new_titleblock(new_ip)
{
}
/// Destructeur
ChangeInsetCommand::~ChangeInsetCommand() {
ChangeTitleBlockCommand::~ChangeTitleBlockCommand() {
}
/// Annule la modification de cartouche
void ChangeInsetCommand::undo() {
diagram -> border_and_inset.importInset(old_inset);
void ChangeTitleBlockCommand::undo() {
diagram -> border_and_titleblock.importTitleBlock(old_titleblock);
diagram -> invalidate(diagram -> border());
}
/// Refait la modification de cartouche
void ChangeInsetCommand::redo() {
diagram -> border_and_inset.importInset(new_inset);
void ChangeTitleBlockCommand::redo() {
diagram -> border_and_titleblock.importTitleBlock(new_titleblock);
diagram -> invalidate(diagram -> border());
}
@@ -878,12 +878,12 @@ ChangeBorderCommand::~ChangeBorderCommand() {
/// Annule les changements apportes au schema
void ChangeBorderCommand::undo() {
diagram -> border_and_inset.importBorder(old_properties);
diagram -> border_and_titleblock.importBorder(old_properties);
}
/// Refait les changements apportes au schema
void ChangeBorderCommand::redo() {
diagram -> border_and_inset.importBorder(new_properties);
diagram -> border_and_titleblock.importBorder(new_properties);
}
/**

View File

@@ -22,7 +22,7 @@
#include "conductor.h"
#include "conductorproperties.h"
#include "diagramcontent.h"
#include "insetproperties.h"
#include "titleblockproperties.h"
#include "qet.h"
class Diagram;
class DiagramTextItem;
@@ -419,13 +419,13 @@ class ResetConductorCommand : public QUndoCommand {
/**
Cette classe represente l'action de modifier les informations du cartouche d'un schema
*/
class ChangeInsetCommand : public QUndoCommand {
class ChangeTitleBlockCommand : public QUndoCommand {
// constructeurs, destructeur
public:
ChangeInsetCommand(Diagram *, const InsetProperties &, const InsetProperties &, QUndoCommand * = 0);
virtual ~ChangeInsetCommand();
ChangeTitleBlockCommand(Diagram *, const TitleBlockProperties &, const TitleBlockProperties &, QUndoCommand * = 0);
virtual ~ChangeTitleBlockCommand();
private:
ChangeInsetCommand(const ChangeInsetCommand &);
ChangeTitleBlockCommand(const ChangeTitleBlockCommand &);
// methodes
public:
@@ -437,9 +437,9 @@ class ChangeInsetCommand : public QUndoCommand {
/// schema modifie
Diagram *diagram;
/// proprietes avant changement
InsetProperties old_inset;
TitleBlockProperties old_titleblock;
/// proprietes apres changement
InsetProperties new_inset;
TitleBlockProperties new_titleblock;
};
/**

View File

@@ -22,7 +22,7 @@
#include <QVariant>
/**
This class represents a diagram context, i.e. the data (a list of key/value
pairs) of a diagram at a given time. It is notably used by inset templates
pairs) of a diagram at a given time. It is notably used by titleblock templates
to fetch the informations they need to do their rendering.
*/
class DiagramContext {

View File

@@ -26,7 +26,7 @@
#include "conductortextitem.h"
#include "elementtextitem.h"
#include "independenttextitem.h"
#include "insetpropertieswidget.h"
#include "titleblockpropertieswidget.h"
#include "qetapp.h"
#include "qetproject.h"
#include "borderpropertieswidget.h"
@@ -67,9 +67,9 @@ DiagramView::DiagramView(Diagram *diagram, QWidget *parent) : QGraphicsView(pare
connect(scene, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
connect(scene, SIGNAL(readOnlyChanged(bool)), this, SLOT(applyReadOnly()));
connect(&(scene -> border_and_inset), SIGNAL(borderChanged(QRectF, QRectF)), this, SLOT(adjustSceneRect()));
connect(&(scene -> border_and_inset), SIGNAL(displayChanged()), this, SLOT(adjustSceneRect()));
connect(&(scene -> border_and_inset), SIGNAL(diagramTitleChanged(const QString &)), this, SLOT(updateWindowTitle()));
connect(&(scene -> border_and_titleblock), SIGNAL(borderChanged(QRectF, QRectF)), this, SLOT(adjustSceneRect()));
connect(&(scene -> border_and_titleblock), SIGNAL(displayChanged()), this, SLOT(adjustSceneRect()));
connect(&(scene -> border_and_titleblock), SIGNAL(diagramTitleChanged(const QString &)), this, SLOT(updateWindowTitle()));
connect(&(scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(updateWindowTitle()));
connect(this, SIGNAL(aboutToAddElement()), this, SLOT(addDroppedElement()), Qt::QueuedConnection);
@@ -412,8 +412,8 @@ void DiagramView::editDiagramProperties() {
bool diagram_is_read_only = scene -> isReadOnly();
// recupere le cartouche et les dimensions du schema
InsetProperties inset = scene -> border_and_inset.exportInset();
BorderProperties border = scene -> border_and_inset.exportBorder();
TitleBlockProperties titleblock = scene -> border_and_titleblock.exportTitleBlock();
BorderProperties border = scene -> border_and_titleblock.exportBorder();
// construit le dialogue
QDialog popup(diagramEditor());
@@ -426,8 +426,8 @@ void DiagramView::editDiagramProperties() {
BorderPropertiesWidget *border_infos = new BorderPropertiesWidget(border, &popup);
border_infos -> setReadOnly(diagram_is_read_only);
InsetPropertiesWidget *inset_infos = new InsetPropertiesWidget(inset, false, &popup);
inset_infos -> setReadOnly(diagram_is_read_only);
TitleBlockPropertiesWidget *titleblock_infos = new TitleBlockPropertiesWidget(titleblock, false, &popup);
titleblock_infos -> setReadOnly(diagram_is_read_only);
// boutons
QDialogButtonBox boutons(diagram_is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
@@ -437,16 +437,16 @@ void DiagramView::editDiagramProperties() {
// ajout dans une disposition verticale
QVBoxLayout layout_v(&popup);
layout_v.addWidget(border_infos);
layout_v.addWidget(inset_infos);
layout_v.addWidget(titleblock_infos);
layout_v.addStretch();
layout_v.addWidget(&boutons);
// si le dialogue est accepte
if (popup.exec() == QDialog::Accepted && !diagram_is_read_only) {
InsetProperties new_inset = inset_infos -> insetProperties();
TitleBlockProperties new_titleblock = titleblock_infos -> titleBlockProperties();
BorderProperties new_border = border_infos -> borderProperties();
// s'il y a des modifications au cartouche
if (new_inset != inset) {
scene -> undoStack().push(new ChangeInsetCommand(scene, inset, new_inset));
if (new_titleblock != titleblock) {
scene -> undoStack().push(new ChangeTitleBlockCommand(scene, titleblock, new_titleblock));
}
// s'il y a des modifications aux dimensions du schema
@@ -501,8 +501,8 @@ bool DiagramView::hasDeletableItems() {
*/
void DiagramView::addColumn() {
if (scene -> isReadOnly()) return;
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
BorderProperties old_bp = scene -> border_and_titleblock.exportBorder();
BorderProperties new_bp = scene -> border_and_titleblock.exportBorder();
new_bp.columns_count += 1;
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
}
@@ -512,8 +512,8 @@ void DiagramView::addColumn() {
*/
void DiagramView::removeColumn() {
if (scene -> isReadOnly()) return;
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
BorderProperties old_bp = scene -> border_and_titleblock.exportBorder();
BorderProperties new_bp = scene -> border_and_titleblock.exportBorder();
new_bp.columns_count -= 1;
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
}
@@ -523,8 +523,8 @@ void DiagramView::removeColumn() {
*/
void DiagramView::addRow() {
if (scene -> isReadOnly()) return;
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
BorderProperties old_bp = scene -> border_and_titleblock.exportBorder();
BorderProperties new_bp = scene -> border_and_titleblock.exportBorder();
new_bp.rows_count += 1;
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
}
@@ -534,8 +534,8 @@ void DiagramView::addRow() {
*/
void DiagramView::removeRow() {
if (scene -> isReadOnly()) return;
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
BorderProperties old_bp = scene -> border_and_titleblock.exportBorder();
BorderProperties new_bp = scene -> border_and_titleblock.exportBorder();
new_bp.rows_count -= 1;
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
}
@@ -987,14 +987,14 @@ QETDiagramEditor *DiagramView::diagramEditor() const {
Gere les double-clics sur le schema
*/
void DiagramView::mouseDoubleClickEvent(QMouseEvent *e) {
BorderInset &bi = scene -> border_and_inset;
BorderTitleBlock &bi = scene -> border_and_titleblock;
// recupere le rectangle corespondant au cartouche
QRectF inset_rect(
QRectF titleblock_rect(
Diagram::margin,
Diagram::margin + bi.diagramHeight(),
bi.insetWidth(),
bi.insetHeight()
bi.titleBlockWidth(),
bi.titleBlockHeight()
);
// recupere le rectangle correspondant aux en-tetes des colonnes
@@ -1025,7 +1025,7 @@ void DiagramView::mouseDoubleClickEvent(QMouseEvent *e) {
} else {
QGraphicsView::mouseDoubleClickEvent(e);
}
} else if (inset_rect.contains(click_pos) || columns_rect.contains(click_pos) || rows_rect.contains(click_pos)) {
} else if (titleblock_rect.contains(click_pos) || columns_rect.contains(click_pos) || rows_rect.contains(click_pos)) {
// edite les proprietes du schema
editDiagramProperties();
} else {

View File

@@ -31,7 +31,7 @@ ExportProperties::ExportProperties() :
format("PNG"),
draw_grid(false),
draw_border(true),
draw_inset(true),
draw_titleblock(true),
draw_terminals(false),
draw_colored_conductors(true),
exported_area(QET::BorderArea)
@@ -54,7 +54,7 @@ void ExportProperties::toSettings(QSettings &settings, const QString &prefix) co
settings.setValue(prefix + "format", format);
settings.setValue(prefix + "drawgrid", draw_grid);
settings.setValue(prefix + "drawborder", draw_border);
settings.setValue(prefix + "drawinset", draw_inset);
settings.setValue(prefix + "drawtitleblock", draw_titleblock);
settings.setValue(prefix + "drawterminals", draw_terminals);
settings.setValue(prefix + "drawcoloredconductors", draw_colored_conductors);
settings.setValue(prefix + "area", QET::diagramAreaToString(exported_area));
@@ -74,7 +74,7 @@ void ExportProperties::fromSettings(QSettings &settings, const QString &prefix)
draw_grid = settings.value(prefix + "drawgrid", false).toBool();
draw_border = settings.value(prefix + "drawborder", true ).toBool();
draw_inset = settings.value(prefix + "drawinset", true ).toBool();
draw_titleblock = settings.value(prefix + "drawtitleblock", true ).toBool();
draw_terminals = settings.value(prefix + "drawterminals", false).toBool();
draw_colored_conductors = settings.value(prefix + "drawcoloredconductors", true ).toBool();

View File

@@ -41,7 +41,7 @@ class ExportProperties {
QString format; ///< Quel format d'image faut-il utiliser ?
bool draw_grid; ///< Faut-il dessiner la grille ?
bool draw_border; ///< Faut-il dessiner le cadre ?
bool draw_inset; ///< Faut-il dessiner le cartouche ?
bool draw_titleblock; ///< Faut-il dessiner le cartouche ?
bool draw_terminals; ///< Faut-il dessiner les bornes ?
bool draw_colored_conductors; ///< Faut-il respecter les couleurs des conducteurs ?
QET::DiagramArea exported_area; ///< Zone du schema a exporter

View File

@@ -50,7 +50,7 @@ ExportProperties ExportPropertiesWidget::exportProperties() const {
export_properties.format = format -> itemData(format -> currentIndex()).toString();
export_properties.draw_grid = draw_grid -> isChecked();
export_properties.draw_border = draw_border -> isChecked();
export_properties.draw_inset = draw_inset -> isChecked();
export_properties.draw_titleblock = draw_titleblock -> isChecked();
export_properties.draw_terminals = draw_terminals -> isChecked();
export_properties.draw_colored_conductors = draw_colored_conductors -> isChecked();
export_properties.exported_area = export_border -> isChecked() ? QET::BorderArea : QET::ElementsArea;
@@ -70,7 +70,7 @@ void ExportPropertiesWidget::setExportProperties(const ExportProperties &export_
draw_grid -> setChecked(export_properties.draw_grid);
draw_border -> setChecked(export_properties.draw_border);
draw_inset -> setChecked(export_properties.draw_inset);
draw_titleblock -> setChecked(export_properties.draw_titleblock);
draw_terminals -> setChecked(export_properties.draw_terminals);
draw_colored_conductors -> setChecked(export_properties.draw_colored_conductors);
@@ -169,8 +169,8 @@ void ExportPropertiesWidget::build() {
optionshlayout -> addWidget(draw_border, 1, 0);
// dessiner le cartouche
draw_inset = new QCheckBox(tr("Dessiner le cartouche"), groupbox_options);
optionshlayout -> addWidget(draw_inset, 2, 0);
draw_titleblock = new QCheckBox(tr("Dessiner le cartouche"), groupbox_options);
optionshlayout -> addWidget(draw_titleblock, 2, 0);
// dessiner les bornes
draw_terminals = new QCheckBox(tr("Dessiner les bornes"), groupbox_options);
@@ -190,8 +190,8 @@ void ExportPropertiesWidget::build() {
setTabOrder(format, export_border);
setTabOrder(export_border, draw_border);
setTabOrder(draw_border, draw_grid);
setTabOrder(draw_grid, draw_inset);
setTabOrder(draw_inset, draw_terminals);
setTabOrder(draw_grid, draw_titleblock);
setTabOrder(draw_titleblock, draw_terminals);
setTabOrder(draw_terminals, draw_colored_conductors);
// connexion du bouton permettant le choix du repertoire
@@ -202,7 +202,7 @@ void ExportPropertiesWidget::build() {
connect(exported_content_choices, SIGNAL(buttonClicked(QAbstractButton *)), this, SIGNAL(exportedAreaChanged()));
connect(draw_grid, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_border, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_inset, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_titleblock, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_terminals, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
connect(draw_colored_conductors, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
}

View File

@@ -61,7 +61,7 @@ class ExportPropertiesWidget : public QWidget {
QComboBox *format;
QCheckBox *draw_grid;
QCheckBox *draw_border;
QCheckBox *draw_inset;
QCheckBox *draw_titleblock;
QCheckBox *draw_terminals;
QCheckBox *draw_colored_conductors;
QRadioButton *export_border;

View File

@@ -53,17 +53,17 @@ HotspotEditor::HotspotEditor(QWidget *parent) :
sb_hotspot_y -> setSingleStep(10);
diagram_scene = new Diagram();
diagram_scene -> border_and_inset.setColumnsWidth(50.0);
diagram_scene -> border_and_inset.setNbColumns(3);
diagram_scene -> border_and_inset.setRowsHeight(60.0);
diagram_scene -> border_and_inset.setNbRows(2);
diagram_scene -> border_and_inset.displayRows(false);
diagram_scene -> border_and_inset.displayInset(false);
diagram_scene -> border_and_titleblock.setColumnsWidth(50.0);
diagram_scene -> border_and_titleblock.setNbColumns(3);
diagram_scene -> border_and_titleblock.setRowsHeight(60.0);
diagram_scene -> border_and_titleblock.setNbRows(2);
diagram_scene -> border_and_titleblock.displayRows(false);
diagram_scene -> border_and_titleblock.displayTitleBlock(false);
diagram_view = new QGraphicsView(diagram_scene);
diagram_view -> setMinimumSize(
qRound(diagram_scene -> border_and_inset.diagramWidth() + (3 * Diagram::margin)),
qRound(diagram_scene -> border_and_inset.diagramHeight() + (3 * Diagram::margin))
qRound(diagram_scene -> border_and_titleblock.diagramWidth() + (3 * Diagram::margin)),
qRound(diagram_scene -> border_and_titleblock.diagramHeight() + (3 * Diagram::margin))
);
diagram_view -> setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
diagram_view -> setResizeAnchor(QGraphicsView::AnchorUnderMouse);

View File

@@ -1,177 +0,0 @@
/*
Copyright 2006-2010 Xavier Guerrin
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "insetpropertieswidget.h"
#include "qetapp.h"
/**
Constructeur
@param inset InsetProperties a afficher
@param current true pour afficher l'option "Date courante"
@param parent QWidget parent
*/
InsetPropertiesWidget::InsetPropertiesWidget(const InsetProperties &inset, bool current, QWidget *parent) : QWidget(parent), display_current_date(false) {
QVBoxLayout *this_layout = new QVBoxLayout(this);
this_layout -> setContentsMargins(0, 0, 0, 0);
QGroupBox *inset_infos = new QGroupBox(tr("Informations du cartouche"), this);
inset_infos -> setMinimumSize(300, 330);
this_layout -> addWidget(inset_infos);
inset_title = new QLineEdit(this);
inset_author = new QLineEdit(this);
QButtonGroup *date_policy_group = new QButtonGroup(this);
inset_no_date = new QRadioButton(tr("Pas de date"), this);
inset_current_date = new QRadioButton(tr("Date courante"), this);
inset_fixed_date = new QRadioButton(tr("Date fixe : "), this);
date_policy_group -> addButton(inset_no_date);
date_policy_group -> addButton(inset_current_date);
date_policy_group -> addButton(inset_fixed_date);
inset_date = new QDateEdit(QDate::currentDate(), this);
inset_date -> setEnabled(inset_fixed_date -> isChecked());
inset_current_date -> setVisible(display_current_date);
connect(inset_fixed_date, SIGNAL(toggled(bool)), inset_date, SLOT(setEnabled(bool)));
inset_date -> setCalendarPopup(true);
QGridLayout *layout_date = new QGridLayout();
layout_date -> addWidget(inset_no_date, 0, 0);
layout_date -> addWidget(inset_current_date, 1, 0);
layout_date -> addWidget(inset_fixed_date, 2, 0);
layout_date -> addWidget(inset_date, 2, 1);
layout_date -> setColumnStretch(0, 1);
layout_date -> setColumnStretch(1, 500);
inset_filename = new QLineEdit(this);
inset_folio = new QLineEdit(this);
QLabel *folio_tip = new QLabel(
tr(
"Les variables suivantes sont utilisables dans le champ Folio :\n"
" - %id : num\351ro du sch\351ma courant dans le projet\n"
" - %total : nombre total de sch\351mas dans le projet"
)
);
folio_tip -> setWordWrap(true);
QGridLayout *layout_champs = new QGridLayout(inset_infos);
layout_champs -> addWidget(new QLabel(tr("Titre : ")), 0, 0);
layout_champs -> addWidget(inset_title, 0, 1);
layout_champs -> addWidget(new QLabel(tr("Auteur : ")), 1, 0);
layout_champs -> addWidget(inset_author, 1, 1);
layout_champs -> addWidget(new QLabel(tr("Date : ")), 2, 0, Qt::AlignTop);
layout_champs -> addLayout(layout_date, 2, 1);
layout_champs -> addWidget(new QLabel(tr("Fichier : ")), 3, 0);
layout_champs -> addWidget(inset_filename, 3, 1);
layout_champs -> addWidget(new QLabel(tr("Folio : ")), 4, 0);
layout_champs -> addWidget(inset_folio, 4, 1);
layout_champs -> addWidget(folio_tip, 5, 1, Qt::AlignTop);
layout_champs -> setRowStretch(5, 500);
inset_current_date -> setVisible(display_current_date = current);
setInsetProperties(inset);
setLayout(this_layout);
}
/// Destructeur
InsetPropertiesWidget::~InsetPropertiesWidget() {
}
/**
@return Les proprietes affichees par le widget
*/
InsetProperties InsetPropertiesWidget::insetProperties() const {
InsetProperties prop;
prop.title = inset_title -> text();
prop.author = inset_author -> text();
prop.filename = inset_filename -> text();
prop.folio = inset_folio -> text();
if (inset_no_date -> isChecked()) {
prop.useDate = InsetProperties::UseDateValue;
prop.date = QDate();
} else if (inset_fixed_date -> isChecked()) {
prop.useDate = InsetProperties::UseDateValue;
prop.date = inset_date -> date();
} else if (display_current_date && inset_current_date -> isChecked()) {
prop.useDate = InsetProperties::CurrentDate;
prop.date = QDate::currentDate();
}
return(prop);
}
/**
Specifie les proprietes que le widget doit afficher
@param inset nouvelles proprietes affichees par le widget
*/
void InsetPropertiesWidget::setInsetProperties(const InsetProperties &inset) {
inset_title -> setText(inset.title);
inset_author -> setText(inset.author);
inset_filename -> setText(inset.filename);
inset_folio -> setText(inset.folio);
if (display_current_date) {
if (inset.useDate == InsetProperties::CurrentDate) {
inset_current_date -> setChecked(true);
} else {
if (inset.date.isNull()) {
inset_no_date -> setChecked(true);
} else {
inset_fixed_date -> setChecked(true);
inset_date -> setDate(inset.date);
}
}
} else {
if (inset.useDate == InsetProperties::CurrentDate) {
inset_fixed_date -> setChecked(true);
inset_date -> setDate(QDate::currentDate());
} else {
if (inset.date.isNull()) {
inset_no_date -> setChecked(true);
} else {
inset_fixed_date -> setChecked(true);
inset_date -> setDate(inset.date);
}
}
}
}
/**
@return true si le widget affiche la proposition "Date courante", false sinon
*/
bool InsetPropertiesWidget::displayCurrentDate() const {
return(display_current_date);
}
/**
@return true si ce widget est en lecture seule, false sinon
*/
bool InsetPropertiesWidget::isReadOnly() const {
return(inset_title -> isReadOnly());
}
/**
@param ro true pour passer ce widget en lecture seule, false sinon
*/
void InsetPropertiesWidget::setReadOnly(bool ro) {
inset_title -> setReadOnly(ro);
inset_author -> setReadOnly(ro);
inset_date -> setReadOnly(ro);
inset_filename -> setReadOnly(ro);
inset_folio -> setReadOnly(ro);
inset_no_date -> setDisabled(ro);
inset_current_date -> setDisabled(ro);
inset_fixed_date -> setDisabled(ro);
}

View File

@@ -1,96 +0,0 @@
#include "insettemplaterenderer.h"
#include "insettemplate.h"
/**
Constructor
@param parnet Parent QObject of this renderer
*/
InsetTemplateRenderer::InsetTemplateRenderer(QObject *parent) :
QObject(parent),
inset_template_(0),
last_known_inset_width_(-1)
{
}
/**
Destructor
*/
InsetTemplateRenderer::~InsetTemplateRenderer() {
}
/**
@return the inset template used for the rendering
*/
const InsetTemplate *InsetTemplateRenderer::insetTemplate() const {
return(inset_template_);
}
/**
@param inset_template Inset template to render.
*/
void InsetTemplateRenderer::setInsetTemplate(const InsetTemplate *inset_template) {
if (inset_template != inset_template_) {
inset_template_ = inset_template;
invalidateRenderedTemplate();
}
}
/**
@param context Diagram Context to use when rendering the inset
*/
void InsetTemplateRenderer::setContext(const DiagramContext &context) {
context_ = context;
invalidateRenderedTemplate();
}
/**
@return the height of the rendered template, or -1 if no template has been
set for this renderer.
@see InsetTemplate::height()
*/
int InsetTemplateRenderer::height() const {
if (!inset_template_) return(-1);
return(inset_template_ -> height());
}
/**
Render the inset.
@param provided_painter QPainter to use to render the inset.
@param inset_width The total width of the inset to render
*/
void InsetTemplateRenderer::render(QPainter *provided_painter, int inset_width) {
if (!inset_template_) return;
// Do we really need to calculate all this again?
if (inset_width != last_known_inset_width_ || rendered_template_.isNull()) {
renderToQPicture(inset_width);
}
provided_painter -> save();
rendered_template_.play(provided_painter);
provided_painter -> restore();
}
/**
Renders the inset to the internal QPicture
@param inset_width Width of the inset to render
*/
void InsetTemplateRenderer::renderToQPicture(int inset_width) {
if (!inset_template_) return;
// we render the template on our internal QPicture
QPainter painter(&rendered_template_);
inset_template_ -> render(painter, context_, inset_width);
// memorize the last known width
last_known_inset_width_ = inset_width;
}
/**
Invalidates the previous rendering of the template by resetting the internal
QPicture.
*/
void InsetTemplateRenderer::invalidateRenderedTemplate() {
rendered_template_ = QPicture();
}

View File

@@ -26,7 +26,7 @@
#include "qetelementeditor.h"
#include "interactivemoveelementshandler.h"
#include "borderpropertieswidget.h"
#include "insetpropertieswidget.h"
#include "titleblockpropertieswidget.h"
#include "conductorpropertieswidget.h"
#include "qeticons.h"
#include "qetmessagebox.h"
@@ -424,7 +424,7 @@ void ProjectView::editProjectProperties() {
bpw -> setReadOnly(project_is_read_only);
// proprietes par defaut d'un cartouche
InsetPropertiesWidget *ipw = new InsetPropertiesWidget(project_ -> defaultInsetProperties(), true);
TitleBlockPropertiesWidget *ipw = new TitleBlockPropertiesWidget(project_ -> defaultTitleBlockProperties(), true);
ipw -> setReadOnly(project_is_read_only);
// proprietes par defaut des conducteurs
@@ -469,7 +469,7 @@ void ProjectView::editProjectProperties() {
if (properties_dialog.exec() == QDialog::Accepted && !project_is_read_only) {
project_ -> setTitle(title_field -> text());
project_ -> setDefaultBorderProperties(bpw -> borderProperties());
project_ -> setDefaultInsetProperties(ipw -> insetProperties());
project_ -> setDefaultTitleBlockProperties(ipw -> titleBlockProperties());
project_ -> setDefaultConductorProperties(cpw -> conductorProperties());
}
}

View File

@@ -517,11 +517,11 @@ bool QET::compareCanonicalFilePaths(const QString &first, const QString &second)
}
/**
@param icl an InsetColumnLength object
@see InsetColumnLength
@return a string describing the type of this InsetColumnLength object
@param icl an TitleBlockColumnLength object
@see TitleBlockColumnLength
@return a string describing the type of this TitleBlockColumnLength object
*/
QString QET::insetColumnLengthToString(const InsetColumnLength &icl) {
QString QET::titleBlockColumnLengthToString(const TitleBlockColumnLength &icl) {
QString type_str;
if (icl== Absolute) type_str = "absolute";
else if (icl == RelativeToTotalLength) type_str = "relative to total";

View File

@@ -98,7 +98,7 @@ namespace QET {
};
/// enum used to specify the type of a length
enum InsetColumnLength {
enum TitleBlockColumnLength {
Absolute, ///< the length is absolute and should be applied as is
RelativeToTotalLength, ///< the length is just a fraction of the total available length
RelativeToRemainingLength ///< the length is just a fraction of the length that is still available when other types of lengths have been removed
@@ -132,6 +132,6 @@ namespace QET {
QString pointerString(void *);
qreal correctAngle(const qreal &);
bool compareCanonicalFilePaths(const QString &, const QString &);
QString insetColumnLengthToString(const InsetColumnLength &);
QString titleBlockColumnLengthToString(const TitleBlockColumnLength &);
}
#endif

View File

@@ -22,7 +22,7 @@
#include "qetelementeditor.h"
#include "elementscollectionitem.h"
#include "fileelementscollection.h"
#include "insettemplate.h"
#include "titleblocktemplate.h"
#include "qetproject.h"
#include "qtextorientationspinboxwidget.h"
#include "recentfiles.h"
@@ -46,7 +46,7 @@ uint QETApp::next_project_id = 0;
RecentFiles *QETApp::projects_recent_files_ = 0;
RecentFiles *QETApp::elements_recent_files_ = 0;
AboutQET *QETApp::about_dialog_ = 0;
InsetTemplate *QETApp::default_inset_template_ = 0;
TitleBlockTemplate *QETApp::default_titleblock_template_ = 0;
/**
Constructeur
@@ -531,16 +531,16 @@ QTextOrientationSpinBoxWidget *QETApp::createTextOrientationSpinBoxWidget() {
}
/**
@return the default inset template for diagrams
@return the default titleblock template for diagrams
*/
InsetTemplate *QETApp::defaultInsetTemplate() {
if (!QETApp::default_inset_template_) {
InsetTemplate *inset_template = new InsetTemplate(QETApp::instance());
if (inset_template -> loadFromXmlFile(":/insets/default.inset")) {
QETApp::default_inset_template_ = inset_template;
TitleBlockTemplate *QETApp::defaultTitleBlockTemplate() {
if (!QETApp::default_titleblock_template_) {
TitleBlockTemplate *titleblock_template = new TitleBlockTemplate(QETApp::instance());
if (titleblock_template -> loadFromXmlFile(":/titleblocks/default.titleblock")) {
QETApp::default_titleblock_template_ = titleblock_template;
}
}
return(default_inset_template_);
return(default_titleblock_template_);
}

View File

@@ -30,7 +30,7 @@ class ElementsCollectionItem;
class FileElementsCollection;
class ElementsCategory;
class ElementDefinition;
class InsetTemplate;
class TitleBlockTemplate;
class QETProject;
class QTextOrientationSpinBoxWidget;
class RecentFiles;
@@ -99,7 +99,7 @@ class QETApp : public QETSingleApplication {
static QList<QETElementEditor *> elementEditors();
static QList<QETElementEditor *> elementEditors(QETProject *);
static QTextOrientationSpinBoxWidget *createTextOrientationSpinBoxWidget();
static InsetTemplate *defaultInsetTemplate();
static TitleBlockTemplate *defaultTitleBlockTemplate();
protected:
#ifdef Q_OS_DARWIN
@@ -142,7 +142,7 @@ class QETApp : public QETSingleApplication {
static RecentFiles *projects_recent_files_;
static RecentFiles *elements_recent_files_;
static AboutQET *about_dialog_;
static InsetTemplate *default_inset_template_;
static TitleBlockTemplate *default_titleblock_template_;
public slots:
void systray(QSystemTrayIcon::ActivationReason);

View File

@@ -660,7 +660,7 @@ bool QETDiagramEditor::newProject() {
// transmet les proprietes par defaut des nouveaux schemas
new_project -> setDefaultBorderProperties(defaultBorderProperties());
new_project -> setDefaultConductorProperties(defaultConductorProperties());
new_project -> setDefaultInsetProperties(defaultInsetProperties());
new_project -> setDefaultTitleBlockProperties(defaultTitleBlockProperties());
// ajoute un schema au projet
new_project -> addNewDiagram();
@@ -1780,11 +1780,11 @@ void QETDiagramEditor::editElementInEditor(const ElementsLocation &location) {
/**
@return Les proprietes par defaut pour le cartouche d'un schema
*/
InsetProperties QETDiagramEditor::defaultInsetProperties() {
TitleBlockProperties QETDiagramEditor::defaultTitleBlockProperties() {
// accede a la configuration de l'application
QSettings &settings = QETApp::settings();
InsetProperties def;
TitleBlockProperties def;
// lit le cartouche par defaut dans la configuration
def.fromSettings(settings, "diagrameditor/default");

View File

@@ -20,7 +20,7 @@
#include <QtGui>
#include "borderproperties.h"
#include "conductorproperties.h"
#include "insetproperties.h"
#include "titleblockproperties.h"
#include "exportproperties.h"
class QETProject;
class ProjectView;
@@ -56,7 +56,7 @@ class QETDiagramEditor : public QMainWindow {
QList<DiagramView *> projectViews() const;
QList<QString> editedFiles() const;
ProjectView *viewForFile(const QString &) const;
static InsetProperties defaultInsetProperties();
static TitleBlockProperties defaultTitleBlockProperties();
static BorderProperties defaultBorderProperties();
static ConductorProperties defaultConductorProperties();
static ExportProperties defaultExportProperties();

View File

@@ -25,7 +25,7 @@
#include "integrationmoveelementshandler.h"
#include "basicmoveelementshandler.h"
#include "qetmessagebox.h"
#include "insettemplate.h"
#include "titleblocktemplate.h"
QString QETProject::integration_category_name = "import";
@@ -268,10 +268,10 @@ void QETProject::setTitle(const QString &title) {
}
/**
@return the list of the inset templates embedded within this project
@return the list of the titleblock templates embedded within this project
*/
QList<QString> QETProject::embeddedInsetTemplates() const {
return(inset_templates_xml_.keys());
QList<QString> QETProject::embeddedTitleBlockTemplates() const {
return(titleblock_templates_xml_.keys());
}
/**
@@ -279,22 +279,22 @@ QList<QString> QETProject::embeddedInsetTemplates() const {
@return the requested template, or 0 if there is no vltaid template of this
name within the project
*/
const InsetTemplate *QETProject::getTemplateByName(const QString &template_name) {
const TitleBlockTemplate *QETProject::getTemplateByName(const QString &template_name) {
// Do we have already loaded this template?
if (inset_templates_.contains(template_name)) {
return(inset_templates_[template_name]);
if (titleblock_templates_.contains(template_name)) {
return(titleblock_templates_[template_name]);
}
// No? Do we even know of it?
if (!inset_templates_xml_.contains(template_name)) {
if (!titleblock_templates_xml_.contains(template_name)) {
return(0);
}
// Ok, we have its XML description, we have to generate an InsetTemplate object
InsetTemplate *inset_template = new InsetTemplate(this);
if (inset_template -> loadFromXmlElement(inset_templates_xml_[template_name])) {
inset_templates_.insert(template_name, inset_template);
return(inset_template);
// Ok, we have its XML description, we have to generate an TitleBlockTemplate object
TitleBlockTemplate *titleblock_template = new TitleBlockTemplate(this);
if (titleblock_template -> loadFromXmlElement(titleblock_templates_xml_[template_name])) {
titleblock_templates_.insert(template_name, titleblock_template);
return(titleblock_template);
} else {
return(0);
}
@@ -303,11 +303,11 @@ const InsetTemplate *QETProject::getTemplateByName(const QString &template_name)
/**
@param template_name Name of the requested template
@return the XML description of the requested template, or a null QDomElement
if the project does not have such an inset template
if the project does not have such an titleblock template
*/
QDomElement QETProject::getTemplateXmlDescriptionByName(const QString &template_name) {
if (inset_templates_xml_.contains(template_name)) {
return(inset_templates_xml_[template_name]);
if (titleblock_templates_xml_.contains(template_name)) {
return(titleblock_templates_xml_[template_name]);
}
return(QDomElement());
}
@@ -333,17 +333,17 @@ void QETProject::setDefaultBorderProperties(const BorderProperties &border) {
@return le cartouche par defaut utilise lors de la creation d'un
nouveau schema dans ce projet.
*/
InsetProperties QETProject::defaultInsetProperties() const {
return(default_inset_properties_);
TitleBlockProperties QETProject::defaultTitleBlockProperties() const {
return(default_titleblock_properties_);
}
/**
Permet de specifier le cartouche par defaut utilise lors de la creation
d'un nouveau schema dans ce projet.
@param inset Cartouche d'un schema
@param titleblock Cartouche d'un schema
*/
void QETProject::setDefaultInsetProperties(const InsetProperties &inset) {
default_inset_properties_ = inset;
void QETProject::setDefaultTitleBlockProperties(const TitleBlockProperties &titleblock) {
default_titleblock_properties_ = titleblock;
}
/**
@@ -373,14 +373,14 @@ QDomDocument QETProject::toXml() {
project_root.setAttribute("title", project_title_);
xml_doc.appendChild(project_root);
// inset templates, if any
if (inset_templates_xml_.count()) {
qDebug() << qPrintable(QString("QETProject::toXml() : exporting %1 inset templates").arg(inset_templates_xml_.count()));
QDomElement insettemplates_elmt = xml_doc.createElement("insettemplates");
foreach (QDomElement e, inset_templates_xml_) {
insettemplates_elmt.appendChild(e);
// titleblock templates, if any
if (titleblock_templates_xml_.count()) {
qDebug() << qPrintable(QString("QETProject::toXml() : exporting %1 titleblock templates").arg(titleblock_templates_xml_.count()));
QDomElement titleblocktemplates_elmt = xml_doc.createElement("titleblocktemplates");
foreach (QDomElement e, titleblock_templates_xml_) {
titleblocktemplates_elmt.appendChild(e);
}
project_root.appendChild(insettemplates_elmt);
project_root.appendChild(titleblocktemplates_elmt);
}
// proprietes pour les nouveaux schemas
@@ -696,8 +696,8 @@ Diagram *QETProject::addNewDiagram() {
Diagram *diagram = new Diagram();
// lui transmet les parametres par defaut
diagram -> border_and_inset.importBorder(defaultBorderProperties());
diagram -> border_and_inset.importInset(defaultInsetProperties());
diagram -> border_and_titleblock.importBorder(defaultBorderProperties());
diagram -> border_and_titleblock.importTitleBlock(defaultTitleBlockProperties());
diagram -> defaultConductorProperties = defaultConductorProperties();
addDiagram(diagram);
@@ -790,7 +790,7 @@ void QETProject::readProjectXml() {
// charge les proprietes par defaut pour les nouveaux schemas
readDefaultPropertiesXml();
// load the embedded inset templates
// load the embedded titleblock templates
readEmbeddedTemplatesXml();
// charge la collection embarquee
@@ -839,17 +839,17 @@ void QETProject::readDiagramsXml() {
Loads the embedded template from the XML description of the project
*/
void QETProject::readEmbeddedTemplatesXml() {
foreach (QDomElement e, QET::findInDomElement(document_root_.documentElement(), "insettemplates", "insettemplate")) {
// each inset template must have a name
foreach (QDomElement e, QET::findInDomElement(document_root_.documentElement(), "titleblocktemplates", "titleblocktemplate")) {
// each titleblock template must have a name
if (!e.hasAttribute("name")) continue;
QString inset_template_name = e.attribute("name");
QString titleblock_template_name = e.attribute("name");
// if several templates have the same name, we keep the first one encountered
if (inset_templates_xml_.contains(inset_template_name)) continue;
if (titleblock_templates_xml_.contains(titleblock_template_name)) continue;
// we simply store the XML element describing the inset template,
// we simply store the XML element describing the titleblock template,
// without any further analysis for the moment
inset_templates_xml_.insert(inset_template_name, e);
titleblock_templates_xml_.insert(titleblock_template_name, e);
}
}
@@ -893,11 +893,11 @@ void QETProject::readDefaultPropertiesXml() {
// par defaut, les valeurs sont celles de la configuration QElectroTech
default_border_properties_ = QETDiagramEditor::defaultBorderProperties();
default_inset_properties_ = QETDiagramEditor::defaultInsetProperties();
default_titleblock_properties_ = QETDiagramEditor::defaultTitleBlockProperties();
default_conductor_properties_ = QETDiagramEditor::defaultConductorProperties();
// lecture des valeurs indiquees dans le projet
QDomElement border_elmt, inset_elmt, conductors_elmt;
QDomElement border_elmt, titleblock_elmt, conductors_elmt;
// recherche des elements XML concernant les dimensions, le cartouche et les conducteurs
for (QDomNode child = newdiagrams_elmt.firstChild() ; !child.isNull() ; child = child.nextSibling()) {
@@ -906,7 +906,7 @@ void QETProject::readDefaultPropertiesXml() {
if (child_elmt.tagName() == "border") {
border_elmt = child_elmt;
} else if (child_elmt.tagName() == "inset") {
inset_elmt = child_elmt;
titleblock_elmt = child_elmt;
} else if (child_elmt.tagName() == "conductors") {
conductors_elmt = child_elmt;
}
@@ -914,7 +914,7 @@ void QETProject::readDefaultPropertiesXml() {
// dimensions, cartouche, et conducteurs
if (!border_elmt.isNull()) default_border_properties_.fromXml(border_elmt);
if (!inset_elmt.isNull()) default_inset_properties_.fromXml(inset_elmt);
if (!titleblock_elmt.isNull()) default_titleblock_properties_.fromXml(titleblock_elmt);
if (!conductors_elmt.isNull()) default_conductor_properties_.fromXml(conductors_elmt);
}
@@ -935,9 +935,9 @@ void QETProject::writeDefaultPropertiesXml(QDomElement &xml_element) {
xml_element.appendChild(border_elmt);
// exporte le contenu du cartouche
QDomElement inset_elmt = xml_document.createElement("inset");
default_inset_properties_.toXml(inset_elmt);
xml_element.appendChild(inset_elmt);
QDomElement titleblock_elmt = xml_document.createElement("inset");
default_titleblock_properties_.toXml(titleblock_elmt);
xml_element.appendChild(titleblock_elmt);
// exporte le type de conducteur par defaut
QDomElement conductor_elmt = xml_document.createElement("conductors");
@@ -958,7 +958,7 @@ void QETProject::addDiagram(Diagram *diagram) {
// si le schema est ecrit, alors il faut reecrire le fichier projet
connect(diagram, SIGNAL(written()), this, SLOT(componentWritten()));
connect(
&(diagram -> border_and_inset),
&(diagram -> border_and_titleblock),
SIGNAL(needFolioData()),
this,
SLOT(updateDiagramsFolioData())
@@ -1059,7 +1059,7 @@ bool QETProject::projectWasModified() {
void QETProject::updateDiagramsFolioData() {
int total_folio = diagrams_.count();
for (int i = 0 ; i < total_folio ; ++ i) {
diagrams_[i] -> border_and_inset.setFolioData(i + 1, total_folio);
diagrams_[i] -> border_and_titleblock.setFolioData(i + 1, total_folio);
}
}

View File

@@ -23,13 +23,13 @@
#include "elementslocation.h"
#include "borderproperties.h"
#include "conductorproperties.h"
#include "insetproperties.h"
#include "titleblockproperties.h"
class Diagram;
class ElementsCollection;
class ElementsCategory;
class ElementDefinition;
class ElementsLocation;
class InsetTemplate;
class TitleBlockTemplate;
class XmlElementsCollection;
class MoveElementsHandler;
/**
@@ -80,13 +80,13 @@ class QETProject : public QObject {
QString title() const;
qreal declaredQElectroTechVersion();
void setTitle(const QString &);
QList<QString> embeddedInsetTemplates() const;
const InsetTemplate *getTemplateByName(const QString &template_name);
QList<QString> embeddedTitleBlockTemplates() const;
const TitleBlockTemplate *getTemplateByName(const QString &template_name);
QDomElement getTemplateXmlDescriptionByName(const QString &);
BorderProperties defaultBorderProperties() const;
void setDefaultBorderProperties(const BorderProperties &);
InsetProperties defaultInsetProperties() const;
void setDefaultInsetProperties(const InsetProperties &);
TitleBlockProperties defaultTitleBlockProperties() const;
void setDefaultTitleBlockProperties(const TitleBlockProperties &);
ConductorProperties defaultConductorProperties() const;
void setDefaultConductorProperties(const ConductorProperties &);
QDomDocument toXml();
@@ -162,10 +162,10 @@ class QETProject : public QObject {
/// Proprietes par defaut des conducteurs pour les nouveaux schemas dans ce projet
ConductorProperties default_conductor_properties_;
/// Proprietes par defaut du cartouche pour les nouveaux schemas dans ce projet
InsetProperties default_inset_properties_;
/// XML descriptions of embedded inset templates
QHash<QString, QDomElement> inset_templates_xml_;
/// Already parsed embedded inset templates
QHash<QString, InsetTemplate *> inset_templates_;
TitleBlockProperties default_titleblock_properties_;
/// XML descriptions of embedded titleblock templates
QHash<QString, QDomElement> titleblock_templates_xml_;
/// Already parsed embedded titleblock templates
QHash<QString, TitleBlockTemplate *> titleblock_templates_;
};
#endif

View File

@@ -15,22 +15,22 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INSET_CELL_H
#define INSET_CELL_H
#ifndef TITLEBLOCK_CELL_H
#define TITLEBLOCK_CELL_H
/**
This class is a container for the various parameters of an inset cell
@see InsetColumnLength
This class is a container for the various parameters of an titleblock cell
@see TitleBlockColumnLength
*/
class InsetCell {
class TitleBlockCell {
public:
InsetCell();
TitleBlockCell();
QString toString() const;
bool is_null;
int num_row;
int num_col;
int row_span;
int col_span;
InsetCell *spanner_cell;
TitleBlockCell *spanner_cell;
QString value_name;
QString value;
QString label;

View File

@@ -15,13 +15,13 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "insetproperties.h"
#include "titleblockproperties.h"
/**
Constructeur. Initialise un objet InsetProperties avec tous les champs
Constructeur. Initialise un objet TitleBlockProperties avec tous les champs
vides (date vide + useDate a UseDateValue).
*/
InsetProperties::InsetProperties() :
TitleBlockProperties::TitleBlockProperties() :
date(),
useDate(UseDateValue)
{
@@ -30,14 +30,14 @@ InsetProperties::InsetProperties() :
/**
Destructeur
*/
InsetProperties::~InsetProperties() {
TitleBlockProperties::~TitleBlockProperties() {
}
/**
@param ip autre conteneur InsetProperties
@param ip autre conteneur TitleBlockProperties
@return true si ip et ce conteneur sont identiques, false sinon
*/
bool InsetProperties::operator==(const InsetProperties &ip) {
bool TitleBlockProperties::operator==(const TitleBlockProperties &ip) {
return(
ip.title == title &&\
ip.author == author &&\
@@ -48,10 +48,10 @@ bool InsetProperties::operator==(const InsetProperties &ip) {
}
/**
@param ip autre conteneur InsetProperties
@param ip autre conteneur TitleBlockProperties
@return false si ip et ce conteneur sont identiques, true sinon
*/
bool InsetProperties::operator!=(const InsetProperties &ip) {
bool TitleBlockProperties::operator!=(const TitleBlockProperties &ip) {
return(!(*this == ip));
}
@@ -60,7 +60,7 @@ bool InsetProperties::operator!=(const InsetProperties &ip) {
Exporte le cartouche sous formes d'attributs XML ajoutes a l'element e.
@param e Element XML auquel seront ajoutes des attributs
*/
void InsetProperties::toXml(QDomElement &e) const {
void TitleBlockProperties::toXml(QDomElement &e) const {
e.setAttribute("author", author);
e.setAttribute("title", title);
e.setAttribute("filename", filename);
@@ -72,7 +72,7 @@ void InsetProperties::toXml(QDomElement &e) const {
Importe le cartouche a partir des attributs XML de l'element e
@param e Element XML dont les attributs seront lus
*/
void InsetProperties::fromXml(QDomElement &e) {
void TitleBlockProperties::fromXml(QDomElement &e) {
if (e.hasAttribute("author")) author = e.attribute("author");
if (e.hasAttribute("title")) title = e.attribute("title");
if (e.hasAttribute("filename")) filename = e.attribute("filename");
@@ -85,7 +85,7 @@ void InsetProperties::fromXml(QDomElement &e) {
@param settings Parametres a ecrire
@param prefix prefixe a ajouter devant les noms des parametres
*/
void InsetProperties::toSettings(QSettings &settings, const QString &prefix) const {
void TitleBlockProperties::toSettings(QSettings &settings, const QString &prefix) const {
settings.setValue(prefix + "title", title);
settings.setValue(prefix + "author", author);
settings.setValue(prefix + "filename", filename);
@@ -98,7 +98,7 @@ void InsetProperties::toSettings(QSettings &settings, const QString &prefix) con
@param settings Parametres a lire
@param prefix prefixe a ajouter devant les noms des parametres
*/
void InsetProperties::fromSettings(QSettings &settings, const QString &prefix) {
void TitleBlockProperties::fromSettings(QSettings &settings, const QString &prefix) {
title = settings.value(prefix + "title").toString();
author = settings.value(prefix + "author").toString();
filename = settings.value(prefix + "filename").toString();
@@ -109,7 +109,7 @@ void InsetProperties::fromSettings(QSettings &settings, const QString &prefix) {
/**
@return La date a utiliser
*/
QDate InsetProperties::finalDate() const {
QDate TitleBlockProperties::finalDate() const {
if (useDate == UseDateValue) {
return(date);
} else {
@@ -124,7 +124,7 @@ QDate InsetProperties::finalDate() const {
* now pour afficher la date courante (a la creation du schema)
* une date au format yyyyMMdd pour utiliser une date fixe
*/
QString InsetProperties::exportDate() const {
QString TitleBlockProperties::exportDate() const {
QString date_setting_value;
if (useDate == UseDateValue) {
if (date.isNull()) date_setting_value = "null";
@@ -140,7 +140,7 @@ QString InsetProperties::exportDate() const {
@param date_string Chaine de caracteres a analyser
@see exportDate
*/
void InsetProperties::setDateFromString(const QString &date_string) {
void TitleBlockProperties::setDateFromString(const QString &date_string) {
if (date_string == "now") {
date = QDate::currentDate();
useDate = CurrentDate;

View File

@@ -15,26 +15,26 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INSET_PROPERTIES_H
#define INSET_PROPERTIES_H
#ifndef TITLEBLOCK_PROPERTIES_H
#define TITLEBLOCK_PROPERTIES_H
#include <QtCore>
#include <QtXml>
/**
Cette classe est un conteneur pour les proprietes d'un cartouche de schema
: titre, auteur, date, nom de fichier et folio
*/
class InsetProperties {
class TitleBlockProperties {
public:
InsetProperties();
virtual ~InsetProperties();
TitleBlockProperties();
virtual ~TitleBlockProperties();
/// Specifie comment gerer la date
enum DateManagement {
UseDateValue, ///< utilise l'attribut date
CurrentDate ///< utilise la date courante
};
bool operator==(const InsetProperties &);
bool operator!=(const InsetProperties &);
bool operator==(const TitleBlockProperties &);
bool operator!=(const TitleBlockProperties &);
void toXml(QDomElement &) const;
void fromXml(QDomElement &);

View File

@@ -0,0 +1,177 @@
/*
Copyright 2006-2010 Xavier Guerrin
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "titleblockpropertieswidget.h"
#include "qetapp.h"
/**
Constructeur
@param titleblock TitleBlockProperties a afficher
@param current true pour afficher l'option "Date courante"
@param parent QWidget parent
*/
TitleBlockPropertiesWidget::TitleBlockPropertiesWidget(const TitleBlockProperties &titleblock, bool current, QWidget *parent) : QWidget(parent), display_current_date(false) {
QVBoxLayout *this_layout = new QVBoxLayout(this);
this_layout -> setContentsMargins(0, 0, 0, 0);
QGroupBox *titleblock_infos = new QGroupBox(tr("Informations du cartouche"), this);
titleblock_infos -> setMinimumSize(300, 330);
this_layout -> addWidget(titleblock_infos);
titleblock_title = new QLineEdit(this);
titleblock_author = new QLineEdit(this);
QButtonGroup *date_policy_group = new QButtonGroup(this);
titleblock_no_date = new QRadioButton(tr("Pas de date"), this);
titleblock_current_date = new QRadioButton(tr("Date courante"), this);
titleblock_fixed_date = new QRadioButton(tr("Date fixe : "), this);
date_policy_group -> addButton(titleblock_no_date);
date_policy_group -> addButton(titleblock_current_date);
date_policy_group -> addButton(titleblock_fixed_date);
titleblock_date = new QDateEdit(QDate::currentDate(), this);
titleblock_date -> setEnabled(titleblock_fixed_date -> isChecked());
titleblock_current_date -> setVisible(display_current_date);
connect(titleblock_fixed_date, SIGNAL(toggled(bool)), titleblock_date, SLOT(setEnabled(bool)));
titleblock_date -> setCalendarPopup(true);
QGridLayout *layout_date = new QGridLayout();
layout_date -> addWidget(titleblock_no_date, 0, 0);
layout_date -> addWidget(titleblock_current_date, 1, 0);
layout_date -> addWidget(titleblock_fixed_date, 2, 0);
layout_date -> addWidget(titleblock_date, 2, 1);
layout_date -> setColumnStretch(0, 1);
layout_date -> setColumnStretch(1, 500);
titleblock_filename = new QLineEdit(this);
titleblock_folio = new QLineEdit(this);
QLabel *folio_tip = new QLabel(
tr(
"Les variables suivantes sont utilisables dans le champ Folio :\n"
" - %id : num\351ro du sch\351ma courant dans le projet\n"
" - %total : nombre total de sch\351mas dans le projet"
)
);
folio_tip -> setWordWrap(true);
QGridLayout *layout_champs = new QGridLayout(titleblock_infos);
layout_champs -> addWidget(new QLabel(tr("Titre : ")), 0, 0);
layout_champs -> addWidget(titleblock_title, 0, 1);
layout_champs -> addWidget(new QLabel(tr("Auteur : ")), 1, 0);
layout_champs -> addWidget(titleblock_author, 1, 1);
layout_champs -> addWidget(new QLabel(tr("Date : ")), 2, 0, Qt::AlignTop);
layout_champs -> addLayout(layout_date, 2, 1);
layout_champs -> addWidget(new QLabel(tr("Fichier : ")), 3, 0);
layout_champs -> addWidget(titleblock_filename, 3, 1);
layout_champs -> addWidget(new QLabel(tr("Folio : ")), 4, 0);
layout_champs -> addWidget(titleblock_folio, 4, 1);
layout_champs -> addWidget(folio_tip, 5, 1, Qt::AlignTop);
layout_champs -> setRowStretch(5, 500);
titleblock_current_date -> setVisible(display_current_date = current);
setTitleBlockProperties(titleblock);
setLayout(this_layout);
}
/// Destructeur
TitleBlockPropertiesWidget::~TitleBlockPropertiesWidget() {
}
/**
@return Les proprietes affichees par le widget
*/
TitleBlockProperties TitleBlockPropertiesWidget::titleBlockProperties() const {
TitleBlockProperties prop;
prop.title = titleblock_title -> text();
prop.author = titleblock_author -> text();
prop.filename = titleblock_filename -> text();
prop.folio = titleblock_folio -> text();
if (titleblock_no_date -> isChecked()) {
prop.useDate = TitleBlockProperties::UseDateValue;
prop.date = QDate();
} else if (titleblock_fixed_date -> isChecked()) {
prop.useDate = TitleBlockProperties::UseDateValue;
prop.date = titleblock_date -> date();
} else if (display_current_date && titleblock_current_date -> isChecked()) {
prop.useDate = TitleBlockProperties::CurrentDate;
prop.date = QDate::currentDate();
}
return(prop);
}
/**
Specifie les proprietes que le widget doit afficher
@param titleblock nouvelles proprietes affichees par le widget
*/
void TitleBlockPropertiesWidget::setTitleBlockProperties(const TitleBlockProperties &titleblock) {
titleblock_title -> setText(titleblock.title);
titleblock_author -> setText(titleblock.author);
titleblock_filename -> setText(titleblock.filename);
titleblock_folio -> setText(titleblock.folio);
if (display_current_date) {
if (titleblock.useDate == TitleBlockProperties::CurrentDate) {
titleblock_current_date -> setChecked(true);
} else {
if (titleblock.date.isNull()) {
titleblock_no_date -> setChecked(true);
} else {
titleblock_fixed_date -> setChecked(true);
titleblock_date -> setDate(titleblock.date);
}
}
} else {
if (titleblock.useDate == TitleBlockProperties::CurrentDate) {
titleblock_fixed_date -> setChecked(true);
titleblock_date -> setDate(QDate::currentDate());
} else {
if (titleblock.date.isNull()) {
titleblock_no_date -> setChecked(true);
} else {
titleblock_fixed_date -> setChecked(true);
titleblock_date -> setDate(titleblock.date);
}
}
}
}
/**
@return true si le widget affiche la proposition "Date courante", false sinon
*/
bool TitleBlockPropertiesWidget::displayCurrentDate() const {
return(display_current_date);
}
/**
@return true si ce widget est en lecture seule, false sinon
*/
bool TitleBlockPropertiesWidget::isReadOnly() const {
return(titleblock_title -> isReadOnly());
}
/**
@param ro true pour passer ce widget en lecture seule, false sinon
*/
void TitleBlockPropertiesWidget::setReadOnly(bool ro) {
titleblock_title -> setReadOnly(ro);
titleblock_author -> setReadOnly(ro);
titleblock_date -> setReadOnly(ro);
titleblock_filename -> setReadOnly(ro);
titleblock_folio -> setReadOnly(ro);
titleblock_no_date -> setDisabled(ro);
titleblock_current_date -> setDisabled(ro);
titleblock_fixed_date -> setDisabled(ro);
}

View File

@@ -15,41 +15,41 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INSET_PROPERTIES_WIDGET_H
#define INSET_PROPERTIES_WIDGET_H
#ifndef TITLEBLOCK_PROPERTIES_WIDGET_H
#define TITLEBLOCK_PROPERTIES_WIDGET_H
#include <QtGui>
#include "insetproperties.h"
#include "titleblockproperties.h"
/**
Ce widget permet d'editer un objet InsetProperties, c'est-a-dire les
Ce widget permet d'editer un objet TitleBlockProperties, c'est-a-dire les
valeurs affichees par le cartouche d'un schema.
*/
class InsetPropertiesWidget : public QWidget {
class TitleBlockPropertiesWidget : public QWidget {
Q_OBJECT
// constructeurs, destructeur
public:
InsetPropertiesWidget(const InsetProperties &inset = InsetProperties(), bool = false, QWidget * = 0);
virtual ~InsetPropertiesWidget();
TitleBlockPropertiesWidget(const TitleBlockProperties &titleblock = TitleBlockProperties(), bool = false, QWidget * = 0);
virtual ~TitleBlockPropertiesWidget();
private:
InsetPropertiesWidget(const InsetPropertiesWidget &);
TitleBlockPropertiesWidget(const TitleBlockPropertiesWidget &);
// methodes
public:
InsetProperties insetProperties() const;
void setInsetProperties(const InsetProperties &);
TitleBlockProperties titleBlockProperties() const;
void setTitleBlockProperties(const TitleBlockProperties &);
bool displayCurrentDate() const;
bool isReadOnly() const;
void setReadOnly(bool);
// attributs
private:
QLineEdit *inset_title;
QLineEdit *inset_author;
QDateEdit *inset_date;
QLineEdit *inset_filename;
QLineEdit *inset_folio;
QRadioButton *inset_no_date;
QRadioButton *inset_current_date;
QRadioButton *inset_fixed_date;
QLineEdit *titleblock_title;
QLineEdit *titleblock_author;
QDateEdit *titleblock_date;
QLineEdit *titleblock_filename;
QLineEdit *titleblock_folio;
QRadioButton *titleblock_no_date;
QRadioButton *titleblock_current_date;
QRadioButton *titleblock_fixed_date;
bool display_current_date;
};
#endif

View File

@@ -15,7 +15,7 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "insettemplate.h"
#include "titleblocktemplate.h"
#include "qet.h"
#include "qetapp.h"
@@ -23,7 +23,7 @@
Constructor
@param parent parent QObject
*/
InsetTemplate::InsetTemplate(QObject *parent) :
TitleBlockTemplate::TitleBlockTemplate(QObject *parent) :
QObject(parent)
{
}
@@ -31,7 +31,7 @@ InsetTemplate::InsetTemplate(QObject *parent) :
/**
Destructor
*/
InsetTemplate::~InsetTemplate() {
TitleBlockTemplate::~TitleBlockTemplate() {
loadLogos(QDomElement(), true);
}
@@ -39,7 +39,7 @@ InsetTemplate::~InsetTemplate() {
@param filepath A file path to read the template from.
@return true if the reading succeeds, false otherwise.
*/
bool InsetTemplate::loadFromXmlFile(const QString &filepath) {
bool TitleBlockTemplate::loadFromXmlFile(const QString &filepath) {
// opens the file
QFile template_file(filepath);
if (!template_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
@@ -51,7 +51,7 @@ bool InsetTemplate::loadFromXmlFile(const QString &filepath) {
if (!xml_parsing) {
return(false);
}
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << filepath << "opened";
#endif
return(loadFromXmlElement(xml_description_.documentElement()));
@@ -61,9 +61,9 @@ bool InsetTemplate::loadFromXmlFile(const QString &filepath) {
@param xml_element An XML document to read the template from.
@return true if the reading succeeds, false otherwise.
*/
bool InsetTemplate::loadFromXmlElement(const QDomElement &xml_element) {
// we expect the XML element to be an <insettemplate>
if (xml_element.tagName() != "insettemplate") {
bool TitleBlockTemplate::loadFromXmlElement(const QDomElement &xml_element) {
// we expect the XML element to be an <titleblocktemplate>
if (xml_element.tagName() != "titleblocktemplate") {
return(false);
}
@@ -73,13 +73,13 @@ bool InsetTemplate::loadFromXmlElement(const QDomElement &xml_element) {
}
/**
Imports the logos from a given XML inset template.
@param xml_element An XML element representing an inset template.
Imports the logos from a given XML titleblock template.
@param xml_element An XML element representing an titleblock template.
@param reset true to delete all previously known logos before, false
otherwise.
@return true if the reading succeeds, false otherwise.
*/
bool InsetTemplate::loadLogos(const QDomElement &xml_element, bool reset) {
bool TitleBlockTemplate::loadLogos(const QDomElement &xml_element, bool reset) {
if (reset) {
qDeleteAll(vector_logos_.begin(), vector_logos_.end());
vector_logos_.clear();
@@ -103,11 +103,11 @@ bool InsetTemplate::loadLogos(const QDomElement &xml_element, bool reset) {
/**
Imports the logo from a given XML logo description.
@param xml_element An XML element representing a logo within an inset
@param xml_element An XML element representing a logo within an titleblock
template.
@return true if the reading succeeds, false otherwise.
*/
bool InsetTemplate::loadLogo(const QDomElement &xml_element) {
bool TitleBlockTemplate::loadLogo(const QDomElement &xml_element) {
// we require a name
if (!xml_element.hasAttribute("name")) {
return(false);
@@ -161,11 +161,11 @@ bool InsetTemplate::loadLogo(const QDomElement &xml_element) {
}
/**
Imports the grid from a given XML inset template.
@param xml_element An XML element representing an inset template.
Imports the grid from a given XML titleblock template.
@param xml_element An XML element representing an titleblock template.
@return true if the reading succeeds, false otherwise.
*/
bool InsetTemplate::loadGrid(const QDomElement &xml_element) {
bool TitleBlockTemplate::loadGrid(const QDomElement &xml_element) {
// we parse the first available "grid" XML element
QDomElement grid_element;
for (QDomNode n = xml_element.firstChild() ; !n.isNull() ; n = n.nextSibling()) {
@@ -187,9 +187,9 @@ bool InsetTemplate::loadGrid(const QDomElement &xml_element) {
/**
Parses the rows heights
@param rows_string A string describing the rows heights of the inset
@param rows_string A string describing the rows heights of the titleblock
*/
void InsetTemplate::parseRows(const QString &rows_string) {
void TitleBlockTemplate::parseRows(const QString &rows_string) {
rows_heights_.clear();
// parse the rows attribute: we expect a serie of absolute heights
QRegExp row_size_format("^([0-9]+)(?:px)?$", Qt::CaseInsensitive);
@@ -202,16 +202,16 @@ void InsetTemplate::parseRows(const QString &rows_string) {
if (conv_ok) rows_heights_ << row_size;
}
}
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << "Rows heights:" << rows_heights_;
#endif
}
/**
Parses the columns widths
@param cols_string A string describing the columns widths of the inset
@param cols_string A string describing the columns widths of the titleblock
*/
void InsetTemplate::parseColumns(const QString &cols_string) {
void TitleBlockTemplate::parseColumns(const QString &cols_string) {
columns_width_.clear();
// parse the cols attribute: we expect a serie of absolute or relative widths
QRegExp abs_col_size_format("^([0-9]+)(?:px)?$", Qt::CaseInsensitive);
@@ -222,16 +222,16 @@ void InsetTemplate::parseColumns(const QString &cols_string) {
foreach (QString cols_description, cols_descriptions) {
if (abs_col_size_format.exactMatch(cols_description)) {
int col_size = abs_col_size_format.capturedTexts().at(1).toInt(&conv_ok);
if (conv_ok) columns_width_ << InsetColDimension(col_size, QET::Absolute);
if (conv_ok) columns_width_ << TitleBlockColDimension(col_size, QET::Absolute);
} else if (rel_col_size_format.exactMatch(cols_description)) {
int col_size = rel_col_size_format.capturedTexts().at(2).toInt(&conv_ok);
QET::InsetColumnLength col_type = rel_col_size_format.capturedTexts().at(1) == "t" ? QET::RelativeToTotalLength : QET::RelativeToRemainingLength;
if (conv_ok) columns_width_ << InsetColDimension(col_size, col_type );
QET::TitleBlockColumnLength col_type = rel_col_size_format.capturedTexts().at(1) == "t" ? QET::RelativeToTotalLength : QET::RelativeToRemainingLength;
if (conv_ok) columns_width_ << TitleBlockColDimension(col_size, col_type );
}
}
#ifdef INSET_TEMPLATE_DEBUG
foreach (InsetColDimension icd, columns_width_) {
qDebug() << Q_FUNC_INFO << QString("%1 [%2]").arg(icd.value).arg(QET::insetColumnLengthToString(icd.type));
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
foreach (TitleBlockColDimension icd, columns_width_) {
qDebug() << Q_FUNC_INFO << QString("%1 [%2]").arg(icd.value).arg(QET::titleBlockColumnLengthToString(icd.type));
}
#endif
}
@@ -241,7 +241,7 @@ void InsetTemplate::parseColumns(const QString &cols_string) {
and stored in this object.
@param xml_element XML element to analyze
*/
bool InsetTemplate::loadCells(const QDomElement &xml_element) {
bool TitleBlockTemplate::loadCells(const QDomElement &xml_element) {
initCells();
// we are interested by the "logo" and "field" elements
QDomElement grid_element;
@@ -249,7 +249,7 @@ bool InsetTemplate::loadCells(const QDomElement &xml_element) {
if (!n.isElement()) continue;
QDomElement cell_element = n.toElement();
if (cell_element.tagName() == "field" || cell_element.tagName() == "logo") {
InsetCell *loaded_cell;
TitleBlockCell *loaded_cell;
if (!checkCell(cell_element, &loaded_cell)) continue;
if (cell_element.tagName() == "logo") {
@@ -290,16 +290,16 @@ bool InsetTemplate::loadCells(const QDomElement &xml_element) {
}
/**
@param xml_element XML element representing a cell, i.e. either an inset
logo or an inset field.
@param inset_cell_ptr Pointer to an InsetCell object pointer - if non-zero and if
this method returns true, will be filled with the created InsetCell
@param xml_element XML element representing a cell, i.e. either an titleblock
logo or an titleblock field.
@param titleblock_cell_ptr Pointer to an TitleBlockCell object pointer - if non-zero and if
this method returns true, will be filled with the created TitleBlockCell
@return TRUE if the cell appears to be ok, FALSE otherwise
*/
bool InsetTemplate::checkCell(const QDomElement &xml_element, InsetCell **inset_cell_ptr) {
bool TitleBlockTemplate::checkCell(const QDomElement &xml_element, TitleBlockCell **titleblock_cell_ptr) {
int col_count = columns_width_.count(), row_count = rows_heights_.count();
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << "begin" << row_count << col_count;
#endif
@@ -318,10 +318,10 @@ bool InsetTemplate::checkCell(const QDomElement &xml_element, InsetCell **inset_
}
// check whether the target cell can be used or not
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << "cell access" << col_num << row_num;
#endif
InsetCell *cell_ptr = &(cells_[col_num][row_num]);
TitleBlockCell *cell_ptr = &(cells_[col_num][row_num]);
if (!cell_ptr -> is_null || cell_ptr -> spanner_cell) {
return(false);
}
@@ -342,10 +342,10 @@ bool InsetTemplate::checkCell(const QDomElement &xml_element, InsetCell **inset_
for (int i = col_num ; i <= col_num + col_span ; ++ i) {
for (int j = row_num ; j <= row_num + row_span ; ++ j) {
if (i == col_num && j == row_num) continue;
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << "span check" << i << j;
#endif
InsetCell *current_cell = &(cells_[i][j]);
TitleBlockCell *current_cell = &(cells_[i][j]);
if (!current_cell -> is_null || current_cell -> spanner_cell) {
return(false);
}
@@ -354,7 +354,7 @@ bool InsetTemplate::checkCell(const QDomElement &xml_element, InsetCell **inset_
}
// at this point, the cell is ok - we fill the adequate cells in the matrix
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << "cell writing";
#endif
cell_ptr -> num_row = row_num;
@@ -362,16 +362,16 @@ bool InsetTemplate::checkCell(const QDomElement &xml_element, InsetCell **inset_
if (has_row_span) cell_ptr -> row_span = row_span;
if (has_col_span) cell_ptr -> col_span = col_span;
cell_ptr -> is_null = false;
if (inset_cell_ptr) *inset_cell_ptr = cell_ptr;
if (titleblock_cell_ptr) *titleblock_cell_ptr = cell_ptr;
if (has_row_span || has_col_span) {
for (int i = col_num ; i <= col_num + col_span ; ++ i) {
for (int j = row_num ; j <= row_num + row_span ; ++ j) {
if (i == col_num && j == row_num) continue;
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << "span cells writing" << i << j;
#endif
InsetCell *current_cell = &(cells_[i][j]);
TitleBlockCell *current_cell = &(cells_[i][j]);
current_cell -> num_row = j;
current_cell -> num_col = i;
current_cell -> is_null = false;
@@ -388,7 +388,7 @@ bool InsetTemplate::checkCell(const QDomElement &xml_element, InsetCell **inset_
Note that this method does nothing if one of the internal lists
columns_width_ and rows_heights_ is empty.
*/
void InsetTemplate::initCells() {
void TitleBlockTemplate::initCells() {
if (columns_width_.count() < 1 || rows_heights_.count() < 1) return;
cells_.resize(columns_width_.count());
@@ -397,20 +397,20 @@ void InsetTemplate::initCells() {
cells_[i].resize(row_count);
// ensure every cell is a null cell
for (int j = 0 ; j < row_count ; ++ j) {
cells_[i][j] = InsetCell();
cells_[i][j] = TitleBlockCell();
}
}
#ifdef INSET_TEMPLATE_DEBUG
#ifdef TITLEBLOCK_TEMPLATE_DEBUG
qDebug() << Q_FUNC_INFO << toString();
#endif
}
/**
@return A string representing the inset template
@see InsetCell::toString()
@return A string representing the titleblock template
@see TitleBlockCell::toString()
*/
QString InsetTemplate::toString() const {
QString TitleBlockTemplate::toString() const {
QString str = "\n";
for (int j = 0 ; j < rows_heights_.count() ; ++ j) {
for (int i = 0 ; i < columns_width_.count() ; ++ i) {
@@ -422,10 +422,10 @@ QString InsetTemplate::toString() const {
}
/**
@param total_width The total width of the inset to render
@param total_width The total width of the titleblock to render
@return the list of the columns widths for this rendering
*/
QList<int> InsetTemplate::columnsWidth(int total_width) const {
QList<int> TitleBlockTemplate::columnsWidth(int total_width) const {
if (total_width < 0) return(QList<int>());
// we first iter to determine the absolute and total-width-related widths
@@ -433,7 +433,7 @@ QList<int> InsetTemplate::columnsWidth(int total_width) const {
int abs_widths_sum = 0;
for (int i = 0 ; i < columns_width_.count() ; ++ i) {
InsetColDimension icd = columns_width_.at(i);
TitleBlockColDimension icd = columns_width_.at(i);
if (icd.type == QET::Absolute) {
abs_widths_sum += icd.value;
final_widths[i] = icd.value;
@@ -449,7 +449,7 @@ QList<int> InsetTemplate::columnsWidth(int total_width) const {
// we do a second iteration to build the final widths list
for (int i = 0 ; i < columns_width_.count() ; ++ i) {
InsetColDimension icd = columns_width_.at(i);
TitleBlockColDimension icd = columns_width_.at(i);
if (icd.type == QET::RelativeToRemainingLength) {
final_widths[i] = int(remaining_width * icd.value / 100);
}
@@ -457,7 +457,7 @@ QList<int> InsetTemplate::columnsWidth(int total_width) const {
return(final_widths.toList());
}
int InsetTemplate::height() const {
int TitleBlockTemplate::height() const {
int height = 0;
foreach(int row_height, rows_heights_) {
height += row_height;
@@ -466,22 +466,22 @@ int InsetTemplate::height() const {
}
/**
Render the inset.
@param painter Painter to use to render the inset
@param diagram_context Diagram context to use to generate the inset strings
@param inset_width Width of the inset to render
Render the titleblock.
@param painter Painter to use to render the titleblock
@param diagram_context Diagram context to use to generate the titleblock strings
@param titleblock_width Width of the titleblock to render
*/
void InsetTemplate::render(QPainter &painter, const DiagramContext &diagram_context, int inset_width) const {
QList<int> widths = columnsWidth(inset_width);
int inset_height = height();
void TitleBlockTemplate::render(QPainter &painter, const DiagramContext &diagram_context, int titleblock_width) const {
QList<int> widths = columnsWidth(titleblock_width);
int titleblock_height = height();
// prepare the QPainter
painter.setPen(Qt::black);
painter.setBrush(Qt::white);
painter.setFont(QETApp::diagramTextsFont());
// draw the inset border
painter.drawRect(QRect(0, 0, inset_width, inset_height));
// draw the titleblock border
painter.drawRect(QRect(0, 0, titleblock_width, titleblock_height));
// run through each inidividual cell
for (int j = 0 ; j < rows_heights_.count() ; ++ j) {
@@ -524,7 +524,7 @@ void InsetTemplate::render(QPainter &painter, const DiagramContext &diagram_cont
@param diagram_context Diagram context to use to generate the final text for the given cell
@return the final text that has to be drawn in the given cell
*/
QString InsetTemplate::finalTextForCell(const InsetCell &cell, const DiagramContext &diagram_context) const {
QString TitleBlockTemplate::finalTextForCell(const TitleBlockCell &cell, const DiagramContext &diagram_context) const {
QString cell_text = cell.value;
foreach (QString key, diagram_context.keys()) {
@@ -532,7 +532,7 @@ QString InsetTemplate::finalTextForCell(const InsetCell &cell, const DiagramCont
cell_text.replace("%" + key, diagram_context[key].toString());
}
if (cell.display_label && !cell.label.isEmpty()) {
cell_text = QString(tr(" %1 : %2", "inset content - please let the blank space at the beginning")).arg(cell.label).arg(cell_text);
cell_text = QString(tr(" %1 : %2", "titleblock content - please let the blank space at the beginning")).arg(cell.label).arg(cell_text);
} else {
cell_text = QString(tr(" %1")).arg(cell_text);
}
@@ -544,7 +544,7 @@ QString InsetTemplate::finalTextForCell(const InsetCell &cell, const DiagramCont
@param start start border number
@param end end border number
*/
int InsetTemplate::lengthRange(int start, int end, const QList<int> &lengths_list) const {
int TitleBlockTemplate::lengthRange(int start, int end, const QList<int> &lengths_list) const {
if (start > end || start >= lengths_list.count() || end > lengths_list.count()) {
qDebug() << Q_FUNC_INFO << "wont use" << start << "and" << end;
return(0);
@@ -562,7 +562,7 @@ int InsetTemplate::lengthRange(int start, int end, const QList<int> &lengths_lis
/**
Constructor
*/
InsetCell::InsetCell() {
TitleBlockCell::TitleBlockCell() {
num_row = num_col = -1;
row_span = col_span = 0;
display_label = is_null = true;
@@ -570,11 +570,11 @@ InsetCell::InsetCell() {
}
/**
@return A string representing the inset cell
@return A string representing the titleblock cell
*/
QString InsetCell::toString() const {
if (is_null) return("InsetCell{null}");
QString TitleBlockCell::toString() const {
if (is_null) return("TitleBlockCell{null}");
QString span_desc = (row_span > 0 || col_span > 0) ? QString("+%3,%4").arg(row_span).arg(col_span) : QET::pointerString(spanner_cell);
QString base_desc = QString("InsetCell{ [%1, %2] %3 }").arg(num_row).arg(num_col).arg(span_desc);
QString base_desc = QString("TitleBlockCell{ [%1, %2] %3 }").arg(num_row).arg(num_col).arg(span_desc);
return(base_desc);
}

View File

@@ -15,43 +15,43 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INSET_TEMPLATE_H
#define INSET_TEMPLATE_H
#ifndef TITLEBLOCK_TEMPLATE_H
#define TITLEBLOCK_TEMPLATE_H
#include <QtXml>
#include <QtSvg>
#include "diagramcontext.h"
#include "insetcell.h"
#include "titleblockcell.h"
#include "qet.h"
/**
This struct is a simple container associating a length with its type.
@see InsetColumnLength
@see TitleBlockColumnLength
*/
struct InsetColDimension {
InsetColDimension(int v, QET::InsetColumnLength t = QET::Absolute) {
struct TitleBlockColDimension {
TitleBlockColDimension(int v, QET::TitleBlockColumnLength t = QET::Absolute) {
value = v;
type = t;
}
QET::InsetColumnLength type;
QET::TitleBlockColumnLength type;
int value;
};
/**
This class represents an inset templ)ate for an electric diagram.
This class represents an titleblock templ)ate for an electric diagram.
It can read from an XML document the layout of the table that graphically
represents the inset, and can produce a graphical rendering of it from a
represents the titleblock, and can produce a graphical rendering of it from a
diagram context (object embedding the informations of the diagram we want to
represent the inset.
represent the titleblock.
*/
class InsetTemplate : public QObject {
class TitleBlockTemplate : public QObject {
Q_OBJECT
// constructeurs, destructeur
public:
InsetTemplate(QObject * = 0);
virtual ~InsetTemplate();
TitleBlockTemplate(QObject * = 0);
virtual ~TitleBlockTemplate();
private:
InsetTemplate(const InsetTemplate &);
TitleBlockTemplate(const TitleBlockTemplate &);
// methodes
public:
@@ -74,11 +74,11 @@ class InsetTemplate : public QObject {
private:
void parseRows(const QString &);
void parseColumns(const QString &);
bool checkCell(const QDomElement &, InsetCell ** = 0);
bool checkCell(const QDomElement &, TitleBlockCell ** = 0);
void flushCells();
void initCells();
int lengthRange(int, int, const QList<int> &) const;
QString finalTextForCell(const InsetCell &, const DiagramContext &) const;
QString finalTextForCell(const TitleBlockCell &, const DiagramContext &) const;
// attributs
private:
@@ -86,7 +86,7 @@ class InsetTemplate : public QObject {
QHash<QString, QSvgRenderer *> vector_logos_;
QHash<QString, QPixmap *> bitmap_logos_;
QList<int> rows_heights_;
QList<InsetColDimension> columns_width_;
QVector< QVector<InsetCell> > cells_;
QList<TitleBlockColDimension> columns_width_;
QVector< QVector<TitleBlockCell> > cells_;
};
#endif

View File

@@ -0,0 +1,96 @@
#include "titleblocktemplaterenderer.h"
#include "titleblocktemplate.h"
/**
Constructor
@param parnet Parent QObject of this renderer
*/
TitleBlockTemplateRenderer::TitleBlockTemplateRenderer(QObject *parent) :
QObject(parent),
titleblock_template_(0),
last_known_titleblock_width_(-1)
{
}
/**
Destructor
*/
TitleBlockTemplateRenderer::~TitleBlockTemplateRenderer() {
}
/**
@return the titleblock template used for the rendering
*/
const TitleBlockTemplate *TitleBlockTemplateRenderer::titleBlockTemplate() const {
return(titleblock_template_);
}
/**
@param titleblock_template TitleBlock template to render.
*/
void TitleBlockTemplateRenderer::setTitleBlockTemplate(const TitleBlockTemplate *titleblock_template) {
if (titleblock_template != titleblock_template_) {
titleblock_template_ = titleblock_template;
invalidateRenderedTemplate();
}
}
/**
@param context Diagram Context to use when rendering the titleblock
*/
void TitleBlockTemplateRenderer::setContext(const DiagramContext &context) {
context_ = context;
invalidateRenderedTemplate();
}
/**
@return the height of the rendered template, or -1 if no template has been
set for this renderer.
@see TitleBlockTemplate::height()
*/
int TitleBlockTemplateRenderer::height() const {
if (!titleblock_template_) return(-1);
return(titleblock_template_ -> height());
}
/**
Render the titleblock.
@param provided_painter QPainter to use to render the titleblock.
@param titleblock_width The total width of the titleblock to render
*/
void TitleBlockTemplateRenderer::render(QPainter *provided_painter, int titleblock_width) {
if (!titleblock_template_) return;
// Do we really need to calculate all this again?
if (titleblock_width != last_known_titleblock_width_ || rendered_template_.isNull()) {
renderToQPicture(titleblock_width);
}
provided_painter -> save();
rendered_template_.play(provided_painter);
provided_painter -> restore();
}
/**
Renders the titleblock to the internal QPicture
@param titleblock_width Width of the titleblock to render
*/
void TitleBlockTemplateRenderer::renderToQPicture(int titleblock_width) {
if (!titleblock_template_) return;
// we render the template on our internal QPicture
QPainter painter(&rendered_template_);
titleblock_template_ -> render(painter, context_, titleblock_width);
// memorize the last known width
last_known_titleblock_width_ = titleblock_width;
}
/**
Invalidates the previous rendering of the template by resetting the internal
QPicture.
*/
void TitleBlockTemplateRenderer::invalidateRenderedTemplate() {
rendered_template_ = QPicture();
}

View File

@@ -15,19 +15,19 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INSET_TEMPLATE_RENDERER_H
#define INSET_TEMPLATE_RENDERER_H
#ifndef TITLEBLOCK_TEMPLATE_RENDERER_H
#define TITLEBLOCK_TEMPLATE_RENDERER_H
#include <QPicture>
#include "diagramcontext.h"
class InsetTemplate;
class InsetTemplateRenderer : public QObject {
class TitleBlockTemplate;
class TitleBlockTemplateRenderer : public QObject {
Q_OBJECT
public:
InsetTemplateRenderer(QObject * = 0);
virtual ~InsetTemplateRenderer();
const InsetTemplate *insetTemplate() const;
void setInsetTemplate(const InsetTemplate *);
TitleBlockTemplateRenderer(QObject * = 0);
virtual ~TitleBlockTemplateRenderer();
const TitleBlockTemplate *titleBlockTemplate() const;
void setTitleBlockTemplate(const TitleBlockTemplate *);
void setContext(const DiagramContext &context);
int height() const;
void render(QPainter *, int);
@@ -37,9 +37,9 @@ class InsetTemplateRenderer : public QObject {
void invalidateRenderedTemplate();
private:
const InsetTemplate *inset_template_;
const TitleBlockTemplate *titleblock_template_;
QPicture rendered_template_;
DiagramContext context_;
int last_known_inset_width_;
int last_known_titleblock_width_;
};
#endif

View File

@@ -1,4 +1,4 @@
<insettemplate name="default">
<titleblocktemplate name="default">
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<grid rows="25px;25px" cols="t22%;r100%;t22%">
@@ -8,4 +8,4 @@ License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<field row="0" col="2" name="file" label="Fichier" displaylabel="true" align="left" rowspan="0" value="%filename" />
<field row="1" col="2" name="folio" label="Folio" displaylabel="true" align="left" rowspan="0" value="%{folio-id}/%{folio-total}" />
</grid>
</insettemplate>
</titleblocktemplate>