mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Revamp the structur of project database
This commit is contained in:
@@ -40,12 +40,12 @@ BorderTitleBlock::BorderTitleBlock(QObject *parent) :
|
|||||||
QObject(parent)
|
QObject(parent)
|
||||||
{
|
{
|
||||||
// at first, the internal titleblock template renderer uses the default titleblock template
|
// at first, the internal titleblock template renderer uses the default titleblock template
|
||||||
titleblock_template_renderer_ = new TitleBlockTemplateRenderer(this);
|
m_titleblock_template_renderer = new TitleBlockTemplateRenderer(this);
|
||||||
titleblock_template_renderer_ -> setTitleBlockTemplate(QETApp::defaultTitleBlockTemplate());
|
m_titleblock_template_renderer -> setTitleBlockTemplate(QETApp::defaultTitleBlockTemplate());
|
||||||
|
|
||||||
// disable the QPicture-based cache from Qt 4.8 to avoid rendering errors and crashes
|
// disable the QPicture-based cache from Qt 4.8 to avoid rendering errors and crashes
|
||||||
if (!QRegExp("4\\.[0-7]\\.").exactMatch(qVersion())) {
|
if (!QRegExp("4\\.[0-7]\\.").exactMatch(qVersion())) {
|
||||||
titleblock_template_renderer_ -> setUseCache(false);
|
m_titleblock_template_renderer -> setUseCache(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// dimensions par defaut du schema
|
// dimensions par defaut du schema
|
||||||
@@ -73,9 +73,13 @@ BorderTitleBlock::~BorderTitleBlock() {
|
|||||||
QRectF BorderTitleBlock::titleBlockRect() const
|
QRectF BorderTitleBlock::titleBlockRect() const
|
||||||
{
|
{
|
||||||
if (m_edge == Qt::BottomEdge)
|
if (m_edge == Qt::BottomEdge)
|
||||||
return QRectF(diagram_rect_.bottomLeft(), QSize(diagram_rect_.width(), titleblock_template_renderer_ -> height()));
|
return QRectF(diagram_rect_.bottomLeft(), QSize(diagram_rect_.width(), m_titleblock_template_renderer -> height()));
|
||||||
else
|
else
|
||||||
return QRectF(diagram_rect_.topRight(), QSize(titleblock_template_renderer_ -> height(), diagram_rect_.height()));
|
return QRectF(diagram_rect_.topRight(), QSize(m_titleblock_template_renderer -> height(), diagram_rect_.height()));
|
||||||
|
}
|
||||||
|
|
||||||
|
DiagramContext BorderTitleBlock::titleblockInformation() const {
|
||||||
|
return m_titleblock_template_renderer->context();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,7 +97,7 @@ QRectF BorderTitleBlock::titleBlockRectForQPainter() const
|
|||||||
if (m_edge == Qt::BottomEdge) //Rect at bottom have same position and dimension of displayed rect
|
if (m_edge == Qt::BottomEdge) //Rect at bottom have same position and dimension of displayed rect
|
||||||
return titleBlockRect();
|
return titleBlockRect();
|
||||||
else
|
else
|
||||||
return QRectF (diagram_rect_.bottomRight(), QSize(diagram_rect_.height(), titleblock_template_renderer_ -> height()));
|
return QRectF (diagram_rect_.bottomRight(), QSize(diagram_rect_.height(), m_titleblock_template_renderer -> height()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -317,7 +321,7 @@ void BorderTitleBlock::importBorder(const BorderProperties &bp) {
|
|||||||
@see TitleBlockTemplateRenderer::titleBlockTemplate()
|
@see TitleBlockTemplateRenderer::titleBlockTemplate()
|
||||||
*/
|
*/
|
||||||
const TitleBlockTemplate *BorderTitleBlock::titleBlockTemplate() {
|
const TitleBlockTemplate *BorderTitleBlock::titleBlockTemplate() {
|
||||||
return(titleblock_template_renderer_ -> titleBlockTemplate());
|
return(m_titleblock_template_renderer -> titleBlockTemplate());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -325,14 +329,14 @@ const TitleBlockTemplate *BorderTitleBlock::titleBlockTemplate() {
|
|||||||
@see TitleBlockTemplateRenderer::setTitleBlockTemplate()
|
@see TitleBlockTemplateRenderer::setTitleBlockTemplate()
|
||||||
*/
|
*/
|
||||||
void BorderTitleBlock::setTitleBlockTemplate(const TitleBlockTemplate *titleblock_template) {
|
void BorderTitleBlock::setTitleBlockTemplate(const TitleBlockTemplate *titleblock_template) {
|
||||||
titleblock_template_renderer_ -> setTitleBlockTemplate(titleblock_template);
|
m_titleblock_template_renderer -> setTitleBlockTemplate(titleblock_template);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return The name of the template used to render the titleblock.
|
@return The name of the template used to render the titleblock.
|
||||||
*/
|
*/
|
||||||
QString BorderTitleBlock::titleBlockTemplateName() const {
|
QString BorderTitleBlock::titleBlockTemplateName() const {
|
||||||
QString tbt_name = titleblock_template_renderer_ -> titleBlockTemplate() -> name();
|
QString tbt_name = m_titleblock_template_renderer -> titleBlockTemplate() -> name();
|
||||||
return((tbt_name == "default") ? "" : tbt_name);
|
return((tbt_name == "default") ? "" : tbt_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,7 +348,7 @@ QString BorderTitleBlock::titleBlockTemplateName() const {
|
|||||||
*/
|
*/
|
||||||
void BorderTitleBlock::titleBlockTemplateChanged(const QString &template_name) {
|
void BorderTitleBlock::titleBlockTemplateChanged(const QString &template_name) {
|
||||||
if (titleBlockTemplateName() != template_name) return;
|
if (titleBlockTemplateName() != template_name) return;
|
||||||
titleblock_template_renderer_ -> invalidateRenderedTemplate();
|
m_titleblock_template_renderer -> invalidateRenderedTemplate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -496,14 +500,14 @@ void BorderTitleBlock::draw(QPainter *painter)
|
|||||||
if (m_edge == Qt::BottomEdge)
|
if (m_edge == Qt::BottomEdge)
|
||||||
{
|
{
|
||||||
painter -> translate(tbt_rect.topLeft());
|
painter -> translate(tbt_rect.topLeft());
|
||||||
titleblock_template_renderer_ -> render(painter, tbt_rect.width());
|
m_titleblock_template_renderer -> render(painter, tbt_rect.width());
|
||||||
painter -> translate(-tbt_rect.topLeft());
|
painter -> translate(-tbt_rect.topLeft());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
painter->translate(tbt_rect.topLeft());
|
painter->translate(tbt_rect.topLeft());
|
||||||
painter->rotate(-90);
|
painter->rotate(-90);
|
||||||
titleblock_template_renderer_ -> render(painter, tbt_rect.width());
|
m_titleblock_template_renderer -> render(painter, tbt_rect.width());
|
||||||
painter->rotate(90);
|
painter->rotate(90);
|
||||||
painter -> translate(-tbt_rect.topLeft());
|
painter -> translate(-tbt_rect.topLeft());
|
||||||
}
|
}
|
||||||
@@ -581,7 +585,7 @@ void BorderTitleBlock::drawDxf(int width, int height, bool keep_aspect_ratio, QS
|
|||||||
if (display_titleblock_) {
|
if (display_titleblock_) {
|
||||||
//qp -> translate(titleblock_rect_.topLeft());
|
//qp -> translate(titleblock_rect_.topLeft());
|
||||||
QRectF rect = titleBlockRect();
|
QRectF rect = titleBlockRect();
|
||||||
titleblock_template_renderer_ -> renderDxf(rect, rect.width(), file_path, color);
|
m_titleblock_template_renderer -> renderDxf(rect, rect.width(), file_path, color);
|
||||||
//qp -> translate(-titleblock_rect_.topLeft());
|
//qp -> translate(-titleblock_rect_.topLeft());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -765,7 +769,7 @@ void BorderTitleBlock::updateDiagramContextForTitleBlock(const DiagramContext &i
|
|||||||
context.addValue("previous-folio-num", m_previous_folio_num);
|
context.addValue("previous-folio-num", m_previous_folio_num);
|
||||||
context.addValue("next-folio-num", m_next_folio_num);
|
context.addValue("next-folio-num", m_next_folio_num);
|
||||||
|
|
||||||
titleblock_template_renderer_ -> setContext(context);
|
m_titleblock_template_renderer -> setContext(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString BorderTitleBlock::incrementLetters(const QString &string) {
|
QString BorderTitleBlock::incrementLetters(const QString &string) {
|
||||||
@@ -866,9 +870,9 @@ void BorderTitleBlock::setAutoPageNum(const QString &auto_page_num) {
|
|||||||
void BorderTitleBlock::setPreviousFolioNum(const QString &previous)
|
void BorderTitleBlock::setPreviousFolioNum(const QString &previous)
|
||||||
{
|
{
|
||||||
m_previous_folio_num = previous;
|
m_previous_folio_num = previous;
|
||||||
DiagramContext context = titleblock_template_renderer_->context();
|
DiagramContext context = m_titleblock_template_renderer->context();
|
||||||
context.addValue("previous-folio-num", m_previous_folio_num);
|
context.addValue("previous-folio-num", m_previous_folio_num);
|
||||||
titleblock_template_renderer_->setContext(context);
|
m_titleblock_template_renderer->setContext(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -878,7 +882,7 @@ void BorderTitleBlock::setPreviousFolioNum(const QString &previous)
|
|||||||
void BorderTitleBlock::setNextFolioNum(const QString &next)
|
void BorderTitleBlock::setNextFolioNum(const QString &next)
|
||||||
{
|
{
|
||||||
m_next_folio_num = next;
|
m_next_folio_num = next;
|
||||||
DiagramContext context = titleblock_template_renderer_->context();
|
DiagramContext context = m_titleblock_template_renderer->context();
|
||||||
context.addValue("next-folio-num", m_next_folio_num);
|
context.addValue("next-folio-num", m_next_folio_num);
|
||||||
titleblock_template_renderer_->setContext(context);
|
m_titleblock_template_renderer->setContext(context);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ class BorderTitleBlock : public QObject
|
|||||||
qreal diagramHeight() const { return(rowsTotalHeight() + columnsHeaderHeight()); }
|
qreal diagramHeight() const { return(rowsTotalHeight() + columnsHeaderHeight()); }
|
||||||
|
|
||||||
QRectF titleBlockRect () const;
|
QRectF titleBlockRect () const;
|
||||||
|
|
||||||
|
DiagramContext titleblockInformation() const;
|
||||||
private:
|
private:
|
||||||
QRectF titleBlockRectForQPainter () const;
|
QRectF titleBlockRectForQPainter () const;
|
||||||
|
|
||||||
@@ -255,6 +257,6 @@ class BorderTitleBlock : public QObject
|
|||||||
bool display_columns_;
|
bool display_columns_;
|
||||||
bool display_rows_;
|
bool display_rows_;
|
||||||
bool display_border_;
|
bool display_border_;
|
||||||
TitleBlockTemplateRenderer *titleblock_template_renderer_;
|
TitleBlockTemplateRenderer *m_titleblock_template_renderer;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -127,7 +127,10 @@ QStringList projectDataBase::headersFromElementsInfoQuery(const QString &query)
|
|||||||
*/
|
*/
|
||||||
void projectDataBase::updateDB()
|
void projectDataBase::updateDB()
|
||||||
{
|
{
|
||||||
populateElementsTable();
|
populateDiagramTable();
|
||||||
|
populateDiagramInfoTable();
|
||||||
|
populateElementTable();
|
||||||
|
populateElementInfoTable();
|
||||||
emit dataBaseUpdated();
|
emit dataBaseUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,62 +161,152 @@ bool projectDataBase::createDataBase(const QString &connection_name, const QStri
|
|||||||
{
|
{
|
||||||
m_data_base = QSqlDatabase::addDatabase("QSQLITE", connect_name);
|
m_data_base = QSqlDatabase::addDatabase("QSQLITE", connect_name);
|
||||||
m_data_base.setDatabaseName(name);
|
m_data_base.setDatabaseName(name);
|
||||||
if(!m_data_base.open())
|
if(!m_data_base.open()) {
|
||||||
{
|
|
||||||
m_data_base.close();
|
m_data_base.close();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Create the elements table
|
m_data_base.exec("PRAGMA temp_store = MEMORY");
|
||||||
QString elements_table("CREATE TABLE element_info(");
|
m_data_base.exec("PRAGMA journal_mode = MEMORY");
|
||||||
bool first = true;
|
m_data_base.exec("PRAGMA synchronous = OFF");
|
||||||
for (auto string : elementsInfoKeys())
|
|
||||||
|
QSqlQuery query_(m_data_base);
|
||||||
|
bool first_ = true;
|
||||||
|
|
||||||
|
//Create diagram table
|
||||||
|
QString diagram_table("CREATE TABLE diagram ("
|
||||||
|
"uuid VARCHAR(50) PRIMARY KEY NOT NULL,"
|
||||||
|
"pos INTEGER)");
|
||||||
|
if (!query_.exec(diagram_table)) {
|
||||||
|
qDebug() << "diagram_table query : "<< query_.lastError();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create the table element
|
||||||
|
QString element_table("CREATE TABLE element"
|
||||||
|
"( "
|
||||||
|
"uuid VARCHAR(50) PRIMARY KEY NOT NULL, "
|
||||||
|
"diagram_uuid VARCHAR(50) NOT NULL,"
|
||||||
|
"pos VARCHAR(6) NOT NULL,"
|
||||||
|
"type VARCHAR(50),"
|
||||||
|
"sub_type VARCHAR(50),"
|
||||||
|
"FOREIGN KEY (diagram_uuid) REFERENCES diagram (uuid)"
|
||||||
|
")");
|
||||||
|
if (!query_.exec(element_table)) {
|
||||||
|
qDebug() <<" element_table query : "<< query_.lastError();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create the diagram info table
|
||||||
|
QString diagram_info_table("CREATE TABLE diagram_info (diagram_uuid VARCHAR(50) PRIMARY KEY NOT NULL, ");
|
||||||
|
first_ = true;
|
||||||
|
for (auto string : QETApp::diagramInfoKeys())
|
||||||
{
|
{
|
||||||
if (first) {
|
if (first_) {
|
||||||
first = false;
|
first_ = false;
|
||||||
} else {
|
} else {
|
||||||
elements_table += ",";
|
diagram_info_table += ", ";
|
||||||
|
}
|
||||||
|
diagram_info_table += string += string=="date" ? " DATE" : " VARCHAR(100)";
|
||||||
|
}
|
||||||
|
diagram_info_table += ", FOREIGN KEY (diagram_uuid) REFERENCES diagram (uuid))";
|
||||||
|
if (!query_.exec(diagram_info_table)) {
|
||||||
|
qDebug() << "diagram_info_table query : " << query_.lastError();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create the element info table
|
||||||
|
QString element_info_table("CREATE TABLE element_info(element_uuid VARCHAR(50) PRIMARY KEY NOT NULL,");
|
||||||
|
first_=true;
|
||||||
|
for (auto string : QETApp::elementInfoKeys())
|
||||||
|
{
|
||||||
|
if (first_) {
|
||||||
|
first_ = false;
|
||||||
|
} else {
|
||||||
|
element_info_table += ",";
|
||||||
}
|
}
|
||||||
|
|
||||||
elements_table += string += " VARCHAR(512)";
|
element_info_table += string += " VARCHAR(100)";
|
||||||
}
|
}
|
||||||
elements_table += ");";
|
element_info_table += ", FOREIGN KEY (element_uuid) REFERENCES element (uuid));";
|
||||||
|
|
||||||
QSqlQuery query_(elements_table, m_data_base);
|
if (!query_.exec(element_info_table)) {
|
||||||
query_.exec();
|
qDebug() << " element_info_table query : " << query_.lastError();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDB();
|
updateDB();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void projectDataBase::populateDiagramTable()
|
||||||
|
{
|
||||||
|
QSqlQuery query_(m_data_base);
|
||||||
|
query_.exec("DELETE FROM diagram");
|
||||||
|
|
||||||
|
QString insert_("INSERT INTO diagram (uuid, pos) VALUES (:uuid, :pos)");
|
||||||
|
query_.prepare(insert_);
|
||||||
|
for (auto diagram : m_project->diagrams())
|
||||||
|
{
|
||||||
|
query_.bindValue(":uuid", diagram->uuid().toString());
|
||||||
|
query_.bindValue(":pos", m_project->folioIndex(diagram));
|
||||||
|
if(!query_.exec()) {
|
||||||
|
qDebug() << "projectDataBase::populateDiagramTable insert error : " << query_.lastError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief projectDataBase::populateElementTable
|
||||||
|
* Populate the element table
|
||||||
|
*/
|
||||||
|
void projectDataBase::populateElementTable()
|
||||||
|
{
|
||||||
|
QSqlQuery query_(m_data_base);
|
||||||
|
query_.exec("DELETE FROM element");
|
||||||
|
|
||||||
|
QString insert_("INSERT INTO element (uuid, diagram_uuid, pos, type, sub_type) VALUES (:uuid, :diagram_uuid, :pos, :type, :sub_type)");
|
||||||
|
query_.prepare(insert_);
|
||||||
|
|
||||||
|
for (auto diagram : m_project->diagrams())
|
||||||
|
{
|
||||||
|
ElementProvider ep(diagram);
|
||||||
|
QList<Element *> elements_list = ep.find(Element::Simple | Element::Terminale | Element::Master);
|
||||||
|
//Insert all value into the database
|
||||||
|
for (auto elmt : elements_list)
|
||||||
|
{
|
||||||
|
query_.bindValue(":uuid", elmt->uuid().toString());
|
||||||
|
query_.bindValue(":diagram_uuid", diagram->uuid().toString());
|
||||||
|
query_.bindValue(":pos", diagram->convertPosition(elmt->scenePos()).toString());
|
||||||
|
query_.bindValue(":type", elmt->linkTypeToString());
|
||||||
|
query_.bindValue(":sub_type", elmt->kindInformations()["type"].toString());
|
||||||
|
if (!query_.exec()) {
|
||||||
|
qDebug() << "projectDataBase::populateElementTable insert error : " << query_.lastError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief projectDataBase::populateElementsTable
|
* @brief projectDataBase::populateElementsTable
|
||||||
* Populate the elements table
|
* Populate the elements table
|
||||||
*/
|
*/
|
||||||
void projectDataBase::populateElementsTable()
|
void projectDataBase::populateElementInfoTable()
|
||||||
{
|
{
|
||||||
//Very ugly, in futur we should update the table instead of delete all
|
QSqlQuery query(m_data_base);
|
||||||
QSqlQuery clear_table(m_data_base);
|
query.exec("DELETE FROM element_info");
|
||||||
if (!clear_table.exec("DELETE FROM element_info")) {
|
|
||||||
qDebug() << "last error " << clear_table.lastError();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Prepare the query used for insert new record
|
//Prepare the query used for insert new record
|
||||||
QStringList bind_values;
|
QStringList bind_values;
|
||||||
for (auto key : elementsInfoKeys()) {
|
for (auto key : QETApp::elementInfoKeys()) {
|
||||||
bind_values << key.prepend(":");
|
bind_values << key.prepend(":");
|
||||||
}
|
}
|
||||||
QString insert("INSERT INTO element_info (" +
|
QString insert("INSERT INTO element_info (element_uuid," +
|
||||||
elementsInfoKeys().join(", ") +
|
QETApp::elementInfoKeys().join(", ") +
|
||||||
") VALUES (" +
|
") VALUES (:uuid," +
|
||||||
bind_values.join(", ") +
|
bind_values.join(", ") +
|
||||||
")");
|
")");
|
||||||
|
|
||||||
QSqlQuery query(m_data_base);
|
|
||||||
query.prepare(insert);
|
query.prepare(insert);
|
||||||
|
|
||||||
|
|
||||||
for (auto *diagram : m_project->diagrams())
|
for (auto *diagram : m_project->diagrams())
|
||||||
{
|
{
|
||||||
ElementProvider ep(diagram);
|
ElementProvider ep(diagram);
|
||||||
@@ -222,6 +315,7 @@ void projectDataBase::populateElementsTable()
|
|||||||
//Insert all value into the database
|
//Insert all value into the database
|
||||||
for (auto elmt : elements_list)
|
for (auto elmt : elements_list)
|
||||||
{
|
{
|
||||||
|
query.bindValue(":uuid", elmt->uuid().toString());
|
||||||
auto hash = elementInfoToString(elmt);
|
auto hash = elementInfoToString(elmt);
|
||||||
for (auto key : hash.keys())
|
for (auto key : hash.keys())
|
||||||
{
|
{
|
||||||
@@ -230,17 +324,53 @@ void projectDataBase::populateElementsTable()
|
|||||||
query.bindValue(bind, value);
|
query.bindValue(bind, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
query.bindValue(":element_type", elmt->linkTypeToString());
|
|
||||||
query.bindValue(":element_subtype", elmt->kindInformations()["type"].toString());
|
|
||||||
query.bindValue(":pos", elmt->diagram()->convertPosition(elmt->scenePos()).toString());
|
|
||||||
|
|
||||||
if (!query.exec()) {
|
if (!query.exec()) {
|
||||||
qDebug() << "projectDataBase::populateElementsTable insert error : " << query.lastError();
|
qDebug() << "projectDataBase::populateElementInfoTable insert error : " << query.lastError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void projectDataBase::populateDiagramInfoTable()
|
||||||
|
{
|
||||||
|
QSqlQuery query(m_data_base);
|
||||||
|
query.exec("DELETE FROM diagram_info");
|
||||||
|
|
||||||
|
//Prepare the query used for insert new record
|
||||||
|
QStringList bind_values;
|
||||||
|
for (auto key : QETApp::diagramInfoKeys()) {
|
||||||
|
bind_values << key.prepend(":");
|
||||||
|
}
|
||||||
|
QString insert("INSERT INTO diagram_info (diagram_uuid, " +
|
||||||
|
QETApp::diagramInfoKeys().join(", ") +
|
||||||
|
") VALUES (:uuid, " +
|
||||||
|
bind_values.join(", ") +
|
||||||
|
")");
|
||||||
|
|
||||||
|
query.prepare(insert);
|
||||||
|
|
||||||
|
for (auto *diagram : m_project->diagrams())
|
||||||
|
{
|
||||||
|
query.bindValue(":uuid", diagram->uuid());
|
||||||
|
|
||||||
|
auto infos = diagram->border_and_titleblock.titleblockInformation();
|
||||||
|
for (auto key : QETApp::diagramInfoKeys())
|
||||||
|
{
|
||||||
|
if (key == "date") {
|
||||||
|
query.bindValue(":date", QDate::fromString(infos.value("date").toString(), Qt::SystemLocaleShortDate));
|
||||||
|
} else {
|
||||||
|
auto value = infos.value(key);
|
||||||
|
auto bind = key.prepend(":");
|
||||||
|
query.bindValue(bind, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!query.exec()) {
|
||||||
|
qDebug() << "projectDataBase::populateDiagramInfoTable insert error : " << query.lastError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief projectDataBase::elementInfoToString
|
* @brief projectDataBase::elementInfoToString
|
||||||
* @param elmt
|
* @param elmt
|
||||||
@@ -262,18 +392,6 @@ QHash<QString, QString> projectDataBase::elementInfoToString(Element *elmt)
|
|||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief projectDataBase::elementsInfoKeys
|
|
||||||
* @return QETApp::elementInfoKeys() + "element_type" and "element_subtype"
|
|
||||||
*/
|
|
||||||
QStringList projectDataBase::elementsInfoKeys()
|
|
||||||
{
|
|
||||||
auto keys_ = QETApp::elementInfoKeys();
|
|
||||||
keys_<< "element_type" << "subtype" << "pos";
|
|
||||||
|
|
||||||
return keys_;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief projectDataBase::exportDb
|
* @brief projectDataBase::exportDb
|
||||||
* @param parent
|
* @param parent
|
||||||
@@ -308,5 +426,7 @@ void projectDataBase::exportDb(projectDataBase *db, QWidget *parent, const QStri
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Database is filled at creation, work is done.
|
//Database is filled at creation, work is done.
|
||||||
projectDataBase file_db(db->project(), "export_project_db_" + db->project()->uuid().toString(), path_);
|
QString connection_name("export_project_db_" + db->project()->uuid().toString());
|
||||||
|
projectDataBase file_db(db->project(), connection_name, path_);
|
||||||
|
QSqlDatabase::removeDatabase(connection_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ class projectDataBase : public QObject
|
|||||||
void updateDB();
|
void updateDB();
|
||||||
QETProject *project() const;
|
QETProject *project() const;
|
||||||
|
|
||||||
static QStringList elementsInfoKeys();
|
|
||||||
static QStringList headersFromElementsInfoQuery(const QString &query);
|
static QStringList headersFromElementsInfoQuery(const QString &query);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -57,7 +56,10 @@ class projectDataBase : public QObject
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool createDataBase(const QString &connection_name= QString(), const QString &name = QString());
|
bool createDataBase(const QString &connection_name= QString(), const QString &name = QString());
|
||||||
void populateElementsTable();
|
void populateDiagramTable();
|
||||||
|
void populateElementTable();
|
||||||
|
void populateElementInfoTable();
|
||||||
|
void populateDiagramInfoTable();
|
||||||
static QHash<QString, QString> elementInfoToString(Element *elmt);
|
static QHash<QString, QString> elementInfoToString(Element *elmt);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -444,6 +444,14 @@ void Diagram::keyReleaseEvent(QKeyEvent *e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Diagram::uuid
|
||||||
|
* @return the uuid of this diagram
|
||||||
|
*/
|
||||||
|
QUuid Diagram::uuid() {
|
||||||
|
return m_uuid;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Diagram::setEventInterface
|
* @brief Diagram::setEventInterface
|
||||||
* Set event_interface has current interface.
|
* Set event_interface has current interface.
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
#include <QtWidgets>
|
#include <QtWidgets>
|
||||||
#include <QtXml>
|
#include <QtXml>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
#include <QUuid>
|
||||||
|
|
||||||
#include "bordertitleblock.h"
|
#include "bordertitleblock.h"
|
||||||
#include "conductorproperties.h"
|
#include "conductorproperties.h"
|
||||||
#include "exportproperties.h"
|
#include "exportproperties.h"
|
||||||
@@ -119,6 +121,7 @@ class Diagram : public QGraphicsScene
|
|||||||
|
|
||||||
bool m_freeze_new_elements;
|
bool m_freeze_new_elements;
|
||||||
bool m_freeze_new_conductors_;
|
bool m_freeze_new_conductors_;
|
||||||
|
QUuid m_uuid = QUuid::createUuid();
|
||||||
|
|
||||||
// METHODS
|
// METHODS
|
||||||
protected:
|
protected:
|
||||||
@@ -133,6 +136,7 @@ class Diagram : public QGraphicsScene
|
|||||||
void keyReleaseEvent (QKeyEvent *) override;
|
void keyReleaseEvent (QKeyEvent *) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
QUuid uuid();
|
||||||
void setEventInterface (DiagramEventInterface *event_interface);
|
void setEventInterface (DiagramEventInterface *event_interface);
|
||||||
void clearEventInterface();
|
void clearEventInterface();
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,14 @@ void DiagramContext::add(DiagramContext other)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief DiagramContext::remove
|
||||||
|
* @param key
|
||||||
|
*/
|
||||||
|
void DiagramContext::remove(const QString &key) {
|
||||||
|
m_content.remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return a list containing all the keys in the context object.
|
@return a list containing all the keys in the context object.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ class DiagramContext
|
|||||||
};
|
};
|
||||||
|
|
||||||
void add(DiagramContext other);
|
void add(DiagramContext other);
|
||||||
|
void remove(const QString &key);
|
||||||
QList<QString> keys(KeyOrder = None) const;
|
QList<QString> keys(KeyOrder = None) const;
|
||||||
bool contains(const QString &) const;
|
bool contains(const QString &) const;
|
||||||
const QVariant operator[](const QString &) const;
|
const QVariant operator[](const QString &) const;
|
||||||
|
|||||||
@@ -408,7 +408,7 @@ QString QETApp::conductorTranslatedInfoKey(const QString &key)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief QETApp::diagramInfoKeys
|
* @brief QETApp::diagramInfoKeys
|
||||||
* @return the diagram default information keys
|
* @return the diagram default default information keys
|
||||||
*/
|
*/
|
||||||
QStringList QETApp::diagramInfoKeys()
|
QStringList QETApp::diagramInfoKeys()
|
||||||
{
|
{
|
||||||
@@ -420,6 +420,8 @@ QStringList QETApp::diagramInfoKeys()
|
|||||||
list.append("plant");
|
list.append("plant");
|
||||||
list.append("locmach");
|
list.append("locmach");
|
||||||
list.append("indexrev");
|
list.append("indexrev");
|
||||||
|
list.append("date");
|
||||||
|
list.append("display_folio");
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@@ -439,6 +441,7 @@ QString QETApp::diagramTranslatedInfoKey(const QString &key)
|
|||||||
else if (key == "plant") return tr("Installation");
|
else if (key == "plant") return tr("Installation");
|
||||||
else if (key == "locmach") return tr("Localisation");
|
else if (key == "locmach") return tr("Localisation");
|
||||||
else if (key == "indexrev") return tr("Indice Rev");
|
else if (key == "indexrev") return tr("Indice Rev");
|
||||||
|
else if (key == "date") return tr("Date");
|
||||||
else return QString();
|
else return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -412,7 +412,11 @@ void QETDiagramEditor::setUpActions()
|
|||||||
|
|
||||||
/*******ONLY FOR TEST DURING DEVEL*********/
|
/*******ONLY FOR TEST DURING DEVEL*********/
|
||||||
auto model = new NomenclatureModel(this->currentProject(), this->currentProject());
|
auto model = new NomenclatureModel(this->currentProject(), this->currentProject());
|
||||||
model->query("SELECT plant, location, label, pos, comment, description FROM element_info ORDER BY plant, location, label, comment, description");
|
QString query("SELECT ei.plant AS plant, ei.location AS location, di.title AS title, ei.label AS label, ei.comment AS comment, e.pos AS pos"
|
||||||
|
" FROM element_info ei, element e, diagram_info di"
|
||||||
|
" WHERE ei.element_uuid = e.uuid AND e.diagram_uuid = di.diagram_uuid"
|
||||||
|
" ORDER BY plant, location, title, label, pos");
|
||||||
|
model->query(query);
|
||||||
model->setData(model->index(0,0), Qt::AlignLeft, Qt::TextAlignmentRole);
|
model->setData(model->index(0,0), Qt::AlignLeft, Qt::TextAlignmentRole);
|
||||||
model->setData(model->index(0,0), QETApp::diagramTextsFont(), Qt::FontRole);
|
model->setData(model->index(0,0), QETApp::diagramTextsFont(), Qt::FontRole);
|
||||||
model->setHeaderData(0, Qt::Horizontal, Qt::AlignHCenter, Qt::TextAlignmentRole);
|
model->setHeaderData(0, Qt::Horizontal, Qt::AlignHCenter, Qt::TextAlignmentRole);
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <QtXml>
|
#include <QtXml>
|
||||||
#include "diagramcontext.h"
|
#include "diagramcontext.h"
|
||||||
#include "qet.h"
|
#include "qet.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This class provides a container for the properties of a particular title
|
This class provides a container for the properties of a particular title
|
||||||
block, i.e. title, author, date, filename, folio, template, custom
|
block, i.e. title, author, date, filename, folio, template, custom
|
||||||
@@ -60,7 +61,6 @@ class TitleBlockProperties {
|
|||||||
QString version; ///< Version (displayed by the default template)
|
QString version; ///< Version (displayed by the default template)
|
||||||
QString folio; ///< Folio information (displayed by the default template)
|
QString folio; ///< Folio information (displayed by the default template)
|
||||||
QString auto_page_num;
|
QString auto_page_num;
|
||||||
QString location;
|
|
||||||
DateManagement useDate; ///< Wheter to use the date attribute
|
DateManagement useDate; ///< Wheter to use the date attribute
|
||||||
QString template_name; ///< Name of the template used to render the title block - an empty string means "the default template provided by the application"
|
QString template_name; ///< Name of the template used to render the title block - an empty string means "the default template provided by the application"
|
||||||
DiagramContext context; ///< Container for the additional, user-defined fields
|
DiagramContext context; ///< Container for the additional, user-defined fields
|
||||||
|
|||||||
Reference in New Issue
Block a user