mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 20:50:34 +01:00
List of Drawings: DXF export added and multple sheets for large project added.
Pending work: - folio string to be formatted correctly. - thorough testing to be done because lot of changes to addDiagram / removeDiagram had to be done to add the feature of multiple folio list sheets git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@2836 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -18,6 +18,33 @@
|
|||||||
#include "diagramfoliolist.h"
|
#include "diagramfoliolist.h"
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
|
int DiagramFolioList::folioList_quantity = 0;
|
||||||
|
qreal DiagramFolioList::colWidths[4] = {0.1, 0.55, 0.2, 0.15};
|
||||||
|
|
||||||
|
DiagramFolioList::DiagramFolioList(QObject *parent) : Diagram(parent)
|
||||||
|
{
|
||||||
|
list_lines_.clear();
|
||||||
|
list_rectangles_.clear();
|
||||||
|
|
||||||
|
id = folioList_quantity;
|
||||||
|
folioList_quantity++;
|
||||||
|
|
||||||
|
qreal width = border_and_titleblock.columnsTotalWidth();
|
||||||
|
qreal height = border_and_titleblock.rowsTotalHeight();
|
||||||
|
|
||||||
|
//top left corner of drawable area
|
||||||
|
qreal x0 = border_and_titleblock.rowsHeaderWidth();
|
||||||
|
qreal y0 = border_and_titleblock.columnsHeaderHeight();
|
||||||
|
QRectF row_RectF(x0, y0, width, height);
|
||||||
|
|
||||||
|
buildGrid(row_RectF,30,2,colWidths);
|
||||||
|
}
|
||||||
|
|
||||||
|
DiagramFolioList::~DiagramFolioList()
|
||||||
|
{
|
||||||
|
if (folioList_quantity > 0)
|
||||||
|
folioList_quantity--;
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramFolioList::drawBackground(QPainter *p, const QRectF &r)
|
void DiagramFolioList::drawBackground(QPainter *p, const QRectF &r)
|
||||||
{
|
{
|
||||||
@@ -30,37 +57,51 @@ void DiagramFolioList::drawBackground(QPainter *p, const QRectF &r)
|
|||||||
|
|
||||||
// dessine un fond blanc
|
// dessine un fond blanc
|
||||||
p -> setPen(Qt::NoPen);
|
p -> setPen(Qt::NoPen);
|
||||||
//set brush color to present background color.
|
|
||||||
p -> setBrush(Diagram::background_color);
|
p -> setBrush(Diagram::background_color);
|
||||||
p -> drawRect(r);
|
p -> drawRect(r);
|
||||||
|
|
||||||
p -> setPen(Qt::black);
|
p -> setPen(Qt::black);
|
||||||
qreal width = border_and_titleblock.columnsTotalWidth();
|
|
||||||
qreal height = border_and_titleblock.rowsTotalHeight();
|
|
||||||
|
|
||||||
QList<Diagram *> diagram_list = project() -> diagrams();
|
|
||||||
|
|
||||||
//top left corner of drawable area
|
|
||||||
qreal x0 = border_and_titleblock.rowsHeaderWidth();
|
|
||||||
qreal y0 = border_and_titleblock.columnsHeaderHeight();
|
|
||||||
qreal drawings_quantity = diagram_list.size();
|
|
||||||
qreal rowHeight = height / (drawings_quantity+1) * 0.8;
|
|
||||||
rowHeight = (rowHeight > height*0.05) ? height*0.05 : rowHeight;
|
|
||||||
QRectF row_RectF(x0 + width*.1, y0 + height*.05, width*0.8, rowHeight);
|
|
||||||
|
|
||||||
QString authorTranslatable = tr("Auteur");
|
QString authorTranslatable = tr("Auteur");
|
||||||
QString titleTranslatable = tr("Titre");
|
QString titleTranslatable = tr("Titre");
|
||||||
QString folioTranslatable = tr("Folio");
|
QString folioTranslatable = tr("Folio");
|
||||||
QString dateTranslatable = tr("Date");
|
QString dateTranslatable = tr("Date");
|
||||||
|
|
||||||
|
qreal x0 = list_rectangles_[0] -> topLeft().x();
|
||||||
|
qreal y0 = list_rectangles_[0] -> topLeft().y();
|
||||||
|
qreal rowHeight = (list_rectangles_[0] -> height())/30;
|
||||||
|
QRectF row_RectF(x0, y0, list_rectangles_[0] -> width(), rowHeight);
|
||||||
|
|
||||||
fillRow(p, row_RectF, authorTranslatable, titleTranslatable, folioTranslatable, dateTranslatable);
|
fillRow(p, row_RectF, authorTranslatable, titleTranslatable, folioTranslatable, dateTranslatable);
|
||||||
foreach (Diagram *diagram, diagram_list) {
|
QList<Diagram *> diagram_list = project() -> diagrams();
|
||||||
|
|
||||||
|
int startDiagram = id * 58;
|
||||||
|
|
||||||
|
for (int i = startDiagram; i < startDiagram+29 && i < diagram_list.size(); ++i) {
|
||||||
y0 += rowHeight;
|
y0 += rowHeight;
|
||||||
QRectF row_rect(x0 + width*.1, y0 + height*.05, width*0.8, rowHeight);
|
QRectF row_rect(x0, y0, list_rectangles_[0] -> width(), rowHeight);
|
||||||
fillRow(p, row_rect, diagram -> border_and_titleblock.author(), diagram -> border_and_titleblock.title(),
|
fillRow(p, row_rect, diagram_list[i] -> border_and_titleblock.author(),
|
||||||
diagram -> border_and_titleblock.folio(), diagram -> border_and_titleblock.date().toString("dd/MM/yyyy"));
|
diagram_list[i] -> border_and_titleblock.title(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.folio(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.date().toString("dd/MM/yyyy"));
|
||||||
}
|
}
|
||||||
p -> setPen(Qt::NoPen);
|
|
||||||
|
x0 = list_rectangles_[1] -> topLeft().x();
|
||||||
|
y0 = list_rectangles_[1] -> topLeft().y();
|
||||||
|
rowHeight = (list_rectangles_[1] -> height())/30;
|
||||||
|
QRectF row_RectF2(x0, y0, list_rectangles_[1] -> width(), rowHeight);
|
||||||
|
fillRow(p, row_RectF2, authorTranslatable, titleTranslatable, folioTranslatable, dateTranslatable);
|
||||||
|
|
||||||
|
startDiagram += 29;
|
||||||
|
|
||||||
|
for (int i = startDiagram; i < startDiagram+29 && i < diagram_list.size(); ++i) {
|
||||||
|
y0 += rowHeight;
|
||||||
|
QRectF row_rect(x0, y0, list_rectangles_[1] -> width(), rowHeight);
|
||||||
|
fillRow(p, row_rect, diagram_list[i] -> border_and_titleblock.author(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.title(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.folio(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.date().toString("dd/MM/yyyy"));
|
||||||
|
}
|
||||||
|
|
||||||
border_and_titleblock.draw(p, margin, margin);
|
border_and_titleblock.draw(p, margin, margin);
|
||||||
p -> restore();
|
p -> restore();
|
||||||
}
|
}
|
||||||
@@ -68,16 +109,54 @@ void DiagramFolioList::drawBackground(QPainter *p, const QRectF &r)
|
|||||||
void DiagramFolioList::fillRow(QPainter *qp, const QRectF &row_rect, QString author, QString title,
|
void DiagramFolioList::fillRow(QPainter *qp, const QRectF &row_rect, QString author, QString title,
|
||||||
QString folio, QString date)
|
QString folio, QString date)
|
||||||
{
|
{
|
||||||
qp -> drawRect(row_rect);
|
|
||||||
qreal x = row_rect.topLeft().x();
|
qreal x = row_rect.topLeft().x();
|
||||||
qreal y = row_rect.topLeft().y();
|
qreal y = row_rect.topLeft().y();
|
||||||
qreal column_width = row_rect.width() / 4;
|
|
||||||
|
|
||||||
qp -> drawText(QRectF(x, y, column_width, row_rect.height()), Qt::AlignCenter, folio);
|
qp -> drawText(QRectF(x, y, colWidths[0]*row_rect.width(), row_rect.height()), Qt::AlignCenter, folio);
|
||||||
qp -> drawText(QRectF(x + column_width, y, column_width, row_rect.height()), Qt::AlignCenter, title);
|
x += colWidths[0]*row_rect.width();
|
||||||
qp -> drawText(QRectF(x + 2*column_width, y, column_width, row_rect.height()), Qt::AlignCenter, author);
|
|
||||||
qp -> drawText(QRectF(x + 3*column_width, y, column_width, row_rect.height()), Qt::AlignCenter, date);
|
|
||||||
|
|
||||||
for (int i = 1; i <= 3; i++ )
|
qp -> drawText(QRectF(x, y, colWidths[1]*row_rect.width(), row_rect.height()), Qt::AlignCenter, title);
|
||||||
qp -> drawLine(x + i*column_width, y, x + i*column_width, y + row_rect.height());
|
x += colWidths[1]*row_rect.width();
|
||||||
|
|
||||||
|
qp -> drawText(QRectF(x, y, colWidths[2]*row_rect.width(), row_rect.height()), Qt::AlignCenter, author);
|
||||||
|
x += colWidths[2]*row_rect.width();
|
||||||
|
|
||||||
|
qp -> drawText(QRectF(x, y, colWidths[3]*row_rect.width(), row_rect.height()), Qt::AlignCenter, date);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramFolioList::buildGrid(const QRectF &rect, int rows, int tables, qreal colWidths[])
|
||||||
|
{
|
||||||
|
qreal sum = 0;
|
||||||
|
for (int i = 0; i < 4; i++ )
|
||||||
|
sum += colWidths[i];
|
||||||
|
if ( sum < 0.99 || sum > 1.01 ) {
|
||||||
|
qDebug() << "Invalid input: Column widths do not sum to 1";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal tablesSpacing = rect.height() * 0.02;
|
||||||
|
qreal tableWidth = (rect.width() - tablesSpacing*(tables+1) ) / tables;
|
||||||
|
qreal rowHeight = (rect.height() - 2*tablesSpacing) / rows;
|
||||||
|
int cols = 4;//colWidths.size();
|
||||||
|
|
||||||
|
qreal x0 = tablesSpacing + rect.topLeft().x();
|
||||||
|
qreal y0 = tablesSpacing + rect.topLeft().y();
|
||||||
|
|
||||||
|
for (int i = 0; i < tables; ++i) {
|
||||||
|
QRectF *tableRect = new QRectF(x0, y0, tableWidth, rect.height() - 2*tablesSpacing);
|
||||||
|
addRect(*tableRect);
|
||||||
|
list_rectangles_.push_back(tableRect);
|
||||||
|
for (int j = 1; j < rows; ++j) {
|
||||||
|
QLineF *line = new QLineF(x0, y0 + j*rowHeight, x0 + tableWidth,y0 + j*rowHeight);
|
||||||
|
addLine(*line);
|
||||||
|
list_lines_.push_back(line);
|
||||||
|
}
|
||||||
|
for (int j = 0; j < cols-1; ++j) {
|
||||||
|
QLineF *line = new QLineF(x0 + colWidths[j]*tableWidth, y0, x0 + colWidths[j]*tableWidth,y0 + rows*rowHeight);
|
||||||
|
addLine(*line);
|
||||||
|
list_lines_.push_back(line);
|
||||||
|
x0 += colWidths[j]*tableWidth;
|
||||||
|
}
|
||||||
|
x0 += colWidths[cols-1]*tableWidth + tablesSpacing;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,18 +19,32 @@
|
|||||||
#define DIAGRAMFOLIOLIST_H
|
#define DIAGRAMFOLIOLIST_H
|
||||||
|
|
||||||
#include "diagram.h"
|
#include "diagram.h"
|
||||||
|
#include "qetgraphicsitem/independenttextitem.h"
|
||||||
|
|
||||||
class DiagramFolioList : public Diagram
|
class DiagramFolioList : public Diagram
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DiagramFolioList(QObject *parent = 0) : Diagram(parent) {}
|
DiagramFolioList(QObject *parent = 0);
|
||||||
virtual ~DiagramFolioList() {}
|
virtual ~DiagramFolioList();
|
||||||
|
virtual QList<QLineF *> lines() const {return list_lines_;}
|
||||||
|
virtual QList<QRectF *> rectangles() const {return list_rectangles_;}
|
||||||
|
void setId(int i) {id = i;}
|
||||||
|
int getId() const {return id;}
|
||||||
|
|
||||||
|
static int folioList_quantity;
|
||||||
|
static qreal colWidths[4];
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void drawBackground(QPainter *, const QRectF &);
|
void drawBackground(QPainter *, const QRectF &);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void fillRow(QPainter *, const QRectF &, QString, QString, QString, QString);
|
void fillRow(QPainter *, const QRectF &, QString, QString, QString, QString);
|
||||||
|
void buildGrid(const QRectF &, int, int, qreal[]);
|
||||||
|
|
||||||
|
|
||||||
|
QList<QLineF *> list_lines_;
|
||||||
|
QList<QRectF *> list_rectangles_;
|
||||||
|
int id;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#include "qetgraphicsitem/ghostelement.h"
|
#include "qetgraphicsitem/ghostelement.h"
|
||||||
#include "qetgraphicsitem/independenttextitem.h"
|
#include "qetgraphicsitem/independenttextitem.h"
|
||||||
#include "qetgraphicsitem/diagramimageitem.h"
|
#include "qetgraphicsitem/diagramimageitem.h"
|
||||||
|
#include "diagramfoliolist.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -390,18 +391,87 @@ void ExportDialog::generateDxf(Diagram *diagram, int width, int height, bool kee
|
|||||||
QList<Conductor *> list_conductors;
|
QList<Conductor *> list_conductors;
|
||||||
QList<DiagramTextItem *> list_texts;
|
QList<DiagramTextItem *> list_texts;
|
||||||
QList<DiagramImageItem *> list_images;
|
QList<DiagramImageItem *> list_images;
|
||||||
|
QList<QLineF *> list_lines;
|
||||||
|
QList<QRectF *> list_rectangles;
|
||||||
|
|
||||||
// Determine les elements a "XMLiser"
|
DiagramFolioList *ptr;
|
||||||
foreach(QGraphicsItem *qgi, diagram -> items()) {
|
if (ptr = dynamic_cast<DiagramFolioList *>(diagram)) {
|
||||||
if (Element *elmt = qgraphicsitem_cast<Element *>(qgi)) {
|
list_lines = ptr -> lines();
|
||||||
list_elements << elmt;
|
list_rectangles = ptr -> rectangles();
|
||||||
} else if (Conductor *f = qgraphicsitem_cast<Conductor *>(qgi)) {
|
|
||||||
list_conductors << f;
|
// fill the rows with text.
|
||||||
} else if (IndependentTextItem *iti = qgraphicsitem_cast<IndependentTextItem *>(qgi)) {
|
QString authorTranslatable = tr("Auteur");
|
||||||
list_texts << iti;
|
QString titleTranslatable = tr("Titre");
|
||||||
} else if (DiagramImageItem *dii = qgraphicsitem_cast<DiagramImageItem *>(qgi)) {
|
QString folioTranslatable = tr("Folio");
|
||||||
list_images << dii;
|
QString dateTranslatable = tr("Date");
|
||||||
|
|
||||||
|
qreal x0 = list_rectangles[0] -> topLeft().x();
|
||||||
|
qreal y0 = list_rectangles[0] -> topLeft().y();
|
||||||
|
qreal rowHeight = (list_rectangles[0] -> height())/30;
|
||||||
|
QRectF row_RectF(x0, y0, list_rectangles[0] -> width(), rowHeight);
|
||||||
|
|
||||||
|
fillRow(file_path, row_RectF, authorTranslatable, titleTranslatable, folioTranslatable, dateTranslatable);
|
||||||
|
QList<Diagram *> diagram_list = ptr -> project() -> diagrams();
|
||||||
|
|
||||||
|
int startDiagram = (ptr -> getId()) * 58;
|
||||||
|
|
||||||
|
for (int i = startDiagram; i < startDiagram+29 && i < diagram_list.size(); ++i) {
|
||||||
|
y0 += rowHeight;
|
||||||
|
QRectF row_rect(x0, y0, list_rectangles[0] -> width(), rowHeight);
|
||||||
|
fillRow(file_path, row_rect, diagram_list[i] -> border_and_titleblock.author(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.title(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.folio(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.date().toString("dd/MM/yyyy"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
x0 = list_rectangles[1] -> topLeft().x();
|
||||||
|
y0 = list_rectangles[1] -> topLeft().y();
|
||||||
|
rowHeight = (list_rectangles[1] -> height())/30;
|
||||||
|
QRectF row_RectF2(x0, y0, list_rectangles[1] -> width(), rowHeight);
|
||||||
|
fillRow(file_path, row_RectF2, authorTranslatable, titleTranslatable, folioTranslatable, dateTranslatable);
|
||||||
|
|
||||||
|
startDiagram += 29;
|
||||||
|
|
||||||
|
for (int i = startDiagram; i < startDiagram+29 && i < diagram_list.size(); ++i) {
|
||||||
|
y0 += rowHeight;
|
||||||
|
QRectF row_rect(x0, y0, list_rectangles[1] -> width(), rowHeight);
|
||||||
|
fillRow(file_path, row_rect, diagram_list[i] -> border_and_titleblock.author(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.title(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.folio(),
|
||||||
|
diagram_list[i] -> border_and_titleblock.date().toString("dd/MM/yyyy"));
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Determine les elements a "XMLiser"
|
||||||
|
foreach(QGraphicsItem *qgi, diagram -> items()) {
|
||||||
|
if (Element *elmt = qgraphicsitem_cast<Element *>(qgi)) {
|
||||||
|
list_elements << elmt;
|
||||||
|
} else if (Conductor *f = qgraphicsitem_cast<Conductor *>(qgi)) {
|
||||||
|
list_conductors << f;
|
||||||
|
} else if (IndependentTextItem *iti = qgraphicsitem_cast<IndependentTextItem *>(qgi)) {
|
||||||
|
list_texts << iti;
|
||||||
|
} else if (DiagramImageItem *dii = qgraphicsitem_cast<DiagramImageItem *>(qgi)) {
|
||||||
|
list_images << dii;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw lines
|
||||||
|
foreach(QLineF *line, list_lines) {
|
||||||
|
qreal x1 = (line -> p1().x()) * Createdxf::xScale;
|
||||||
|
qreal y1 = Createdxf::sheetHeight - (line -> p1().y()) * Createdxf::yScale;
|
||||||
|
qreal x2 = (line -> p2().x()) * Createdxf::xScale;
|
||||||
|
qreal y2 = Createdxf::sheetHeight - (line -> p2().y()) * Createdxf::yScale;
|
||||||
|
Createdxf::drawLine(file_path, x1, y1, x2, y2, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw rectangles
|
||||||
|
foreach(QRectF *rect, list_rectangles) {
|
||||||
|
qreal x1 = (rect -> bottomLeft().x()) * Createdxf::xScale;
|
||||||
|
qreal y1 = Createdxf::sheetHeight - (rect -> bottomLeft().y()) * Createdxf::yScale;
|
||||||
|
qreal w = rect -> width() * Createdxf::xScale;
|
||||||
|
qreal h = rect -> height() * Createdxf::yScale;
|
||||||
|
Createdxf::drawRectangle(file_path, x1, y1, w, h, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Draw elements
|
//Draw elements
|
||||||
@@ -743,6 +813,33 @@ void ExportDialog::drawDxfArcEllipse(QString file_path, qreal x, qreal y, qreal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ExportDialog::fillRow(QString file_path, const QRectF &row_rect, QString author, QString title,
|
||||||
|
QString folio, QString date)
|
||||||
|
{
|
||||||
|
qreal x = row_rect.bottomLeft().x();
|
||||||
|
qreal y = row_rect.bottomLeft().y();
|
||||||
|
|
||||||
|
x *= Createdxf::xScale;
|
||||||
|
y = Createdxf::sheetHeight - y * Createdxf::yScale;
|
||||||
|
qreal height = row_rect.height() * Createdxf::yScale *0.75;
|
||||||
|
y += height*0.2;
|
||||||
|
|
||||||
|
Createdxf::drawTextAligned(file_path, folio, x, y+height*0.1, height*0.8, 0, 0, 1, 0,
|
||||||
|
x + DiagramFolioList::colWidths[0]*row_rect.width()*Createdxf::xScale/2, 0);
|
||||||
|
x += DiagramFolioList::colWidths[0]*row_rect.width()*Createdxf::xScale;
|
||||||
|
|
||||||
|
Createdxf::drawTextAligned(file_path, title, x, y+height*0.1, height*0.8, 0, 0, 1, 0,
|
||||||
|
x + DiagramFolioList::colWidths[1]*row_rect.width()*Createdxf::xScale/2, 0);
|
||||||
|
x += DiagramFolioList::colWidths[1]*row_rect.width()*Createdxf::xScale;
|
||||||
|
|
||||||
|
Createdxf::drawTextAligned(file_path, author, x, y+height*0.1, height*0.8, 0, 0, 1, 0,
|
||||||
|
x + DiagramFolioList::colWidths[2]*row_rect.width()*Createdxf::xScale/2, 0);
|
||||||
|
x += DiagramFolioList::colWidths[2]*row_rect.width()*Createdxf::xScale;
|
||||||
|
|
||||||
|
Createdxf::drawTextAligned(file_path, date, x, y+height*0.1, height*0.8, 0, 0, 1, 0,
|
||||||
|
x + DiagramFolioList::colWidths[3]*row_rect.width()*Createdxf::xScale/2, 0);
|
||||||
|
}
|
||||||
|
|
||||||
QPointF ExportDialog::rotation_transformed(qreal px, qreal py , qreal origin_x, qreal origin_y, qreal angle) {
|
QPointF ExportDialog::rotation_transformed(qreal px, qreal py , qreal origin_x, qreal origin_y, qreal angle) {
|
||||||
|
|
||||||
angle *= -3.14159265 / 180;
|
angle *= -3.14159265 / 180;
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ class ExportDialog : public QDialog {
|
|||||||
void saveReloadDiagramParameters(Diagram *, bool = true);
|
void saveReloadDiagramParameters(Diagram *, bool = true);
|
||||||
void generateSvg(Diagram *, int, int, bool, QIODevice &);
|
void generateSvg(Diagram *, int, int, bool, QIODevice &);
|
||||||
void generateDxf(Diagram *, int, int, bool, QString &);
|
void generateDxf(Diagram *, int, int, bool, QString &);
|
||||||
|
void fillRow(QString, const QRectF &, QString, QString, QString, QString);
|
||||||
QImage generateImage(Diagram *, int, int, bool);
|
QImage generateImage(Diagram *, int, int, bool);
|
||||||
void exportDiagram(ExportDiagramLine *);
|
void exportDiagram(ExportDiagramLine *);
|
||||||
qreal diagramRatio(Diagram *);
|
qreal diagramRatio(Diagram *);
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "qetmessagebox.h"
|
#include "qetmessagebox.h"
|
||||||
#include "qettabbar.h"
|
#include "qettabbar.h"
|
||||||
#include "qettemplateeditor.h"
|
#include "qettemplateeditor.h"
|
||||||
|
#include "diagramfoliolist.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -303,11 +304,14 @@ void ProjectView::addNewDiagram() {
|
|||||||
Diagram *new_diagram = project_ -> addNewDiagram();
|
Diagram *new_diagram = project_ -> addNewDiagram();
|
||||||
DiagramView *new_diagram_view = new DiagramView(new_diagram);
|
DiagramView *new_diagram_view = new DiagramView(new_diagram);
|
||||||
addDiagram(new_diagram_view);
|
addDiagram(new_diagram_view);
|
||||||
|
|
||||||
|
if (project_ -> diagrams().size() % 58 == 1 && DiagramFolioList::folioList_quantity != 0)
|
||||||
|
addNewDiagramFolioList();
|
||||||
showDiagram(new_diagram_view);
|
showDiagram(new_diagram_view);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectView::addNewDiagramFolioList() {
|
void ProjectView::addNewDiagramFolioList() {
|
||||||
if (project_ -> isReadOnly() || project_ -> isFolioListAdded()) return;
|
if (project_ -> isReadOnly()) return;
|
||||||
|
|
||||||
Diagram *new_diagram = project_ -> addNewDiagramFolioList();
|
Diagram *new_diagram = project_ -> addNewDiagramFolioList();
|
||||||
DiagramView *new_diagram_view = new DiagramView(new_diagram);
|
DiagramView *new_diagram_view = new DiagramView(new_diagram);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#include "qetresult.h"
|
#include "qetresult.h"
|
||||||
#include "genericpanel.h"
|
#include "genericpanel.h"
|
||||||
#include "nomenclature.h"
|
#include "nomenclature.h"
|
||||||
|
#include "diagramfoliolist.h"
|
||||||
|
|
||||||
#include "ui/dialogautonum.h"
|
#include "ui/dialogautonum.h"
|
||||||
|
|
||||||
@@ -1682,8 +1683,11 @@ void QETDiagramEditor::addDiagramToProject() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QETDiagramEditor::addDiagramFolioListToProject() {
|
void QETDiagramEditor::addDiagramFolioListToProject() {
|
||||||
if (ProjectView *current_project = currentProject()) {
|
ProjectView *current_project = currentProject();
|
||||||
current_project -> addNewDiagramFolioList();
|
if (current_project && DiagramFolioList::folioList_quantity == 0) {
|
||||||
|
int diagram_qty = current_project -> diagrams().size();
|
||||||
|
for (int i = 0; i <= diagram_qty/58; i++)
|
||||||
|
current_project -> addNewDiagramFolioList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,8 +46,7 @@ QETProject::QETProject(int diagrams, QObject *parent) :
|
|||||||
project_qet_version_(-1),
|
project_qet_version_(-1),
|
||||||
modified_(false),
|
modified_(false),
|
||||||
read_only_(false),
|
read_only_(false),
|
||||||
titleblocks_(this),
|
titleblocks_(this)
|
||||||
folio_list_added_(false)
|
|
||||||
{
|
{
|
||||||
// 0 a n schema(s) vide(s)
|
// 0 a n schema(s) vide(s)
|
||||||
int diagrams_count = qMax(0, diagrams);
|
int diagrams_count = qMax(0, diagrams);
|
||||||
@@ -847,7 +846,6 @@ Diagram *QETProject::addNewDiagramFolioList() {
|
|||||||
diagram_folio_list -> border_and_titleblock.setTitle(title);
|
diagram_folio_list -> border_and_titleblock.setTitle(title);
|
||||||
|
|
||||||
addDiagram(diagram_folio_list);
|
addDiagram(diagram_folio_list);
|
||||||
folio_list_added_ = true;
|
|
||||||
emit(diagramAdded(this, diagram_folio_list));
|
emit(diagramAdded(this, diagram_folio_list));
|
||||||
return(diagram_folio_list);
|
return(diagram_folio_list);
|
||||||
}
|
}
|
||||||
@@ -861,14 +859,31 @@ void QETProject::removeDiagram(Diagram *diagram) {
|
|||||||
if (isReadOnly()) return;
|
if (isReadOnly()) return;
|
||||||
|
|
||||||
if (!diagram || !diagrams_.contains(diagram)) return;
|
if (!diagram || !diagrams_.contains(diagram)) return;
|
||||||
|
|
||||||
if (diagrams_.removeAll(diagram)) {
|
|
||||||
|
|
||||||
DiagramFolioList *ptr = dynamic_cast<DiagramFolioList *>(diagram);
|
DiagramFolioList *ptr = dynamic_cast<DiagramFolioList *>(diagram);
|
||||||
if (ptr)
|
if (ptr) {
|
||||||
folio_list_added_ = false;
|
foreach (Diagram *diag, diagrams_) {
|
||||||
|
ptr = dynamic_cast<DiagramFolioList *>(diag);
|
||||||
|
if (ptr) {
|
||||||
|
diagrams_.removeAll(ptr);
|
||||||
|
emit(diagramRemoved(this, ptr));
|
||||||
|
delete ptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (diagrams_.removeAll(diagram)) {
|
||||||
emit(diagramRemoved(this, diagram));
|
emit(diagramRemoved(this, diagram));
|
||||||
delete diagram;
|
delete diagram;
|
||||||
|
if (diagrams_.size() % 58 == 0) {
|
||||||
|
foreach (Diagram *diag, diagrams_) {
|
||||||
|
ptr = dynamic_cast<DiagramFolioList *>(diag);
|
||||||
|
if (ptr && ptr -> getId() == DiagramFolioList::folioList_quantity-1) {
|
||||||
|
diagrams_.removeAll(ptr);
|
||||||
|
emit(diagramRemoved(this, ptr));
|
||||||
|
delete ptr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDiagramsFolioData();
|
updateDiagramsFolioData();
|
||||||
|
|||||||
@@ -121,7 +121,6 @@ class QETProject : public QObject {
|
|||||||
DiagramContext projectProperties();
|
DiagramContext projectProperties();
|
||||||
void setProjectProperties(const DiagramContext &);
|
void setProjectProperties(const DiagramContext &);
|
||||||
QUndoStack* undoStack() {return undo_stack_;}
|
QUndoStack* undoStack() {return undo_stack_;}
|
||||||
bool isFolioListAdded() {return folio_list_added_;}
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void componentWritten();
|
void componentWritten();
|
||||||
@@ -186,8 +185,6 @@ class QETProject : public QObject {
|
|||||||
bool modified_;
|
bool modified_;
|
||||||
/// Whether the project is read only
|
/// Whether the project is read only
|
||||||
bool read_only_;
|
bool read_only_;
|
||||||
/// Whether folio_list has been added.
|
|
||||||
bool folio_list_added_;
|
|
||||||
/// Filepath for which this project is considered read only
|
/// Filepath for which this project is considered read only
|
||||||
QString read_only_file_path_;
|
QString read_only_file_path_;
|
||||||
/// Name of the category used when automatically integrating elements within the embedded collection
|
/// Name of the category used when automatically integrating elements within the embedded collection
|
||||||
|
|||||||
Reference in New Issue
Block a user