mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Title block : add two news variables, previous-folio-num and next-folio-num
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5664 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
34f59f4920
commit
2274382219
@ -696,6 +696,45 @@ DiagramPosition BorderTitleBlock::convertPosition(const QPointF &pos)
|
||||
return(DiagramPosition(letter, row_number));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setAuthor
|
||||
* @param author the new value of the "Author" field
|
||||
*/
|
||||
void BorderTitleBlock::setAuthor(const QString &author) {
|
||||
btb_author_ = author;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setDate
|
||||
* @param date the new value of the "Date" field
|
||||
*/
|
||||
void BorderTitleBlock::setDate(const QDate &date) {
|
||||
btb_date_ = date;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setTitle
|
||||
* @param title the new value of the "Title" field
|
||||
*/
|
||||
void BorderTitleBlock::setTitle(const QString &title)
|
||||
{
|
||||
if (btb_title_ != title)
|
||||
{
|
||||
btb_title_ = title;
|
||||
emit(diagramTitleChanged(title));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setFolio
|
||||
* @param folio the new value of the "Folio" field
|
||||
*/
|
||||
void BorderTitleBlock::setFolio(const QString &folio)
|
||||
{
|
||||
btb_folio_ = folio;
|
||||
emit (titleBlockFolioChanged(folio));
|
||||
}
|
||||
|
||||
/**
|
||||
Update the informations given to the titleblock template by regenerating a
|
||||
DiagramContext object.
|
||||
@ -723,6 +762,8 @@ void BorderTitleBlock::updateDiagramContextForTitleBlock(const DiagramContext &i
|
||||
context.addValue("folio-id", folio_index_);
|
||||
context.addValue("folio-total", folio_total_);
|
||||
context.addValue("auto_page_num", btb_auto_page_num_);
|
||||
context.addValue("previous-folio-num", m_previous_folio_num);
|
||||
context.addValue("next-folio-num", m_next_folio_num);
|
||||
|
||||
titleblock_template_renderer_ -> setContext(context);
|
||||
}
|
||||
@ -769,3 +810,75 @@ void BorderTitleBlock::setFolioData(int index, int total, const QString& autonum
|
||||
|
||||
updateDiagramContextForTitleBlock(project_properties);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setPlant
|
||||
* @param plant the new value of the "plant" field
|
||||
*/
|
||||
void BorderTitleBlock::setPlant(const QString &plant) {
|
||||
btb_plant_ = plant;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setLocMach
|
||||
* @param locmach the new value of the "locmach" field
|
||||
*/
|
||||
void BorderTitleBlock::setLocMach(const QString &locmach) {
|
||||
btb_locmach_ = locmach;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setIndicerev
|
||||
* @param indexrev the new value of the "indexrev" field
|
||||
*/
|
||||
void BorderTitleBlock::setIndicerev(const QString &indexrev) {
|
||||
btb_indexrev_ = indexrev;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setFileName
|
||||
* @param filename the new value of the "filename" field
|
||||
*/
|
||||
void BorderTitleBlock::setFileName(const QString &filename) {
|
||||
btb_filename_ = filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setVersion
|
||||
* @param version the new value of the "version" field
|
||||
*/
|
||||
void BorderTitleBlock::setVersion(const QString &version) {
|
||||
btb_version_ = version;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setAutoPageNum
|
||||
* @param auto_page_num the new value of the "auto_page_num" field
|
||||
*/
|
||||
void BorderTitleBlock::setAutoPageNum(const QString &auto_page_num) {
|
||||
btb_auto_page_num_ = auto_page_num;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setPreviousFolioNum
|
||||
* @param previous the new value of the "previous-folio-num" field
|
||||
*/
|
||||
void BorderTitleBlock::setPreviousFolioNum(const QString &previous)
|
||||
{
|
||||
m_previous_folio_num = previous;
|
||||
DiagramContext context = titleblock_template_renderer_->context();
|
||||
context.addValue("previous-folio-num", m_previous_folio_num);
|
||||
titleblock_template_renderer_->setContext(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief BorderTitleBlock::setNextFolioNum
|
||||
* @param next the new value of the "next-folio-num" field
|
||||
*/
|
||||
void BorderTitleBlock::setNextFolioNum(const QString &next)
|
||||
{
|
||||
m_next_folio_num = next;
|
||||
DiagramContext context = titleblock_template_renderer_->context();
|
||||
context.addValue("next-folio-num", m_next_folio_num);
|
||||
titleblock_template_renderer_->setContext(context);
|
||||
}
|
||||
|
@ -103,7 +103,6 @@ class BorderTitleBlock : public QObject
|
||||
QString locmach() const { return(btb_locmach_); }
|
||||
/// @return the value of the revision index block "Folio" field
|
||||
QString indexrev() const { return(btb_indexrev_); }
|
||||
|
||||
/// @return the value of the title block "File" field
|
||||
QString fileName() const { return(btb_filename_); }
|
||||
/// @return the value of the title block Additional Fields
|
||||
@ -137,32 +136,19 @@ class BorderTitleBlock : public QObject
|
||||
DiagramPosition convertPosition(const QPointF &);
|
||||
|
||||
// methods to set title block basic data
|
||||
/// @param author the new value of the "Author" field
|
||||
void setAuthor(const QString &author) { btb_author_ = author; }
|
||||
/// @param author the new value of the "Date" field
|
||||
void setDate(const QDate &date) { btb_date_ = date; }
|
||||
/// @param author the new value of the "Title" field
|
||||
void setTitle(const QString &title) {
|
||||
if (btb_title_ != title) {
|
||||
btb_title_ = title;
|
||||
emit(diagramTitleChanged(title));
|
||||
}
|
||||
}
|
||||
/// @param author the new value of the "Folio" field
|
||||
void setFolio(const QString &folio) {
|
||||
btb_folio_ = folio;
|
||||
emit (titleBlockFolioChanged(folio));
|
||||
}
|
||||
void setAuthor(const QString &author);
|
||||
void setDate(const QDate &date);
|
||||
void setTitle(const QString &title);
|
||||
void setFolio(const QString &folio);
|
||||
void setFolioData(int, int, const QString& = nullptr, const DiagramContext & = DiagramContext());
|
||||
/// @param author the new value of the "File" field
|
||||
void setPlant(const QString &plant) { btb_plant_ = plant; }
|
||||
void setLocMach(const QString &locmach) { btb_locmach_ = locmach; }
|
||||
void setIndicerev(const QString &indexrev){ btb_indexrev_ = indexrev; }
|
||||
void setFileName(const QString &filename) { btb_filename_ = filename; }
|
||||
/// @param author the new value of the "Version" field
|
||||
void setVersion(const QString &version) { btb_version_ = version; }
|
||||
/// @param author the new value of the "Auto Page Num" field
|
||||
void setAutoPageNum(const QString &auto_page_num) { btb_auto_page_num_ = auto_page_num;}
|
||||
void setPlant(const QString &plant);
|
||||
void setLocMach(const QString &locmach);
|
||||
void setIndicerev(const QString &indexrev);
|
||||
void setFileName(const QString &filename);
|
||||
void setVersion(const QString &version);
|
||||
void setAutoPageNum(const QString &auto_page_num);
|
||||
void setPreviousFolioNum(const QString &previous);
|
||||
void setNextFolioNum(const QString &next);
|
||||
|
||||
void titleBlockToXml(QDomElement &);
|
||||
void titleBlockFromXml(const QDomElement &);
|
||||
@ -205,24 +191,20 @@ class BorderTitleBlock : public QObject
|
||||
Signal emitted after display options have changed
|
||||
*/
|
||||
void displayChanged();
|
||||
|
||||
/**
|
||||
Signal emitted after the title has changed
|
||||
*/
|
||||
void diagramTitleChanged(const QString &);
|
||||
|
||||
/**
|
||||
@brief titleBlockFolioChanged
|
||||
Signal emitted after Folio has changed
|
||||
*/
|
||||
void titleBlockFolioChanged(const QString &);
|
||||
|
||||
/**
|
||||
Signal emitted when the title block requires its data to be updated in order
|
||||
to generate the folio field.
|
||||
*/
|
||||
void needFolioData();
|
||||
|
||||
/**
|
||||
Signal emitted when this object needs to set a specific title block
|
||||
template. This object cannot handle the job since it does not know of
|
||||
@ -248,6 +230,8 @@ class BorderTitleBlock : public QObject
|
||||
QString btb_version_;
|
||||
DiagramContext additional_fields_;
|
||||
Qt::Edge m_edge;
|
||||
QString m_next_folio_num,
|
||||
m_previous_folio_num;
|
||||
|
||||
// border dimensions (rows and columns)
|
||||
// columns: number and dimensions
|
||||
|
@ -1744,7 +1744,8 @@ bool QETProject::projectWasModified() {
|
||||
Indique a chaque schema du projet quel est son numero de folio et combien de
|
||||
folio le projet contient.
|
||||
*/
|
||||
void QETProject::updateDiagramsFolioData() {
|
||||
void QETProject::updateDiagramsFolioData()
|
||||
{
|
||||
int total_folio = m_diagrams_list.count();
|
||||
|
||||
DiagramContext project_wide_properties = project_properties_;
|
||||
@ -1752,19 +1753,38 @@ void QETProject::updateDiagramsFolioData() {
|
||||
project_wide_properties.addValue("projectpath", filePath());
|
||||
project_wide_properties.addValue("projectfilename", QFileInfo(filePath()).baseName());
|
||||
|
||||
for (int i = 0 ; i < total_folio ; ++ i) {
|
||||
QString title = m_diagrams_list[i] -> title();
|
||||
for (int i = 0 ; i < total_folio ; ++ i)
|
||||
{
|
||||
QString autopagenum = m_diagrams_list[i]->border_and_titleblock.autoPageNum();
|
||||
NumerotationContext nC = folioAutoNum(autopagenum);
|
||||
NumerotationContextCommands nCC = NumerotationContextCommands(nC);
|
||||
if((m_diagrams_list[i]->border_and_titleblock.folio().contains("%autonum"))&&(!autopagenum.isNull())){
|
||||
|
||||
if ((m_diagrams_list[i]->border_and_titleblock.folio().contains("%autonum")) &&
|
||||
(!autopagenum.isNull()))
|
||||
{
|
||||
m_diagrams_list[i] -> border_and_titleblock.setFolioData(i + 1, total_folio, nCC.toRepresentedString(), project_wide_properties);
|
||||
m_diagrams_list[i]->project()->addFolioAutoNum(autopagenum,nCC.next());
|
||||
}
|
||||
else {
|
||||
m_diagrams_list[i] -> border_and_titleblock.setFolioData(i + 1, total_folio, nullptr, project_wide_properties);
|
||||
}
|
||||
m_diagrams_list[i] -> update();
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
m_diagrams_list.at(i)->border_and_titleblock.setPreviousFolioNum(m_diagrams_list.at(i-1)->border_and_titleblock.finalfolio());
|
||||
m_diagrams_list.at(i-1)->border_and_titleblock.setNextFolioNum(m_diagrams_list.at(i)->border_and_titleblock.finalfolio());
|
||||
|
||||
if (i == total_folio-1) {
|
||||
m_diagrams_list.at(i)->border_and_titleblock.setNextFolioNum(QString());
|
||||
}
|
||||
}
|
||||
else {
|
||||
m_diagrams_list.at(i)->border_and_titleblock.setPreviousFolioNum(QString());
|
||||
}
|
||||
}
|
||||
|
||||
for (Diagram *d : m_diagrams_list) {
|
||||
d->update();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -444,6 +444,8 @@ QString TitleBlockTemplateCellWidget::defaultVariablesString() const {
|
||||
"<li>%{folio} : numéro du folio</li>"
|
||||
"<li>%{folio-id} : position du folio dans le projet</li>"
|
||||
"<li>%{folio-total} : nombre total de folios dans le projet</li>"
|
||||
"<li>%{previous-folio-num} : numéro du folio précédent</li>"
|
||||
"<li>%{next-folio-num} : numéro du folio suivant</li>"
|
||||
"<li>%{projecttitle} : titre du projet</li>"
|
||||
"<li>%{projectpath} : chemin du projet</li>"
|
||||
"<li>%{projectfilename} : nom du fichier</li>"
|
||||
|
@ -7,9 +7,9 @@
|
||||
*/
|
||||
TitleBlockTemplateRenderer::TitleBlockTemplateRenderer(QObject *parent) :
|
||||
QObject(parent),
|
||||
titleblock_template_(nullptr),
|
||||
use_cache_(true),
|
||||
last_known_titleblock_width_(-1)
|
||||
m_titleblock_template(nullptr),
|
||||
m_use_cache(true),
|
||||
m_last_known_titleblock_width(-1)
|
||||
{
|
||||
}
|
||||
|
||||
@ -23,35 +23,44 @@ TitleBlockTemplateRenderer::~TitleBlockTemplateRenderer() {
|
||||
@return the titleblock template used for the rendering
|
||||
*/
|
||||
const TitleBlockTemplate *TitleBlockTemplateRenderer::titleBlockTemplate() const {
|
||||
return(titleblock_template_);
|
||||
return(m_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;
|
||||
if (titleblock_template != m_titleblock_template) {
|
||||
m_titleblock_template = titleblock_template;
|
||||
invalidateRenderedTemplate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@param context Diagram Context to use when rendering the titleblock
|
||||
* @brief TitleBlockTemplateRenderer::setContext
|
||||
* @param context : Context to use when rendering the titleblock
|
||||
*/
|
||||
void TitleBlockTemplateRenderer::setContext(const DiagramContext &context) {
|
||||
context_ = context;
|
||||
m_context = context;
|
||||
invalidateRenderedTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TitleBlockTemplateRenderer::context
|
||||
* @return the current diagram context use when render the titleblock
|
||||
*/
|
||||
DiagramContext TitleBlockTemplateRenderer::context() const {
|
||||
return m_context;
|
||||
}
|
||||
|
||||
/**
|
||||
@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());
|
||||
if (!m_titleblock_template) return(-1);
|
||||
return(m_titleblock_template -> height());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -60,26 +69,26 @@ int TitleBlockTemplateRenderer::height() const {
|
||||
@param titleblock_width The total width of the titleblock to render
|
||||
*/
|
||||
void TitleBlockTemplateRenderer::render(QPainter *provided_painter, int titleblock_width) {
|
||||
if (!titleblock_template_) return;
|
||||
if (!m_titleblock_template) return;
|
||||
|
||||
if (use_cache_) {
|
||||
if (m_use_cache) {
|
||||
// Do we really need to calculate all this again?
|
||||
if (titleblock_width != last_known_titleblock_width_ || rendered_template_.isNull()) {
|
||||
if (titleblock_width != m_last_known_titleblock_width || m_rendered_template.isNull()) {
|
||||
renderToQPicture(titleblock_width);
|
||||
}
|
||||
|
||||
provided_painter -> save();
|
||||
rendered_template_.play(provided_painter);
|
||||
m_rendered_template.play(provided_painter);
|
||||
provided_painter -> restore();
|
||||
} else {
|
||||
titleblock_template_ -> render(*provided_painter, context_, titleblock_width);
|
||||
m_titleblock_template -> render(*provided_painter, m_context, titleblock_width);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TitleBlockTemplateRenderer::renderDxf(QRectF &title_block_rect, int titleblock_width, QString &file_path, int color) {
|
||||
if (!titleblock_template_) return;
|
||||
titleblock_template_ -> renderDxf(title_block_rect, context_, titleblock_width, file_path, color);
|
||||
if (!m_titleblock_template) return;
|
||||
m_titleblock_template -> renderDxf(title_block_rect, m_context, titleblock_width, file_path, color);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -87,15 +96,15 @@ void TitleBlockTemplateRenderer::renderDxf(QRectF &title_block_rect, int titlebl
|
||||
@param titleblock_width Width of the titleblock to render
|
||||
*/
|
||||
void TitleBlockTemplateRenderer::renderToQPicture(int titleblock_width) {
|
||||
if (!titleblock_template_) return;
|
||||
if (!m_titleblock_template) return;
|
||||
|
||||
// we render the template on our internal QPicture
|
||||
QPainter painter(&rendered_template_);
|
||||
QPainter painter(&m_rendered_template);
|
||||
|
||||
titleblock_template_ -> render(painter, context_, titleblock_width);
|
||||
m_titleblock_template -> render(painter, m_context, titleblock_width);
|
||||
|
||||
// memorize the last known width
|
||||
last_known_titleblock_width_ = titleblock_width;
|
||||
m_last_known_titleblock_width = titleblock_width;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -103,7 +112,7 @@ void TitleBlockTemplateRenderer::renderToQPicture(int titleblock_width) {
|
||||
QPicture.
|
||||
*/
|
||||
void TitleBlockTemplateRenderer::invalidateRenderedTemplate() {
|
||||
rendered_template_ = QPicture();
|
||||
m_rendered_template = QPicture();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,7 +120,7 @@ void TitleBlockTemplateRenderer::invalidateRenderedTemplate() {
|
||||
false otherwise.
|
||||
*/
|
||||
void TitleBlockTemplateRenderer::setUseCache(bool use_cache) {
|
||||
use_cache_ = use_cache;
|
||||
m_use_cache = use_cache;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -119,6 +128,6 @@ void TitleBlockTemplateRenderer::setUseCache(bool use_cache) {
|
||||
otherwise.
|
||||
*/
|
||||
bool TitleBlockTemplateRenderer::useCache() const {
|
||||
return(use_cache_);
|
||||
return(m_use_cache);
|
||||
}
|
||||
|
||||
|
@ -19,16 +19,23 @@
|
||||
#define TITLEBLOCK_TEMPLATE_RENDERER_H
|
||||
#include <QPicture>
|
||||
#include "diagramcontext.h"
|
||||
|
||||
class TitleBlockTemplate;
|
||||
class TitleBlockTemplateRenderer : public QObject {
|
||||
|
||||
class TitleBlockTemplateRenderer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TitleBlockTemplateRenderer(QObject * = nullptr);
|
||||
~TitleBlockTemplateRenderer() override;
|
||||
|
||||
const TitleBlockTemplate *titleBlockTemplate() const;
|
||||
void setTitleBlockTemplate(const TitleBlockTemplate *);
|
||||
|
||||
void setContext(const DiagramContext &context);
|
||||
DiagramContext context()const;
|
||||
|
||||
int height() const;
|
||||
void render(QPainter *, int);
|
||||
void renderDxf(QRectF &, int, QString &, int);
|
||||
@ -40,10 +47,10 @@ class TitleBlockTemplateRenderer : public QObject {
|
||||
void renderToQPicture(int);
|
||||
|
||||
private:
|
||||
const TitleBlockTemplate *titleblock_template_;
|
||||
bool use_cache_;
|
||||
QPicture rendered_template_;
|
||||
DiagramContext context_;
|
||||
int last_known_titleblock_width_;
|
||||
const TitleBlockTemplate *m_titleblock_template;
|
||||
bool m_use_cache;
|
||||
QPicture m_rendered_template;
|
||||
DiagramContext m_context;
|
||||
int m_last_known_titleblock_width;
|
||||
};
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user