QElectroTech  0.70
bordertitleblock.h
Go to the documentation of this file.
1 /*
2  Copyright 2006-2019 The QElectroTech Team
3  This file is part of QElectroTech.
4 
5  QElectroTech is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 2 of the License, or
8  (at your option) any later version.
9 
10  QElectroTech is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef BORDERTITLEBLOCK_H
19 #define BORDERTITLEBLOCK_H
20 #include "diagramcontext.h"
21 #include "titleblockproperties.h"
22 #include "borderproperties.h"
23 #include <QObject>
24 #include <QRectF>
25 #include <QDate>
26 #include "numerotationcontext.h"
27 class QPainter;
28 class DiagramPosition;
29 class TitleBlockTemplate;
35 class BorderTitleBlock : public QObject
36 {
37  Q_OBJECT
38 
39  public:
40  BorderTitleBlock(QObject * = nullptr);
41  ~BorderTitleBlock() override;
42 
43  private:
45 
46  //METHODS
47  public:
48  void draw(QPainter *painter);
49  void drawDxf(int, int, bool, QString &, int);
50 
51  //METHODS TO GET DIMENSION
52  //COLUMNS
54  int columnsCount() const { return(columns_count_); }
56  qreal columnsWidth() const { return(columns_width_); }
58  qreal columnsTotalWidth() const { return(columns_count_ * columns_width_); }
60  qreal columnsHeaderHeight() const { return(columns_header_height_); }
61 
62  //ROWS
64  int rowsCount() const { return(rows_count_); }
66  qreal rowsHeight() const { return(rows_height_); }
68  qreal rowsTotalHeight() const { return(rows_count_ * rows_height_); }
70  qreal rowsHeaderWidth() const { return(rows_header_width_); }
71 
72  // border - title block = diagram
74  qreal diagramWidth() const { return(columnsTotalWidth() + rowsHeaderWidth()); }
76  qreal diagramHeight() const { return(rowsTotalHeight() + columnsHeaderHeight()); }
77 
78  QRectF titleBlockRect () const;
79  private:
80  QRectF titleBlockRectForQPainter () const;
81 
82  public:
83  QRectF borderAndTitleBlockRect () const;
84  QRectF columnsRect () const;
85  QRectF rowsRect () const;
86  QRectF outsideBorderRect() const;
87  QRectF insideBorderRect() const;
88 
89  // methods to get title block basic data
91  QString author() const { return(btb_author_); }
93  QDate date() const { return(btb_date_); }
95  QString title() const { return(btb_title_); }
97  QString folio() const { return(btb_folio_); }
99  QString finalfolio() const { return(btb_final_folio_); }
101  QString plant() const { return(btb_plant_); }
103  QString locmach() const { return(btb_locmach_); }
105  QString indexrev() const { return(btb_indexrev_); }
107  QString fileName() const { return(btb_filename_); }
109  QString version() const { return(btb_version_); }
113  QString autoPageNum() const { return(btb_auto_page_num_); }
115  int folioTotal() const { return(folio_total_);}
116 
117  // methods to get display options
119  bool titleBlockIsDisplayed() const { return(display_titleblock_); }
121  bool columnsAreDisplayed() const { return(display_columns_); }
123  bool rowsAreDisplayed() const { return(display_rows_); }
125  bool borderIsDisplayed() const { return(display_border_); }
126 
127  // methods to set dimensions
128  void setColumnsCount(int);
129  void setRowsCount(int);
130  void setColumnsWidth(const qreal &);
131  void setRowsHeight(const qreal &);
132  void setColumnsHeaderHeight(const qreal &);
133  void setRowsHeaderWidth(const qreal &);
134  void setDiagramHeight(const qreal &);
135 
136  DiagramPosition convertPosition(const QPointF &);
137 
138  // methods to set title block basic data
139  void setAuthor(const QString &author);
140  void setDate(const QDate &date);
141  void setTitle(const QString &title);
142  void setFolio(const QString &folio);
143  void setFolioData(int, int, const QString& = nullptr, const DiagramContext & = DiagramContext());
144  void setPlant(const QString &plant);
145  void setLocMach(const QString &locmach);
146  void setIndicerev(const QString &indexrev);
147  void setFileName(const QString &filename);
148  void setVersion(const QString &version);
149  void setAutoPageNum(const QString &auto_page_num);
150  void setPreviousFolioNum(const QString &previous);
151  void setNextFolioNum(const QString &next);
152 
153  void titleBlockToXml(QDomElement &);
154  void titleBlockFromXml(const QDomElement &);
155  void borderToXml(QDomElement &);
156  void borderFromXml(const QDomElement &);
157 
161  void importBorder(const BorderProperties &);
162 
165  QString titleBlockTemplateName() const;
166 
167  public slots:
168  void titleBlockTemplateChanged(const QString &);
169  void titleBlockTemplateRemoved(const QString &, const TitleBlockTemplate * = nullptr);
170 
171  // methods to set display options
172  void displayTitleBlock(bool);
173  void displayColumns(bool);
174  void displayRows(bool);
175  void displayBorder(bool);
176  void slot_setAutoPageNum (QString);
177 
178  private:
179  void updateRectangles();
181  QString incrementLetters(const QString &);
182 
183  signals:
189  void borderChanged(QRectF old_border, QRectF new_border);
193  void displayChanged();
197  void diagramTitleChanged(const QString &);
202  void titleBlockFolioChanged(const QString &);
207  void needFolioData();
213  void needTitleBlockTemplate(const QString &);
214 
215  // attributes
216  private:
217  // titleblock basic data
218  QString btb_author_;
219  QDate btb_date_;
220  QString btb_title_;
221  QString btb_folio_;
222  QString btb_plant_;
223  QString btb_locmach_;
224  QString btb_indexrev_;
229  QString btb_filename_;
230  QString btb_version_;
232  Qt::Edge m_edge;
235 
236  // border dimensions (rows and columns)
237  // columns: number and dimensions
241 
242  // rows: number and dimensions
246 
247  // title block dimensions
249 
250  // rectangles used for drawing operations
252 
253  // display options
259 };
260 #endif
QString autoPageNum() const
TitleBlockTemplateRenderer * titleblock_template_renderer_
QRectF columnsRect() const
BorderTitleBlock::columnsRect.
void setFolioData(int, int, const QString &=nullptr, const DiagramContext &=DiagramContext())
void updateDiagramContextForTitleBlock(const DiagramContext &=DiagramContext())
DiagramContext additional_fields_
DiagramPosition convertPosition(const QPointF &)
BorderTitleBlock::convertPosition Convert a Point in cartesian coordinate (x : 12.5, 56.9) to a point in grid coordinate (ex : B2)
int folioTotal() const
void setColumnsHeaderHeight(const qreal &)
QRectF outsideBorderRect() const
BorderTitleBlock::outsideBorderRect.
QString version() const
QString author() const
qreal diagramHeight() const
void drawDxf(int, int, bool, QString &, int)
QString title() const
QRectF insideBorderRect() const
BorderTitleBlock::insideBorderRect.
void setTitle(const QString &title)
BorderTitleBlock::setTitle.
void setFileName(const QString &filename)
BorderTitleBlock::setFileName.
QString fileName() const
void borderFromXml(const QDomElement &)
TitleBlockProperties exportTitleBlock()
const TitleBlockTemplate * titleBlockTemplate()
bool borderIsDisplayed() const
QRectF rowsRect() const
BorderTitleBlock::rowsRect.
QRectF borderAndTitleBlockRect() const
BorderTitleBlock::borderAndTitleBlockRect.
void displayTitleBlock(bool)
QString finalfolio() const
QString indexrev() const
QString incrementLetters(const QString &)
int columnsCount() const
qreal rowsHeaderWidth() const
void setColumnsWidth(const qreal &)
void diagramTitleChanged(const QString &)
void setAuthor(const QString &author)
BorderTitleBlock::setAuthor.
void titleBlockFolioChanged(const QString &)
titleBlockFolioChanged Signal emitted after Folio has changed
void draw(QPainter *painter)
BorderTitleBlock::draw Draw the border and the titleblock.
QRectF titleBlockRectForQPainter() const
BorderTitleBlock::titleBlockRectForQPainter.
void needTitleBlockTemplate(const QString &)
QString m_previous_folio_num
qreal columnsWidth() const
qreal rowsHeight() const
QString locmach() const
void importTitleBlock(const TitleBlockProperties &)
BorderTitleBlock::importTitleBlock.
bool rowsAreDisplayed() const
void setDiagramHeight(const qreal &)
void borderToXml(QDomElement &)
void updateRectangles()
BorderTitleBlock::updateRectangles This method update the diagram rect according to the value of rows...
void setDate(const QDate &date)
BorderTitleBlock::setDate.
void slot_setAutoPageNum(QString)
BorderTitleBlock::slot_setAutoPageNum.
~BorderTitleBlock() override
DiagramContext additionalFields() const
bool columnsAreDisplayed() const
QRectF titleBlockRect() const
BorderTitleBlock::titleBlockRect.
QString folio() const
qreal columnsHeaderHeight() const
void setNextFolioNum(const QString &next)
BorderTitleBlock::setNextFolioNum.
int rowsCount() const
BorderProperties exportBorder()
bool titleBlockIsDisplayed() const
void setPreviousFolioNum(const QString &previous)
BorderTitleBlock::setPreviousFolioNum.
void setRowsHeight(const qreal &)
void titleBlockTemplateChanged(const QString &)
QString plant() const
qreal columnsTotalWidth() const
BorderTitleBlock(QObject *=nullptr)
void setFolio(const QString &folio)
BorderTitleBlock::setFolio.
void setVersion(const QString &version)
BorderTitleBlock::setVersion.
void setIndicerev(const QString &indexrev)
BorderTitleBlock::setIndicerev.
void setTitleBlockTemplate(const TitleBlockTemplate *)
qreal rowsTotalHeight() const
void titleBlockFromXml(const QDomElement &)
void importBorder(const BorderProperties &)
qreal diagramWidth() const
QDate date() const
void setLocMach(const QString &locmach)
BorderTitleBlock::setLocMach.
void borderChanged(QRectF old_border, QRectF new_border)
void setAutoPageNum(const QString &auto_page_num)
BorderTitleBlock::setAutoPageNum.
void setPlant(const QString &plant)
BorderTitleBlock::setPlant.
void titleBlockToXml(QDomElement &)
QString titleBlockTemplateName() const
void setRowsHeaderWidth(const qreal &)
void titleBlockTemplateRemoved(const QString &, const TitleBlockTemplate *=nullptr)