Compare commits

..

2 Commits
0.8.1 ... 081

Author SHA1 Message Date
Laurent Trinques
264392cd0e Update SingleApplication to upstream master 2021-03-02 14:06:19 +01:00
Laurent Trinques
f53e429771 Upgrade pugixml XML parser to 1.11 release
https://pugixml.org/docs/manual.html#v1.11
2021-03-02 14:05:29 +01:00
33 changed files with 1777 additions and 2075 deletions

View File

@@ -19,7 +19,7 @@ include(cmake/hoto_update_cmake_message.cmake)
cmake_minimum_required(VERSION 3.14...3.19 FATAL_ERROR) cmake_minimum_required(VERSION 3.14...3.19 FATAL_ERROR)
project(qelectrotech project(qelectrotech
VERSION 0.9.0 VERSION 0.8.0
DESCRIPTION "QET is a CAD/CAE editor focusing on schematics drawing features." DESCRIPTION "QET is a CAD/CAE editor focusing on schematics drawing features."
HOMEPAGE_URL "https://qelectrotech.org/" HOMEPAGE_URL "https://qelectrotech.org/"
LANGUAGES CXX) LANGUAGES CXX)
@@ -131,28 +131,3 @@ target_include_directories(
${QET_DIR}/sources/factory/ui ${QET_DIR}/sources/factory/ui
${QET_DIR}/sources/print ${QET_DIR}/sources/print
) )
install(TARGETS ${PROJECT_NAME})
install(DIRECTORY ico/breeze-icons/16x16 DESTINATION ${QET_ICONS_PATH})
install(DIRECTORY ico/breeze-icons/22x22 DESTINATION ${QET_ICONS_PATH})
install(DIRECTORY ico/breeze-icons/32x32 DESTINATION ${QET_ICONS_PATH})
install(DIRECTORY ico/breeze-icons/48x48 DESTINATION ${QET_ICONS_PATH})
install(DIRECTORY ico/breeze-icons/64x64 DESTINATION ${QET_ICONS_PATH})
install(DIRECTORY ico/breeze-icons/128x128 DESTINATION ${QET_ICONS_PATH})
install(DIRECTORY ico/breeze-icons/256x256 DESTINATION ${QET_ICONS_PATH})
install(DIRECTORY elements DESTINATION share/qelectrotech)
install(DIRECTORY examples DESTINATION share/qelectrotech)
install(DIRECTORY titleblocks DESTINATION share/qelectrotech)
install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share/doc/qelectrotech)
install(FILES misc/qelectrotech.desktop DESTINATION share/applications)
install(FILES misc/x-qet-element.xml
misc/x-qet-project.xml
misc/x-qet-titleblock.xml
DESTINATION share/mime/application)
install(FILES misc/x-qet-element.desktop
misc/x-qet-project.desktop
misc/x-qet-titleblock.desktop
DESTINATION share/mimelnk/application)
install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages)
install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH})
install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH})

View File

@@ -19,9 +19,9 @@ message(" - fetch_kdeaddons")
if(DEFINED BUILD_WITH_KF5) if(DEFINED BUILD_WITH_KF5)
Include(FetchContent) Include(FetchContent)
option(BUILD_KF5 "Build KF5 libraries, use system ones otherwise" YES) set(BUILD_KF5_YES "YES")
if(BUILD_KF5) if(DEFINED BUILD_KF5_YES)
if(NOT DEFINED KF5_GIT_TAG) if(NOT DEFINED KF5_GIT_TAG)
#https://qelectrotech.org/forum/viewtopic.php?pid=13924#p13924 #https://qelectrotech.org/forum/viewtopic.php?pid=13924#p13924

View File

@@ -18,16 +18,9 @@ message(" - fetch_pugixml")
Include(FetchContent) Include(FetchContent)
option(BUILD_PUGIXML "Build pugixml library, use system one otherwise" YES) FetchContent_Declare(
if(BUILD_PUGIXML)
FetchContent_Declare(
pugixml pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git GIT_REPOSITORY https://github.com/zeux/pugixml.git
GIT_TAG v1.11.4) GIT_TAG v1.11.1)
FetchContent_MakeAvailable(pugixml) FetchContent_MakeAvailable(pugixml)
else()
find_package(pugixml REQUIRED)
endif()

View File

@@ -26,6 +26,6 @@ Include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
SingleApplication SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.2.0) GIT_TAG v3.1.5)
FetchContent_MakeAvailable(SingleApplication) FetchContent_MakeAvailable(SingleApplication)

View File

@@ -28,6 +28,9 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# This strips terminating newline in the variable # This strips terminating newline in the variable
string(REGEX REPLACE "\n$" "" GIT_COMMIT_SHA "${GIT_COMMIT_SHA}") string(REGEX REPLACE "\n$" "" GIT_COMMIT_SHA "${GIT_COMMIT_SHA}")
# This adds to definitions => .cpp
add_definitions(-DGIT_COMMIT_SHA="${GIT_COMMIT_SHA}")
if(NOT GIT_COMMIT_RESULT EQUAL "0") if(NOT GIT_COMMIT_RESULT EQUAL "0")
message( message(
FATAL_ERROR FATAL_ERROR
@@ -36,6 +39,3 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
", please check") ", please check")
endif() endif()
endif() endif()
# This adds to definitions => .cpp
add_definitions(-DGIT_COMMIT_SHA="${GIT_COMMIT_SHA}")

View File

@@ -52,8 +52,6 @@ set(QET_RES_FILES
${QET_DIR}/sources/editor/ui/lineeditor.ui ${QET_DIR}/sources/editor/ui/lineeditor.ui
${QET_DIR}/sources/editor/ui/polygoneditor.ui ${QET_DIR}/sources/editor/ui/polygoneditor.ui
${QET_DIR}/sources/editor/ui/rectangleeditor.ui ${QET_DIR}/sources/editor/ui/rectangleeditor.ui
${QET_DIR}/sources/editor/ui/qetelementeditor.ui
${QET_DIR}/sources/editor/ui/terminaleditor.ui
${QET_DIR}/sources/ElementsCollection/ui/renamedialog.ui ${QET_DIR}/sources/ElementsCollection/ui/renamedialog.ui
${QET_DIR}/sources/factory/ui/addtabledialog.ui ${QET_DIR}/sources/factory/ui/addtabledialog.ui
${QET_DIR}/sources/NameList/ui/namelistdialog.ui ${QET_DIR}/sources/NameList/ui/namelistdialog.ui
@@ -262,8 +260,12 @@ set(QET_SRC_FILES
${QET_DIR}/sources/editor/elementscene.h ${QET_DIR}/sources/editor/elementscene.h
${QET_DIR}/sources/editor/elementview.cpp ${QET_DIR}/sources/editor/elementview.cpp
${QET_DIR}/sources/editor/elementview.h ${QET_DIR}/sources/editor/elementview.h
${QET_DIR}/sources/editor/qetelementeditor.cpp
${QET_DIR}/sources/editor/qetelementeditor.h
${QET_DIR}/sources/editor/styleeditor.cpp ${QET_DIR}/sources/editor/styleeditor.cpp
${QET_DIR}/sources/editor/styleeditor.h ${QET_DIR}/sources/editor/styleeditor.h
${QET_DIR}/sources/editor/terminaleditor.cpp
${QET_DIR}/sources/editor/terminaleditor.h
${QET_DIR}/sources/editor/esevent/eseventaddarc.cpp ${QET_DIR}/sources/editor/esevent/eseventaddarc.cpp
${QET_DIR}/sources/editor/esevent/eseventaddarc.h ${QET_DIR}/sources/editor/esevent/eseventaddarc.h
@@ -318,12 +320,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/editor/ui/polygoneditor.h ${QET_DIR}/sources/editor/ui/polygoneditor.h
${QET_DIR}/sources/editor/ui/rectangleeditor.cpp ${QET_DIR}/sources/editor/ui/rectangleeditor.cpp
${QET_DIR}/sources/editor/ui/rectangleeditor.h ${QET_DIR}/sources/editor/ui/rectangleeditor.h
${QET_DIR}/sources/editor/ui/terminaleditor.cpp
${QET_DIR}/sources/editor/ui/terminaleditor.h
${QET_DIR}/sources/editor/ui/texteditor.cpp ${QET_DIR}/sources/editor/ui/texteditor.cpp
${QET_DIR}/sources/editor/ui/texteditor.h ${QET_DIR}/sources/editor/ui/texteditor.h
${QET_DIR}/sources/editor/ui/qetelementeditor.h
${QET_DIR}/sources/editor/ui/qetelementeditor.cpp
${QET_DIR}/sources/editor/UndoCommand/pastepartscommand.cpp ${QET_DIR}/sources/editor/UndoCommand/pastepartscommand.cpp
${QET_DIR}/sources/editor/UndoCommand/pastepartscommand.h ${QET_DIR}/sources/editor/UndoCommand/pastepartscommand.h
@@ -373,8 +371,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/print/projectprintwindow.cpp ${QET_DIR}/sources/print/projectprintwindow.cpp
${QET_DIR}/sources/print/projectprintwindow.h ${QET_DIR}/sources/print/projectprintwindow.h
${QET_DIR}/sources/properties/elementdata.cpp
${QET_DIR}/sources/properties/elementdata.h
${QET_DIR}/sources/properties/propertiesinterface.cpp ${QET_DIR}/sources/properties/propertiesinterface.cpp
${QET_DIR}/sources/properties/propertiesinterface.h ${QET_DIR}/sources/properties/propertiesinterface.h
${QET_DIR}/sources/properties/reportproperties.cpp ${QET_DIR}/sources/properties/reportproperties.cpp
@@ -383,8 +379,6 @@ set(QET_SRC_FILES
${QET_DIR}/sources/properties/terminaldata.h ${QET_DIR}/sources/properties/terminaldata.h
${QET_DIR}/sources/properties/xrefproperties.cpp ${QET_DIR}/sources/properties/xrefproperties.cpp
${QET_DIR}/sources/properties/xrefproperties.h ${QET_DIR}/sources/properties/xrefproperties.h
${QET_DIR}/sources/properties/userproperties.cpp
${QET_DIR}/sources/properties/userproperties.h
${QET_DIR}/sources/PropertiesEditor/propertieseditordialog.h ${QET_DIR}/sources/PropertiesEditor/propertieseditordialog.h
${QET_DIR}/sources/PropertiesEditor/propertieseditordockwidget.cpp ${QET_DIR}/sources/PropertiesEditor/propertieseditordockwidget.cpp

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -331,7 +331,6 @@ void BorderTitleBlock::importTitleBlock(const TitleBlockProperties &ip) {
// through setFolioData(), // through setFolioData(),
// which in turn calls updateDiagramContextForTitleBlock(). // which in turn calls updateDiagramContextForTitleBlock().
emit(needTitleBlockTemplate(ip.template_name)); emit(needTitleBlockTemplate(ip.template_name));
emit informationChanged();
} }
/** /**

View File

@@ -246,12 +246,6 @@ class BorderTitleBlock : public QObject
*/ */
void needTitleBlockTemplate(const QString &); void needTitleBlockTemplate(const QString &);
/**
* @brief infoChanged
* Signal emitted when the informations changed.
*/
void informationChanged();
// attributes // attributes
private: private:
// titleblock basic data // titleblock basic data

View File

@@ -27,6 +27,7 @@
@param parent QWidget parent @param parent QWidget parent
*/ */
ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) { ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) {
Machine_info *mymachineinfo= new Machine_info(this);
//ScrollArea for low screens //ScrollArea for low screens
QScrollArea *scroll = new QScrollArea(this); QScrollArea *scroll = new QScrollArea(this);
scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
@@ -35,7 +36,7 @@ ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) {
// liste des pages // liste des pages
pages_list = new QListWidget(); pages_list = new QListWidget();
pages_list -> setViewMode(QListView::IconMode); pages_list -> setViewMode(QListView::IconMode);
if(MachineInfo::instance()->i_max_screen_height()<1000){ if(mymachineinfo->i_max_screen_height()<1000){
pages_list -> setIconSize(QSize(64, 64)); pages_list -> setIconSize(QSize(64, 64));
} else { } else {
pages_list -> setIconSize(QSize(128, 128)); pages_list -> setIconSize(QSize(128, 128));
@@ -79,8 +80,8 @@ ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) {
connect(pages_list, SIGNAL(currentRowChanged(int)), connect(pages_list, SIGNAL(currentRowChanged(int)),
pages_widget, SLOT(setCurrentIndex(int))); pages_widget, SLOT(setCurrentIndex(int)));
setMaximumSize(MachineInfo::instance()->i_max_screen_width(), setMaximumSize(mymachineinfo->i_max_screen_width(),
MachineInfo::instance()->i_max_screen_height()); mymachineinfo->i_max_screen_height());
resize(1400,1000); resize(1400,1000);
#ifdef Q_OS_MACOS #ifdef Q_OS_MACOS

View File

@@ -157,33 +157,31 @@ void ElementQueryWidget::setQuery(const QString &query)
//Element type filter //Element type filter
if (where.contains("element_sub_type") || where.contains("element_type")) if (where.contains("element_sub_type") || where.contains("element_type"))
{ {
QRegularExpression rx("^(\\( .+?\\))");
auto rxm = rx.match(where);
if (rxm.hasMatch())
{
auto str_type = rxm.captured(1);
where.remove(str_type);
int c=0; int c=0;
ui->m_simple_cb->setChecked (str_type.contains("Simple") ? true : false); ui->m_simple_cb->setChecked (where.contains("Simple") ? true : false);
if (ui->m_simple_cb->isChecked()) { if (ui->m_simple_cb->isChecked()) {
++c; ++c;
where.remove("element_type = 'Simple' ");
} }
ui->m_terminal_cb->setChecked (str_type.contains("Terminale") ? true : false); ui->m_terminal_cb->setChecked (where.contains("Terminale") ? true : false);
if (ui->m_terminal_cb->isChecked()) { if (ui->m_terminal_cb->isChecked()) {
++c; ++c;
where.remove("element_type = 'Terminale'");
} }
ui->m_coil_cb->setChecked (str_type.contains("coil") ? true : false); ui->m_coil_cb->setChecked (where.contains("coil") ? true : false);
if (ui->m_coil_cb->isChecked()) { if (ui->m_coil_cb->isChecked()) {
++c; ++c;
where.remove("element_sub_type = 'coil' ");
} }
ui->m_button_cb->setChecked (str_type.contains("commutator") ? true : false); ui->m_button_cb->setChecked (where.contains("commutator") ? true : false);
if (ui->m_button_cb->isChecked()) { if (ui->m_button_cb->isChecked()) {
++c; ++c;
where.remove("element_sub_type = 'commutator' ");
} }
ui->m_protection_cb->setChecked(str_type.contains("protection") ? true : false); ui->m_protection_cb->setChecked(where.contains("protection") ? true : false);
if (ui->m_protection_cb) { if (ui->m_protection_cb) {
++c; ++c;
where.remove("element_sub_type = 'protection'");
} }
if (c == 5) { if (c == 5) {
@@ -191,7 +189,8 @@ void ElementQueryWidget::setQuery(const QString &query)
} else if (c > 0) { } else if (c > 0) {
ui->m_all_cb->setCheckState(Qt::PartiallyChecked); ui->m_all_cb->setCheckState(Qt::PartiallyChecked);
} }
}
where.remove("OR");
} }
else // There is not "element_sub_type" or "element_type" that mean every element are selected else // There is not "element_sub_type" or "element_type" that mean every element are selected
{ {
@@ -207,16 +206,20 @@ void ElementQueryWidget::setQuery(const QString &query)
strl.append(item->data(Qt::UserRole).toString()); strl.append(item->data(Qt::UserRole).toString());
} }
QString join_str = strl.join("|"); QString beginning_rx;
beginning_rx.append(QString("^(").append(strl.join("|")));
beginning_rx.append(")");
QRegularExpression rx_is_not_null(beginning_rx + " IS NOT NULL$");
QRegularExpression rx_is_null (beginning_rx + " IS NULL$");
QRegularExpression rx_like (beginning_rx + QString(" LIKE'%(.+)%'$"));
QRegularExpression rx_not_like (beginning_rx + QString(" NOT LIKE'%(.+)%'$"));
QRegularExpression rx_equal (beginning_rx + QString("='(.+)'$"));
QRegularExpression rx_not_equal (beginning_rx + QString("!='(.+)'$"));
QRegularExpression rx_is_not_null(QStringLiteral("^(%1) != ''$").arg(join_str));
QRegularExpression rx_is_null (QStringLiteral("^\\((%1) IS NULL OR (%1) = ''\\)").arg(join_str));
QRegularExpression rx_like (QStringLiteral("^(%1) LIKE'%(.+)%'$").arg(join_str));
QRegularExpression rx_not_like (QStringLiteral("^(%1) NOT LIKE'%(.+)%'$").arg(join_str));
QRegularExpression rx_equal (QStringLiteral("^(%1)='(.+)'$").arg(join_str));
QRegularExpression rx_not_equal (QStringLiteral("^(%1)!='(.+)'$").arg(join_str));
QStringList split_where; QStringList split_where;
//Remove the white space at begin and end of each string //Remove the white space at begin and end of each string
for (auto str : where.split("AND ")) for (auto str : where.split("AND "))
{ {
@@ -307,22 +310,22 @@ QString ElementQueryWidget::queryStr() const
case 0: //No filter case 0: //No filter
break; break;
case 1: //Not empty case 1: //Not empty
filter_ += QStringLiteral(" AND ") += key += " != ''"; filter_ += QString(" AND ") += key += " IS NOT NULL";
break; break;
case 2: //empty case 2: //empty
filter_ += QStringLiteral(" AND (%1 IS NULL OR %1 = '')").arg(key); filter_ += QString(" AND ") += key += " IS NULL";
break; break;
case 3: // contain case 3: // contain
filter_ += QStringLiteral(" AND ") += key += QStringLiteral(" LIKE'%") += f.second += "%'"; filter_ += QString(" AND ") += key += QString(" LIKE'%") += f.second += "%'";
break; break;
case 4: // not contain case 4: // not contain
filter_ += QStringLiteral(" AND ") += key += QStringLiteral(" NOT LIKE'%") += f.second += "%'"; filter_ += QString(" AND ") += key += QString(" NOT LIKE'%") += f.second += "%'";
break; break;
case 5: // is equal case 5: // is equal
filter_ += QStringLiteral(" AND ") += key += QStringLiteral("='") += f.second += "'"; filter_ += QString(" AND ") += key += QString("='") += f.second += "'";
break; break;
case 6: // is not equal case 6: // is not equal
filter_ += QStringLiteral(" AND ") += key += QStringLiteral("!='") += f.second += "'"; filter_ += QString(" AND ") += key += QString("!='") += f.second += "'";
break; break;
} }
} }

View File

@@ -92,9 +92,6 @@ Diagram::Diagram(QETProject *project) :
pen.setColor(Qt::black); pen.setColor(Qt::black);
conductor_setter_ -> setPen(pen); conductor_setter_ -> setPen(pen);
connect(&border_and_titleblock,
&BorderTitleBlock::informationChanged,
this, &Diagram::diagramInformationChanged);
connect(&border_and_titleblock, connect(&border_and_titleblock,
&BorderTitleBlock::needTitleBlockTemplate, &BorderTitleBlock::needTitleBlockTemplate,
this, &Diagram::setTitleBlockTemplate); this, &Diagram::setTitleBlockTemplate);
@@ -137,20 +134,15 @@ Diagram::~Diagram()
delete m_event_interface; delete m_event_interface;
// list removable items // list removable items
QVector<QGraphicsItem *> deletable_items; QList<QGraphicsItem *> deletable_items;
for(const auto &qgi : items()) for(QGraphicsItem *qgi : items())
{ {
if (qgi->parentItem()) if (qgi -> parentItem()) continue;
continue; if (qgraphicsitem_cast<Conductor *>(qgi)) continue;
if (qgraphicsitem_cast<Conductor *>(qgi)) deletable_items << qgi;
continue;
deletable_items.append(qgi);
}
for (const auto &item : qAsConst(deletable_items))
{
removeItem(item);
delete item;
} }
qDeleteAll (deletable_items);
} }
/** /**
@@ -197,12 +189,12 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
// If user allow zoom out beyond of folio, // If user allow zoom out beyond of folio,
// we draw grid outside of border. // we draw grid outside of border.
QSettings settings; QSettings settings;
int xGrid = settings.value(QStringLiteral("diagrameditor/Xgrid"), int xGrid = settings.value("diagrameditor/Xgrid",
Diagram::xGrid).toInt(); Diagram::xGrid).toInt();
int yGrid = settings.value(QStringLiteral("diagrameditor/Ygrid"), int yGrid = settings.value("diagrameditor/Ygrid",
Diagram::yGrid).toInt(); Diagram::yGrid).toInt();
QRectF rect = settings.value( QRectF rect = settings.value(
QStringLiteral("diagrameditor/zoom-out-beyond-of-folio"), "diagrameditor/zoom-out-beyond-of-folio",
false).toBool() ? r false).toBool() ? r
: border_and_titleblock : border_and_titleblock
.insideBorderRect() .insideBorderRect()
@@ -332,6 +324,15 @@ void Diagram::wheelEvent(QGraphicsSceneWheelEvent *event)
*/ */
void Diagram::keyPressEvent(QKeyEvent *event) void Diagram::keyPressEvent(QKeyEvent *event)
{ {
QSettings settings;
int xKeyGrid = settings.value("diagrameditor/key_Xgrid",
Diagram::xKeyGrid).toInt();
int yKeyGrid = settings.value("diagrameditor/key_Ygrid",
Diagram::yKeyGrid).toInt();
int xKeyGridFine = settings.value("diagrameditor/key_fine_Xgrid",
Diagram::xKeyGridFine).toInt();
int yKeyGridFine = settings.value("diagrameditor/key_fine_Ygrid",
Diagram::yKeyGridFine).toInt();
event->setAccepted(false); event->setAccepted(false);
if (m_event_interface) { if (m_event_interface) {
@@ -360,11 +361,6 @@ void Diagram::keyPressEvent(QKeyEvent *event)
//Move item with the keyboard arrow //Move item with the keyboard arrow
if(event->modifiers() == Qt::NoModifier) if(event->modifiers() == Qt::NoModifier)
{ {
QSettings settings;
int xKeyGrid = settings.value(QStringLiteral("diagrameditor/key_Xgrid"),
Diagram::xKeyGrid).toInt();
int yKeyGrid = settings.value(QStringLiteral("diagrameditor/key_Ygrid"),
Diagram::yKeyGrid).toInt();
switch(event->key()) switch(event->key())
{ {
case Qt::Key_Left: case Qt::Key_Left:
@@ -403,11 +399,6 @@ void Diagram::keyPressEvent(QKeyEvent *event)
} }
else if(event->modifiers() == Qt::AltModifier) else if(event->modifiers() == Qt::AltModifier)
{ {
QSettings settings;
int xKeyGridFine = settings.value(QStringLiteral("diagrameditor/key_fine_Xgrid"),
Diagram::xKeyGridFine).toInt();
int yKeyGridFine = settings.value(QStringLiteral("diagrameditor/key_fine_Ygrid"),
Diagram::yKeyGridFine).toInt();
switch(event->key()) switch(event->key())
{ {
case Qt::Key_Left: case Qt::Key_Left:
@@ -741,7 +732,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
// XML tree root // XML tree root
// racine de l'arbre XML // racine de l'arbre XML
auto dom_root = document.createElement(QStringLiteral("diagram")); auto dom_root = document.createElement("diagram");
// schema properties // schema properties
// proprietes du schema // proprietes du schema
@@ -751,24 +742,24 @@ QDomDocument Diagram::toXml(bool whole_content) {
// Default conductor properties // Default conductor properties
QDomElement default_conductor = QDomElement default_conductor =
document.createElement(QStringLiteral("defaultconductor")); document.createElement("defaultconductor");
defaultConductorProperties.toXml(default_conductor); defaultConductorProperties.toXml(default_conductor);
dom_root.appendChild(default_conductor); dom_root.appendChild(default_conductor);
// Conductor autonum // Conductor autonum
if (!m_conductors_autonum_name.isEmpty()) { if (!m_conductors_autonum_name.isEmpty()) {
dom_root.setAttribute(QStringLiteral("conductorAutonum"), dom_root.setAttribute("conductorAutonum",
m_conductors_autonum_name); m_conductors_autonum_name);
} }
//Default New Element //Default New Element
dom_root.setAttribute(QStringLiteral("freezeNewElement"), dom_root.setAttribute("freezeNewElement",
m_freeze_new_elements ? QStringLiteral("true") : QStringLiteral("false")); m_freeze_new_elements ? "true" : "false");
//Default New Conductor //Default New Conductor
dom_root.setAttribute(QStringLiteral("freezeNewConductor"), dom_root.setAttribute("freezeNewConductor",
m_freeze_new_conductors_ m_freeze_new_conductors_
? QStringLiteral("true") : QStringLiteral("false")); ? "true" : "false");
//Element Folio Sequential Variables //Element Folio Sequential Variables
if (!m_elmt_unitfolio_max.isEmpty() if (!m_elmt_unitfolio_max.isEmpty()
@@ -776,37 +767,37 @@ QDomDocument Diagram::toXml(bool whole_content) {
|| !m_elmt_hundredfolio_max.isEmpty()) { || !m_elmt_hundredfolio_max.isEmpty()) {
QDomElement elmtfoliosequential = QDomElement elmtfoliosequential =
document.createElement( document.createElement(
QStringLiteral("elementautonumfoliosequentials")); "elementautonumfoliosequentials");
if (!m_elmt_unitfolio_max.isEmpty()) { if (!m_elmt_unitfolio_max.isEmpty()) {
QDomElement elmtfolioseq = QDomElement elmtfolioseq =
document.createElement( document.createElement(
QStringLiteral("elementunitfolioseq")); "elementunitfolioseq");
folioSequentialsToXml(&m_elmt_unitfolio_max, folioSequentialsToXml(&m_elmt_unitfolio_max,
&elmtfolioseq, &elmtfolioseq,
QStringLiteral("sequf_"), "sequf_",
QStringLiteral("unitfolioseq"), "unitfolioseq",
&document); &document);
elmtfoliosequential.appendChild(elmtfolioseq); elmtfoliosequential.appendChild(elmtfolioseq);
} }
if (!m_elmt_tenfolio_max.isEmpty()) { if (!m_elmt_tenfolio_max.isEmpty()) {
QDomElement elmtfolioseq = QDomElement elmtfolioseq =
document.createElement( document.createElement(
QStringLiteral("elementtenfolioseq")); "elementtenfolioseq");
folioSequentialsToXml(&m_elmt_tenfolio_max, folioSequentialsToXml(&m_elmt_tenfolio_max,
&elmtfolioseq, &elmtfolioseq,
QStringLiteral("seqtf_"), "seqtf_",
QStringLiteral("tenfolioseq"), "tenfolioseq",
&document); &document);
elmtfoliosequential.appendChild(elmtfolioseq); elmtfoliosequential.appendChild(elmtfolioseq);
} }
if (!m_elmt_hundredfolio_max.isEmpty()) { if (!m_elmt_hundredfolio_max.isEmpty()) {
QDomElement elmtfolioseq = QDomElement elmtfolioseq =
document.createElement( document.createElement(
QStringLiteral("elementhundredfolioseq")); "elementhundredfolioseq");
folioSequentialsToXml(&m_elmt_hundredfolio_max, folioSequentialsToXml(&m_elmt_hundredfolio_max,
&elmtfolioseq, &elmtfolioseq,
QStringLiteral("seqhf_"), "seqhf_",
QStringLiteral("hundredfolioseq"), "hundredfolioseq",
&document); &document);
elmtfoliosequential.appendChild(elmtfolioseq); elmtfoliosequential.appendChild(elmtfolioseq);
} }
@@ -818,38 +809,38 @@ QDomDocument Diagram::toXml(bool whole_content) {
!m_cnd_hundredfolio_max.isEmpty()) { !m_cnd_hundredfolio_max.isEmpty()) {
QDomElement cndfoliosequential = QDomElement cndfoliosequential =
document.createElement( document.createElement(
QStringLiteral("conductorautonumfoliosequentials")); "conductorautonumfoliosequentials");
QHash<QString, QStringList>::iterator i; QHash<QString, QStringList>::iterator i;
if (!m_cnd_unitfolio_max.isEmpty()) { if (!m_cnd_unitfolio_max.isEmpty()) {
QDomElement cndfolioseq = QDomElement cndfolioseq =
document.createElement( document.createElement(
QStringLiteral("conductorunitfolioseq")); "conductorunitfolioseq");
folioSequentialsToXml(&m_cnd_unitfolio_max, folioSequentialsToXml(&m_cnd_unitfolio_max,
&cndfolioseq, &cndfolioseq,
QStringLiteral("sequf_"), "sequf_",
QStringLiteral("unitfolioseq"), "unitfolioseq",
&document); &document);
cndfoliosequential.appendChild(cndfolioseq); cndfoliosequential.appendChild(cndfolioseq);
} }
if (!m_cnd_tenfolio_max.isEmpty()) { if (!m_cnd_tenfolio_max.isEmpty()) {
QDomElement cndfolioseq = QDomElement cndfolioseq =
document.createElement( document.createElement(
QStringLiteral("conductortenfolioseq")); "conductortenfolioseq");
folioSequentialsToXml(&m_cnd_tenfolio_max, folioSequentialsToXml(&m_cnd_tenfolio_max,
&cndfolioseq, &cndfolioseq,
QStringLiteral("seqtf_"), "seqtf_",
QStringLiteral("tenfolioseq"), "tenfolioseq",
&document); &document);
cndfoliosequential.appendChild(cndfolioseq); cndfoliosequential.appendChild(cndfolioseq);
} }
if (!m_cnd_hundredfolio_max.isEmpty()) { if (!m_cnd_hundredfolio_max.isEmpty()) {
QDomElement cndfolioseq = QDomElement cndfolioseq =
document.createElement( document.createElement(
QStringLiteral("conductorhundredfolioseq")); "conductorhundredfolioseq");
folioSequentialsToXml(&m_cnd_hundredfolio_max, folioSequentialsToXml(&m_cnd_hundredfolio_max,
&cndfolioseq, &cndfolioseq,
QStringLiteral("seqhf_"), "seqhf_",
QStringLiteral("hundredfolioseq"), "hundredfolioseq",
&document); &document);
cndfoliosequential.appendChild(cndfolioseq); cndfoliosequential.appendChild(cndfolioseq);
} }
@@ -860,7 +851,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
//this method with whole_content to false, //this method with whole_content to false,
//is often use to copy and paste the current selection //is often use to copy and paste the current selection
//so we add the id of the project where copy occur. //so we add the id of the project where copy occur.
dom_root.setAttribute(QStringLiteral("projectId"), QETApp::projectId(m_project)); dom_root.setAttribute("projectId", QETApp::projectId(m_project));
} }
document.appendChild(dom_root); document.appendChild(dom_root);
@@ -930,7 +921,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
QHash<Terminal *, int> table_adr_id; QHash<Terminal *, int> table_adr_id;
if (!list_elements.isEmpty()) { if (!list_elements.isEmpty()) {
auto dom_elements = document.createElement(QStringLiteral("elements")); auto dom_elements = document.createElement("elements");
for (auto elmt : list_elements) { for (auto elmt : list_elements) {
dom_elements.appendChild(elmt->toXml(document, dom_elements.appendChild(elmt->toXml(document,
table_adr_id)); table_adr_id));
@@ -939,7 +930,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
} }
if (!list_conductors.isEmpty()) { if (!list_conductors.isEmpty()) {
auto dom_conductors = document.createElement(QStringLiteral("conductors")); auto dom_conductors = document.createElement("conductors");
for (auto cond : list_conductors) { for (auto cond : list_conductors) {
dom_conductors.appendChild(cond->toXml(document, dom_conductors.appendChild(cond->toXml(document,
table_adr_id)); table_adr_id));
@@ -948,7 +939,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
} }
if (!list_texts.isEmpty()) { if (!list_texts.isEmpty()) {
auto dom_texts = document.createElement(QStringLiteral("inputs")); auto dom_texts = document.createElement("inputs");
for (auto dti : list_texts) { for (auto dti : list_texts) {
dom_texts.appendChild(dti->toXml(document)); dom_texts.appendChild(dti->toXml(document));
} }
@@ -956,7 +947,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
} }
if (!list_images.isEmpty()) { if (!list_images.isEmpty()) {
auto dom_images = document.createElement(QStringLiteral("images")); auto dom_images = document.createElement("images");
for (auto dii : list_images) { for (auto dii : list_images) {
dom_images.appendChild(dii->toXml(document)); dom_images.appendChild(dii->toXml(document));
} }
@@ -964,7 +955,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
} }
if (!list_shapes.isEmpty()) { if (!list_shapes.isEmpty()) {
auto dom_shapes = document.createElement(QStringLiteral("shapes")); auto dom_shapes = document.createElement("shapes");
for (auto dii : list_shapes) { for (auto dii : list_shapes) {
dom_shapes.appendChild(dii -> toXml(document)); dom_shapes.appendChild(dii -> toXml(document));
} }
@@ -972,7 +963,7 @@ QDomDocument Diagram::toXml(bool whole_content) {
} }
if (table_vector.size()) { if (table_vector.size()) {
auto tables = document.createElement(QStringLiteral("tables")); auto tables = document.createElement("tables");
for (auto table : table_vector) { for (auto table : table_vector) {
tables.appendChild(table->toXml(document)); tables.appendChild(table->toXml(document));
} }
@@ -996,15 +987,11 @@ void Diagram::folioSequentialsToXml(QHash<QString,
QDomElement *domElement, QDomElement *domElement,
const QString& seq_type, const QString& seq_type,
const QString& type, const QString& type,
QDomDocument *doc) QDomDocument *doc) {
{
QHash<QString, QStringList>::iterator i; QHash<QString, QStringList>::iterator i;
for (i = hash->begin(); i != hash->end(); i++) {
for (i = hash->begin(); i != hash->end(); i++)
{
QDomElement folioseq = doc->createElement(type); QDomElement folioseq = doc->createElement(type);
folioseq.setAttribute(QStringLiteral("title"), i.key()); folioseq.setAttribute("title", i.key());
for (int j = 0; j < i.value().size(); j++) { for (int j = 0; j < i.value().size(); j++) {
folioseq.setAttribute(seq_type + QString::number(j+1), folioseq.setAttribute(seq_type + QString::number(j+1),
i.value().at(j)); i.value().at(j));
@@ -1110,14 +1097,13 @@ bool Diagram::initFromXml(QDomElement &document,
*/ */
Terminal* findTerminal(int conductor_index, Terminal* findTerminal(int conductor_index,
QDomElement& f, QDomElement& f,
QHash<int,Terminal *>& table_adr_id, QHash<int,
QList<Element *>& added_elements) Terminal *>& table_adr_id,
{ QList<Element *>& added_elements) {
assert(conductor_index == 1 || conductor_index == 2); assert(conductor_index == 1 || conductor_index == 2);
auto str_index = QString::number(conductor_index); QString element_index = "element" + QString::number(conductor_index);
QString element_index = QStringLiteral("element") + str_index; QString terminal_index = "terminal" + QString::number(conductor_index);
QString terminal_index = QStringLiteral("terminal") + str_index;
if (f.hasAttribute(element_index)) { if (f.hasAttribute(element_index)) {
QUuid element_uuid = QUuid(f.attribute(element_index)); QUuid element_uuid = QUuid(f.attribute(element_index));
@@ -1199,13 +1185,10 @@ Terminal* findTerminal(int conductor_index,
bool Diagram::fromXml(QDomElement &document, bool Diagram::fromXml(QDomElement &document,
QPointF position, QPointF position,
bool consider_informations, bool consider_informations,
DiagramContent *content_ptr) DiagramContent *content_ptr) {
{
const QDomElement& root = document; const QDomElement& root = document;
// The first element must be a diagram // The first element must be a diagram
if (root.tagName() != QLatin1String("diagram")) { if (root.tagName() != "diagram") return(false);
return(false);
}
// Read attributes of this diagram // Read attributes of this diagram
if (consider_informations) if (consider_informations)
@@ -1217,54 +1200,53 @@ bool Diagram::fromXml(QDomElement &document,
// Find the element "defaultconductor". // Find the element "defaultconductor".
// If found, load default conductor properties. // If found, load default conductor properties.
QDomElement default_conductor_elmt = QDomElement default_conductor_elmt =
root.firstChildElement(QStringLiteral("defaultconductor")); root.firstChildElement("defaultconductor");
if (!default_conductor_elmt.isNull()) { if (!default_conductor_elmt.isNull()) {
defaultConductorProperties.fromXml(default_conductor_elmt); defaultConductorProperties.fromXml(default_conductor_elmt);
} }
// Load the autonum // Load the autonum
m_conductors_autonum_name = root.attribute(QStringLiteral("conductorAutonum")); m_conductors_autonum_name = root.attribute("conductorAutonum");
// Load Freeze New Element // Load Freeze New Element
m_freeze_new_elements = root.attribute(QStringLiteral("freezeNewElement")).toInt(); m_freeze_new_elements = root.attribute("freezeNewElement").toInt();
// Load Freeze New Conductor // Load Freeze New Conductor
m_freeze_new_conductors_ = root.attribute(QStringLiteral("freezeNewConductor")).toInt(); m_freeze_new_conductors_ = root.attribute("freezeNewConductor").toInt();
//Load Element Folio Sequential //Load Element Folio Sequential
folioSequentialsFromXml(root, folioSequentialsFromXml(root,
&m_elmt_unitfolio_max, &m_elmt_unitfolio_max,
QStringLiteral("elementunitfolioseq"), "elementunitfolioseq",
QStringLiteral("sequf_"), "sequf_",
QStringLiteral("unitfolioseq"), "unitfolioseq",
QStringLiteral("elementautonumfoliosequentials")); "elementautonumfoliosequentials");
folioSequentialsFromXml(root, &m_elmt_tenfolio_max, folioSequentialsFromXml(root, &m_elmt_tenfolio_max,
QStringLiteral("elementtenfolioseq"), "elementtenfolioseq",
QStringLiteral("seqtf_"), "seqtf_",
QStringLiteral("tenfolioseq"), "tenfolioseq",
QStringLiteral("elementautonumfoliosequentials")); "elementautonumfoliosequentials");
folioSequentialsFromXml(root, &m_elmt_hundredfolio_max, folioSequentialsFromXml(root, &m_elmt_hundredfolio_max,
QStringLiteral("elementhundredfolioseq"), "elementhundredfolioseq",
QStringLiteral("seqhf_"), "seqhf_",
QStringLiteral("hundredfolioseq"), "hundredfolioseq",
QStringLiteral("elementautonumfoliosequentials")); "elementautonumfoliosequentials");
//Load Conductor Folio Sequential //Load Conductor Folio Sequential
folioSequentialsFromXml(root, &m_cnd_unitfolio_max, folioSequentialsFromXml(root, &m_cnd_unitfolio_max,
QStringLiteral("conductorunitfolioseq"), "conductorunitfolioseq",
QStringLiteral("sequf_"), "sequf_",
QStringLiteral("unitfolioseq"), "unitfolioseq",
QStringLiteral("conductorautonumfoliosequentials")); "conductorautonumfoliosequentials");
folioSequentialsFromXml(root, &m_cnd_tenfolio_max, folioSequentialsFromXml(root, &m_cnd_tenfolio_max,
QStringLiteral("conductortenfolioseq"), "conductortenfolioseq",
QStringLiteral("seqtf_"), "seqtf_","tenfolioseq",
QStringLiteral("tenfolioseq"), "conductorautonumfoliosequentials");
QStringLiteral("conductorautonumfoliosequentials"));
folioSequentialsFromXml(root, &m_cnd_hundredfolio_max, folioSequentialsFromXml(root, &m_cnd_hundredfolio_max,
QStringLiteral("conductorhundredfolioseq"), "conductorhundredfolioseq",
QStringLiteral("seqhf_"), "seqhf_",
QStringLiteral("hundredfolioseq"), "hundredfolioseq",
QStringLiteral("conductorautonumfoliosequentials")); "conductorautonumfoliosequentials");
} }
// if child haven't got a child, loading is finish (diagram is empty) // if child haven't got a child, loading is finish (diagram is empty)
@@ -1273,10 +1255,10 @@ bool Diagram::fromXml(QDomElement &document,
} }
//If paste from another project //If paste from another project
if (root.hasAttribute(QStringLiteral("projectId"))) if (root.hasAttribute("projectId")) {
{ QETProject *other_project = QETApp::project(
QETProject *other_project = QETApp::project(root.attribute(QStringLiteral("projectId"), root.attribute("projectId",
QStringLiteral("-1")).toInt()); "-1").toInt());
/* We try to paste from another project, /* We try to paste from another project,
* then befor paste elements, * then befor paste elements,
@@ -1284,18 +1266,17 @@ bool Diagram::fromXml(QDomElement &document,
* (owned by other project) * (owned by other project)
* in the embedded collection of this project * in the embedded collection of this project
*/ */
if (other_project && other_project != m_project) if (other_project && other_project != m_project) {
{
ElementCollectionHandler ech; ElementCollectionHandler ech;
for (auto element_xml : foreach (QDomElement element_xml,
QET::findInDomElement(root, QET::findInDomElement(root,
QStringLiteral("elements"), "elements",
QStringLiteral("element"))) { "element")) {
if (!Element::valideXml(element_xml)) continue; if (!Element::valideXml(element_xml)) continue;
QString type_id = element_xml.attribute(QStringLiteral("type")); QString type_id = element_xml.attribute("type");
if (type_id.startsWith(QStringLiteral("embed://"))) { if (type_id.startsWith("embed://")) {
ElementsLocation location( ElementsLocation location(
type_id, type_id,
other_project); other_project);
@@ -1308,15 +1289,15 @@ bool Diagram::fromXml(QDomElement &document,
//Load all elements from the XML //Load all elements from the XML
QList<Element *> added_elements; QList<Element *> added_elements;
QHash<int, Terminal *> table_adr_id; QHash<int, Terminal *> table_adr_id;
for (auto element_xml : foreach (QDomElement element_xml,
QET::findInDomElement(root, QStringLiteral("elements"), QStringLiteral("element"))) QET::findInDomElement(root, "elements", "element"))
{ {
if (!Element::valideXml(element_xml)) continue; if (!Element::valideXml(element_xml)) continue;
// cree un element dont le type correspond a l'id type // cree un element dont le type correspond a l'id type
QString type_id = element_xml.attribute(QStringLiteral("type")); QString type_id = element_xml.attribute("type");
ElementsLocation element_location; ElementsLocation element_location;
if (type_id.startsWith(QStringLiteral("embed://"))) { if (type_id.startsWith("embed://")) {
element_location = ElementsLocation(type_id, m_project); element_location = ElementsLocation(type_id, m_project);
} }
else { else {
@@ -1345,7 +1326,8 @@ bool Diagram::fromXml(QDomElement &document,
{ {
removeItem(nvel_elmt); removeItem(nvel_elmt);
delete nvel_elmt; delete nvel_elmt;
qDebug() << QStringLiteral("Diagram::fromXml() : Le chargement des parametres d'un element a echoue"); qDebug() << "Diagram::fromXml() : Le chargement des "
"parametres d'un element a echoue";
} else { } else {
added_elements << nvel_elmt; added_elements << nvel_elmt;
} }
@@ -1353,9 +1335,9 @@ bool Diagram::fromXml(QDomElement &document,
// Load text // Load text
QList<IndependentTextItem *> added_texts; QList<IndependentTextItem *> added_texts;
for (auto text_xml : QET::findInDomElement(root, foreach (QDomElement text_xml, QET::findInDomElement(root,
QStringLiteral("inputs"), "inputs",
QStringLiteral("input"))) { "input")) {
IndependentTextItem *iti = new IndependentTextItem(); IndependentTextItem *iti = new IndependentTextItem();
iti -> fromXml(text_xml); iti -> fromXml(text_xml);
addItem(iti); addItem(iti);
@@ -1364,9 +1346,9 @@ bool Diagram::fromXml(QDomElement &document,
// Load image // Load image
QList<DiagramImageItem *> added_images; QList<DiagramImageItem *> added_images;
for (auto image_xml : QET::findInDomElement(root, foreach (QDomElement image_xml, QET::findInDomElement(root,
QStringLiteral("images"), "images",
QStringLiteral("image"))) { "image")) {
DiagramImageItem *dii = new DiagramImageItem (); DiagramImageItem *dii = new DiagramImageItem ();
dii -> fromXml(image_xml); dii -> fromXml(image_xml);
addItem(dii); addItem(dii);
@@ -1375,9 +1357,9 @@ bool Diagram::fromXml(QDomElement &document,
// Load shape // Load shape
QList<QetShapeItem *> added_shapes; QList<QetShapeItem *> added_shapes;
for (auto shape_xml : QET::findInDomElement(root, foreach (QDomElement shape_xml, QET::findInDomElement(root,
QStringLiteral("shapes"), "shapes",
QStringLiteral("shape"))) { "shape")) {
QetShapeItem *dii = new QetShapeItem (QPointF(0,0)); QetShapeItem *dii = new QetShapeItem (QPointF(0,0));
dii -> fromXml(shape_xml); dii -> fromXml(shape_xml);
addItem(dii); addItem(dii);
@@ -1386,9 +1368,9 @@ bool Diagram::fromXml(QDomElement &document,
// Load conductor // Load conductor
QList<Conductor *> added_conductors; QList<Conductor *> added_conductors;
for (auto f : QET::findInDomElement(root, foreach (QDomElement f, QET::findInDomElement(root,
QStringLiteral("conductors"), "conductors",
QStringLiteral("conductor"))) "conductor"))
{ {
if (!Conductor::valideXml(f)) continue; if (!Conductor::valideXml(f)) continue;
@@ -1413,8 +1395,9 @@ bool Diagram::fromXml(QDomElement &document,
//Load tables //Load tables
QVector<QetGraphicsTableItem *> added_tables; QVector<QetGraphicsTableItem *> added_tables;
for (const auto &dom_table : QETXML::subChild(root, for (auto dom_table
QStringLiteral("tables"), : QETXML::subChild(root,
"tables",
QetGraphicsTableItem::xmlTagName())) QetGraphicsTableItem::xmlTagName()))
{ {
auto table = new QetGraphicsTableItem(); auto table = new QetGraphicsTableItem();
@@ -1427,12 +1410,12 @@ bool Diagram::fromXml(QDomElement &document,
if (position != QPointF()) if (position != QPointF())
{ {
QVector <QGraphicsItem *> added_items; QVector <QGraphicsItem *> added_items;
for (auto element : qAsConst(added_elements )) added_items << element; for (auto element : added_elements ) added_items << element;
for (auto cond : qAsConst(added_conductors )) added_items << cond; for (auto cond : added_conductors) added_items << cond;
for (auto shape : qAsConst(added_shapes )) added_items << shape; for (auto shape : added_shapes ) added_items << shape;
for (auto text : qAsConst(added_texts )) added_items << text; for (auto text : added_texts ) added_items << text;
for (auto image : qAsConst(added_images )) added_items << image; for (auto image : added_images ) added_items << image;
for (auto table : qAsConst(added_tables )) added_items << table; for (auto table : added_tables ) added_items << table;
//Get the top left corner of the rectangle that contain all added items //Get the top left corner of the rectangle that contain all added items
QRectF items_rect; QRectF items_rect;
@@ -1504,7 +1487,7 @@ void Diagram::folioSequentialsFromXml(const QDomElement &root,
= folioSeqAutoNum.firstChildElement(type); = folioSeqAutoNum.firstChildElement(type);
!folioseq.isNull(); !folioseq.isNull();
folioseq = folioseq.nextSiblingElement(type)) { folioseq = folioseq.nextSiblingElement(type)) {
QString title = folioseq.attribute(QStringLiteral("title")); QString title = folioseq.attribute("title");
QStringList list; QStringList list;
int i = 1; int i = 1;
while (folioseq.hasAttribute(seq while (folioseq.hasAttribute(seq
@@ -1888,10 +1871,10 @@ void Diagram::loadElmtFolioSeq()
|| !m_elmt_unitfolio_max.contains(title)) { || !m_elmt_unitfolio_max.contains(title)) {
//Insert Initial Value //Insert Initial Value
if (project()->elementAutoNumCurrentFormula().contains( if (project()->elementAutoNumCurrentFormula().contains(
QStringLiteral("%sequf_"))) { "%sequf_")) {
insertFolioSeqHash(&m_elmt_unitfolio_max, insertFolioSeqHash(&m_elmt_unitfolio_max,
title, title,
QStringLiteral("unitfolio"), "unitfolio",
&nc); &nc);
project()->addElementAutoNum(title,nc); project()->addElementAutoNum(title,nc);
} }
@@ -1899,10 +1882,10 @@ void Diagram::loadElmtFolioSeq()
else if (m_elmt_unitfolio_max.contains(title)) { else if (m_elmt_unitfolio_max.contains(title)) {
//Load Folio Current Value //Load Folio Current Value
if (project()->elementAutoNumCurrentFormula().contains( if (project()->elementAutoNumCurrentFormula().contains(
QStringLiteral("%sequf_"))) { "%sequf_")) {
loadFolioSeqHash(&m_elmt_unitfolio_max, loadFolioSeqHash(&m_elmt_unitfolio_max,
title, title,
QStringLiteral("unitfolio"), "unitfolio",
&nc); &nc);
project()->addElementAutoNum(title,nc); project()->addElementAutoNum(title,nc);
} }
@@ -1913,10 +1896,10 @@ void Diagram::loadElmtFolioSeq()
|| !m_elmt_tenfolio_max.contains(title)) { || !m_elmt_tenfolio_max.contains(title)) {
//Insert Initial Value //Insert Initial Value
if (project()->elementAutoNumCurrentFormula().contains( if (project()->elementAutoNumCurrentFormula().contains(
QStringLiteral("%seqtf_"))) { "%seqtf_")) {
insertFolioSeqHash(&m_elmt_tenfolio_max, insertFolioSeqHash(&m_elmt_tenfolio_max,
title, title,
QStringLiteral("tenfolio"), "tenfolio",
&nc); &nc);
project()->addElementAutoNum(title,nc); project()->addElementAutoNum(title,nc);
} }
@@ -1924,10 +1907,10 @@ void Diagram::loadElmtFolioSeq()
else if (m_elmt_tenfolio_max.contains(title)) { else if (m_elmt_tenfolio_max.contains(title)) {
//Load Folio Current Value //Load Folio Current Value
if (project()->elementAutoNumCurrentFormula().contains( if (project()->elementAutoNumCurrentFormula().contains(
QStringLiteral("%seqtf_"))) { "%seqtf_")) {
loadFolioSeqHash(&m_elmt_tenfolio_max, loadFolioSeqHash(&m_elmt_tenfolio_max,
title, title,
QStringLiteral("tenfolio"), "tenfolio",
&nc); &nc);
project()->addElementAutoNum(title,nc); project()->addElementAutoNum(title,nc);
} }
@@ -1938,10 +1921,10 @@ void Diagram::loadElmtFolioSeq()
|| !m_elmt_hundredfolio_max.contains(title)) { || !m_elmt_hundredfolio_max.contains(title)) {
//Insert Initial Value //Insert Initial Value
if (project()->elementAutoNumCurrentFormula().contains( if (project()->elementAutoNumCurrentFormula().contains(
QStringLiteral("%seqhf_"))) { "%seqhf_")) {
insertFolioSeqHash(&m_elmt_hundredfolio_max, insertFolioSeqHash(&m_elmt_hundredfolio_max,
title, title,
QStringLiteral("hundredfolio"), "hundredfolio",
&nc); &nc);
project()->addElementAutoNum(title,nc); project()->addElementAutoNum(title,nc);
} }
@@ -1949,10 +1932,10 @@ void Diagram::loadElmtFolioSeq()
else if (m_elmt_hundredfolio_max.contains(title)) { else if (m_elmt_hundredfolio_max.contains(title)) {
//Load Folio Current Value //Load Folio Current Value
if (project()->elementAutoNumCurrentFormula().contains( if (project()->elementAutoNumCurrentFormula().contains(
QStringLiteral("%seqhf_"))) { "%seqhf_")) {
loadFolioSeqHash(&m_elmt_hundredfolio_max, loadFolioSeqHash(&m_elmt_hundredfolio_max,
title, title,
QStringLiteral("hundredfolio"), "hundredfolio",
&nc); &nc);
project()->addElementAutoNum(title,nc); project()->addElementAutoNum(title,nc);
} }
@@ -1975,20 +1958,20 @@ void Diagram::loadCndFolioSeq()
if (m_cnd_unitfolio_max.isEmpty() if (m_cnd_unitfolio_max.isEmpty()
|| !m_cnd_unitfolio_max.contains(title)) { || !m_cnd_unitfolio_max.contains(title)) {
//Insert Initial Value //Insert Initial Value
if (formula.contains(QStringLiteral("%sequf_"))) { if (formula.contains("%sequf_")) {
insertFolioSeqHash(&m_cnd_unitfolio_max, insertFolioSeqHash(&m_cnd_unitfolio_max,
title, title,
QStringLiteral("unitfolio"), "unitfolio",
&nc); &nc);
project()->addConductorAutoNum(title,nc); project()->addConductorAutoNum(title,nc);
} }
} }
else if (m_cnd_unitfolio_max.contains(title)) { else if (m_cnd_unitfolio_max.contains(title)) {
//Load Folio Current Value //Load Folio Current Value
if (formula.contains(QStringLiteral("%sequf_"))) { if (formula.contains("%sequf_")) {
loadFolioSeqHash(&m_cnd_unitfolio_max, loadFolioSeqHash(&m_cnd_unitfolio_max,
title, title,
QStringLiteral("unitfolio"), "unitfolio",
&nc); &nc);
project()->addConductorAutoNum(title,nc); project()->addConductorAutoNum(title,nc);
} }
@@ -1998,20 +1981,20 @@ void Diagram::loadCndFolioSeq()
if (m_cnd_tenfolio_max.isEmpty() if (m_cnd_tenfolio_max.isEmpty()
|| !m_cnd_tenfolio_max.contains(title)) { || !m_cnd_tenfolio_max.contains(title)) {
//Insert Initial Value //Insert Initial Value
if (formula.contains(QStringLiteral("%seqtf_"))) { if (formula.contains("%seqtf_")) {
insertFolioSeqHash(&m_cnd_tenfolio_max, insertFolioSeqHash(&m_cnd_tenfolio_max,
title, title,
QStringLiteral("tenfolio"), "tenfolio",
&nc); &nc);
project()->addConductorAutoNum(title,nc); project()->addConductorAutoNum(title,nc);
} }
} }
else if (m_cnd_tenfolio_max.contains(title)) { else if (m_cnd_tenfolio_max.contains(title)) {
//Load Folio Current Value //Load Folio Current Value
if (formula.contains(QStringLiteral("%seqtf_"))) { if (formula.contains("%seqtf_")) {
loadFolioSeqHash(&m_cnd_tenfolio_max, loadFolioSeqHash(&m_cnd_tenfolio_max,
title, title,
QStringLiteral("tenfolio"), "tenfolio",
&nc); &nc);
project()->addConductorAutoNum(title,nc); project()->addConductorAutoNum(title,nc);
} }
@@ -2021,20 +2004,20 @@ void Diagram::loadCndFolioSeq()
if (m_cnd_hundredfolio_max.isEmpty() if (m_cnd_hundredfolio_max.isEmpty()
|| !m_cnd_hundredfolio_max.contains(title)) { || !m_cnd_hundredfolio_max.contains(title)) {
//Insert Initial Value //Insert Initial Value
if (formula.contains(QStringLiteral("%seqhf_"))) { if (formula.contains("%seqhf_")) {
insertFolioSeqHash(&m_cnd_hundredfolio_max, insertFolioSeqHash(&m_cnd_hundredfolio_max,
title, title,
QStringLiteral("hundredfolio"), "hundredfolio",
&nc); &nc);
project()->addConductorAutoNum(title,nc); project()->addConductorAutoNum(title,nc);
} }
} }
else if (m_cnd_hundredfolio_max.contains(title)) { else if (m_cnd_hundredfolio_max.contains(title)) {
//Load Folio Current Value //Load Folio Current Value
if (formula.contains(QStringLiteral("%seqhf_"))) { if (formula.contains("%seqhf_")) {
loadFolioSeqHash(&m_cnd_hundredfolio_max, loadFolioSeqHash(&m_cnd_hundredfolio_max,
title, title,
QStringLiteral("hundredfolio"), "hundredfolio",
&nc); &nc);
project()->addConductorAutoNum(title,nc); project()->addConductorAutoNum(title,nc);
} }
@@ -2274,9 +2257,9 @@ DiagramPosition Diagram::convertPosition(const QPointF &pos) {
QPointF Diagram::snapToGrid(const QPointF &p) QPointF Diagram::snapToGrid(const QPointF &p)
{ {
QSettings settings; QSettings settings;
int xGrid = settings.value(QStringLiteral("diagrameditor/Xgrid"), int xGrid = settings.value("diagrameditor/Xgrid",
Diagram::xGrid).toInt(); Diagram::xGrid).toInt();
int yGrid = settings.value(QStringLiteral("diagrameditor/Ygrid"), int yGrid = settings.value("diagrameditor/Ygrid",
Diagram::yGrid).toInt(); Diagram::yGrid).toInt();
//Return a point rounded to the nearest pixel //Return a point rounded to the nearest pixel
@@ -2347,8 +2330,8 @@ QSet<Conductor *> Diagram::selectedConductors() const
bool Diagram::clipboardMayContainDiagram() bool Diagram::clipboardMayContainDiagram()
{ {
QString clipboard_text = QApplication::clipboard() -> text().trimmed(); QString clipboard_text = QApplication::clipboard() -> text().trimmed();
bool may_be_diagram = clipboard_text.startsWith(QStringLiteral("<diagram")) bool may_be_diagram = clipboard_text.startsWith("<diagram")
&& clipboard_text.endsWith(QStringLiteral("</diagram>")); && clipboard_text.endsWith("</diagram>");
return(may_be_diagram); return(may_be_diagram);
} }

View File

@@ -283,7 +283,6 @@ class Diagram : public QGraphicsScene
void findElementRequired(const ElementsLocation &); void findElementRequired(const ElementsLocation &);
void diagramActivated(); void diagramActivated();
void diagramInformationChanged();
}; };
Q_DECLARE_METATYPE(Diagram *) Q_DECLARE_METATYPE(Diagram *)

View File

@@ -1219,20 +1219,13 @@ QList<QAction *> DiagramView::contextMenuActions() const
*/ */
void DiagramView::contextMenuEvent(QContextMenuEvent *e) void DiagramView::contextMenuEvent(QContextMenuEvent *e)
{ {
if (auto qgi = m_diagram->itemAt(mapToScene(e->pos()), transform())) if (QGraphicsItem *qgi = m_diagram->itemAt(mapToScene(e->pos()), transform()))
{ {
if (!qgi->isSelected()) { if (!qgi -> isSelected()) {
m_diagram->clearSelection(); m_diagram->clearSelection();
} }
// At this step qgi can be deleted for exemple if qgi is a QetGraphicsHandlerItem. qgi->setSelected(true);
// When we call clearSelection the parent item of the handler
// is deselected and so delete all handlers, in this case,
// qgi become a dangling pointer.
// we need to call again itemAt.
if (auto item_ = m_diagram->itemAt(mapToScene(e->pos()), transform())) {
item_->setSelected(true);
}
} }
if (m_diagram->selectedItems().isEmpty()) if (m_diagram->selectedItems().isEmpty())

View File

@@ -1308,29 +1308,14 @@ void CustomElementGraphicPart::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
void CustomElementGraphicPart::mousePressEvent(QGraphicsSceneMouseEvent *event) void CustomElementGraphicPart::mousePressEvent(QGraphicsSceneMouseEvent *event)
{ {
if(event->button() == Qt::LeftButton) { if(event->button() == Qt::LeftButton)
m_origin_pos = this->pos(); m_origin_pos = this->pos();
m_first_move = true;
}
QGraphicsObject::mousePressEvent(event); QGraphicsObject::mousePressEvent(event);
} }
void CustomElementGraphicPart::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void CustomElementGraphicPart::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
//m_first_move is used to avoid an unwanted behavior
//when the properties dock widget is displayed :
//1 there is no selection
//2 the dock widget width is set to minimum
//3 select a part, the dock widget gain new widgets used to edit
//the current selected part and the width of the dock grow
//so the width of the QGraphicsView is reduced and cause a mouse move event.
//When this case occur the part is moved but they should not. This bool fix it.
if (Q_UNLIKELY(m_first_move)) {
m_first_move = false;
return;
}
if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable)) if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable))
{ {
QPointF pos = event->scenePos() + (m_origin_pos - event->buttonDownScenePos(Qt::LeftButton)); QPointF pos = event->scenePos() + (m_origin_pos - event->buttonDownScenePos(Qt::LeftButton));

View File

@@ -328,7 +328,6 @@ class CustomElementGraphicPart : public QGraphicsObject, public CustomElementPar
Color _color; Color _color;
bool _antialiased; bool _antialiased;
QPointF m_origin_pos; QPointF m_origin_pos;
bool m_first_move;
}; };
typedef CustomElementGraphicPart CEGP; typedef CustomElementGraphicPart CEGP;

View File

@@ -389,12 +389,12 @@ StyleEditor::StyleEditor(QETElementEditor *editor, CustomElementGraphicPart *p,
auto grid_layout = new QGridLayout(this); auto grid_layout = new QGridLayout(this);
grid_layout->addWidget(new QLabel(tr("Contour :")), 0,0, Qt::AlignRight); grid_layout->addWidget(new QLabel(tr("Contour :")), 0,0, Qt::AlignRight);
grid_layout->addWidget(outline_color, 0, 1); grid_layout->addWidget(outline_color, 0, 1);
grid_layout->addWidget(new QLabel(tr("Remplissage :")), 1, 0, Qt::AlignRight); grid_layout->addWidget(new QLabel(tr("Remplissage :")), 0, 2, Qt::AlignRight);
grid_layout->addWidget(filling_color, 1, 1); grid_layout->addWidget(filling_color, 0, 3);
grid_layout->addWidget(new QLabel(tr("Style :")), 2, 0, Qt::AlignRight); grid_layout->addWidget(new QLabel(tr("Style :")), 1, 0, Qt::AlignRight);
grid_layout->addWidget(line_style, 2, 1); grid_layout->addWidget(line_style, 1, 1);
grid_layout->addWidget(new QLabel(tr("Épaisseur :")), 3, 0, Qt::AlignRight); grid_layout->addWidget(new QLabel(tr("Épaisseur :")), 1, 2, Qt::AlignRight);
grid_layout->addWidget(size_weight, 3 ,1); grid_layout->addWidget(size_weight, 1 ,3);
main_layout->addItem(grid_layout); main_layout->addItem(grid_layout);
main_layout -> addWidget(antialiasing); main_layout -> addWidget(antialiasing);

View File

@@ -79,9 +79,10 @@ void QetGraphicsTableFactory::create(Diagram *diagram, AddTableDialog *dialog)
} }
//Add new table if needed and option checked //Add new table if needed and option checked
if (dialog->addNewTableToNewDiagram() dialog->addNewTableToNewDiagram();
&& table_->displayNRow() > 0 table_->model()->rowCount();
&& table_->model()->rowCount() > table_->displayNRow()) table_->displayNRow();
if (dialog->addNewTableToNewDiagram() && table_->model()->rowCount() > table_->displayNRow())
{ {
auto already_displayed_rows = table_->displayNRow(); auto already_displayed_rows = table_->displayNRow();
auto project_ = diagram->project(); auto project_ = diagram->project();

View File

@@ -29,21 +29,20 @@
#endif #endif
#include "qet.h" #include "qet.h"
MachineInfo *MachineInfo::m_instance = nullptr;
/** /**
@brief MachineInfo::MachineInfo @brief Machine_info::Machine_info
@param parent @param parent
*/ */
MachineInfo::MachineInfo() Machine_info::Machine_info(QObject *parent) : QObject(parent)
{ {
init_get_Screen_info(); init_get_Screen_info();
init_get_cpu_info(); init_get_cpu_info();
} }
/** /**
@brief MachineInfo::send_info_to_debug @brief Machine_info::send_info_to_debug
*/ */
void MachineInfo::send_info_to_debug() void Machine_info::send_info_to_debug()
{ {
qInfo()<<"debugging enabled:" qInfo()<<"debugging enabled:"
<< QLibraryInfo::isDebugBuild(); << QLibraryInfo::isDebugBuild();
@@ -121,7 +120,7 @@ void MachineInfo::send_info_to_debug()
#endif #endif
qInfo() << "GitRevision " + QString(GIT_COMMIT_SHA); qInfo() << "GitRevision " + QString(GIT_COMMIT_SHA);
qInfo()<< "QElectroTech V " + QET::displayedVersion; qInfo()<< "QElectroTech V " + QET::displayedVersion;
qInfo()<< QObject::tr("Compilation : ") + pc.built.version; qInfo()<< tr("Compilation : ") + pc.built.version;
qInfo()<< "Built with Qt " + pc.built.QT qInfo()<< "Built with Qt " + pc.built.QT
+ " - Date : " + pc.built.date + " - Date : " + pc.built.date
+ " : " + pc.built.time; + " : " + pc.built.time;
@@ -152,10 +151,10 @@ void MachineInfo::send_info_to_debug()
} }
/** /**
@brief MachineInfo::init_get_Screen_info @brief Machine_info::init_get_Screen_info
Finds the largest screen and saves the values Finds the largest screen and saves the values
*/ */
void MachineInfo::init_get_Screen_info() void Machine_info::init_get_Screen_info()
{ {
const auto screens = qApp->screens(); const auto screens = qApp->screens();
pc.screen.count=screens.count(); pc.screen.count=screens.count();
@@ -175,9 +174,9 @@ void MachineInfo::init_get_Screen_info()
} }
/** /**
@brief MachineInfo::init_get_cpu_info @brief Machine_info::init_get_cpu_info
*/ */
void MachineInfo::init_get_cpu_info() void Machine_info::init_get_cpu_info()
{ {
#ifdef __GNUC__ #ifdef __GNUC__
#ifdef __APPLE_CC__ #ifdef __APPLE_CC__
@@ -192,9 +191,9 @@ void MachineInfo::init_get_cpu_info()
} }
/** /**
@brief MachineInfo::init_get_cpu_info_linux @brief Machine_info::init_get_cpu_info_linux
*/ */
void MachineInfo::init_get_cpu_info_linux() void Machine_info::init_get_cpu_info_linux()
{ {
QProcess linuxcpuinfo; QProcess linuxcpuinfo;
linuxcpuinfo.start("bash", QStringList() linuxcpuinfo.start("bash", QStringList()
@@ -238,9 +237,9 @@ void MachineInfo::init_get_cpu_info_linux()
} }
/** /**
@brief MachineInfo::init_get_cpu_info_winnt @brief Machine_info::init_get_cpu_info_winnt
*/ */
void MachineInfo::init_get_cpu_info_winnt() void Machine_info::init_get_cpu_info_winnt()
{ {
QProcess wincpuinfo; QProcess wincpuinfo;
wincpuinfo.start("wmic", wincpuinfo.start("wmic",
@@ -292,9 +291,9 @@ void MachineInfo::init_get_cpu_info_winnt()
} }
/** /**
@brief MachineInfo::init_get_cpu_info_macos @brief Machine_info::init_get_cpu_info_macos
*/ */
void MachineInfo::init_get_cpu_info_macos() void Machine_info::init_get_cpu_info_macos()
{ {
QProcess macoscpuinfo; QProcess macoscpuinfo;
macoscpuinfo.start("bash", macoscpuinfo.start("bash",
@@ -318,28 +317,30 @@ void MachineInfo::init_get_cpu_info_macos()
} }
/** /**
@brief MachineInfo::i_max_screen_width @brief Machine_info::i_max_screen_width
@return max screen width @return max screen width
*/ */
int32_t MachineInfo::i_max_screen_width() { int32_t Machine_info::i_max_screen_width()
{
return pc.screen.Max_width; return pc.screen.Max_width;
} }
/** /**
@brief MachineInfo::i_max_screen_height @brief Machine_info::i_max_screen_height
@return max screen height @return max screen height
*/ */
int32_t MachineInfo::i_max_screen_height() { int32_t Machine_info::i_max_screen_height()
{
return pc.screen.Max_height; return pc.screen.Max_height;
} }
/** /**
@brief MachineInfo::compilation_info @brief Machine_info::compilation_info
@return compilation_info @return compilation_info
*/ */
QString MachineInfo::compilation_info() QString Machine_info::compilation_info()
{ {
QString compilation_info = "<br />" + QObject::tr("Compilation : "); QString compilation_info = "<br />" + tr("Compilation : ");
compilation_info +=pc.built.version; compilation_info +=pc.built.version;
compilation_info += "<br>Built with Qt " + pc.built.QT; compilation_info += "<br>Built with Qt " + pc.built.QT;
compilation_info += " - Date : " + pc.built.date; compilation_info += " - Date : " + pc.built.date;

View File

@@ -18,57 +18,31 @@
#ifndef MACHINE_INFO_H #ifndef MACHINE_INFO_H
#define MACHINE_INFO_H #define MACHINE_INFO_H
#include <QObject>
#include <QThread> #include <QThread>
#include <QMutex>
/** /**
@brief The MachineInfo class @brief The Machine_info class
This class hold information from your PC. This class hold information from your PC.
*/ */
class MachineInfo class Machine_info : public QObject
{ {
static MachineInfo *m_instance; Q_OBJECT
public: public:
static MachineInfo *instance() explicit Machine_info(QObject *parent = nullptr);
{
static QMutex mutex;
if (!m_instance)
{
mutex.lock();
if (!m_instance) {
m_instance = new MachineInfo();
}
mutex.unlock();
}
return m_instance;
}
static void dropInstance()
{
static QMutex mutex;
if (m_instance) {
mutex.lock();
delete m_instance;
m_instance = nullptr;
mutex.unlock();
}
}
int32_t i_max_screen_width(); int32_t i_max_screen_width();
int32_t i_max_screen_height(); int32_t i_max_screen_height();
QString compilation_info(); QString compilation_info();
void send_info_to_debug(); void send_info_to_debug();
signals:
private: private:
MachineInfo();
void init_get_Screen_info(); void init_get_Screen_info();
void init_get_cpu_info(); void init_get_cpu_info();
void init_get_cpu_info_linux(); void init_get_cpu_info_linux();
void init_get_cpu_info_winnt(); void init_get_cpu_info_winnt();
void init_get_cpu_info_macos(); void init_get_cpu_info_macos();
struct Pc struct Pc
{ {
struct Screen struct Screen

View File

@@ -22,7 +22,6 @@
#include "utils/macosxopenevent.h" #include "utils/macosxopenevent.h"
#include <QStyleFactory> #include <QStyleFactory>
#include <QtConcurrent>
/** /**
@brief myMessageOutput @brief myMessageOutput
@@ -201,15 +200,16 @@ int main(int argc, char **argv)
QObject::connect(&app, &SingleApplication::receivedMessage, QObject::connect(&app, &SingleApplication::receivedMessage,
&qetapp, &QETApp::receiveMessage); &qetapp, &QETApp::receiveMessage);
QtConcurrent::run([=]()
{
// for debugging // for debugging
qInstallMessageHandler(myMessageOutput); qInstallMessageHandler(myMessageOutput);
qInfo("Start-up"); qInfo("Start-up");
// delete old log files of max 7 days old. // delete old log files of max 7 days old.
delete_old_log_files(7); delete_old_log_files(7);
MachineInfo::instance()->send_info_to_debug(); {
}); Machine_info *my_ma =new Machine_info();
my_ma->send_info_to_debug();
delete my_ma;
}
return app.exec(); return app.exec();
} }

View File

@@ -187,14 +187,13 @@ QHash<QString, XRefProperties> XRefProperties::defaultProperties()
} }
bool XRefProperties::operator ==(const XRefProperties &xrp) const{ bool XRefProperties::operator ==(const XRefProperties &xrp) const{
return (m_show_power_ctc == xrp.m_show_power_ctc return (m_show_power_ctc == xrp.m_show_power_ctc &&
&& m_display == xrp.m_display m_display == xrp.m_display &&
&& m_snap_to == xrp.m_snap_to m_snap_to == xrp.m_snap_to &&
&& m_prefix == xrp.m_prefix m_prefix == xrp.m_prefix &&
&& m_master_label== xrp.m_master_label m_master_label == xrp.m_master_label &&
&& m_offset == xrp.m_offset m_offset == xrp.m_offset &&
&& m_xref_pos == xrp.m_xref_pos m_xref_pos == xrp.m_xref_pos );
&& m_slave_label == xrp.m_slave_label);
} }
bool XRefProperties::operator !=(const XRefProperties &xrp) const bool XRefProperties::operator !=(const XRefProperties &xrp) const

View File

@@ -29,9 +29,9 @@ class QActionGroup;
*/ */
namespace QET { namespace QET {
/// QElectroTech version (as string, used to mark projects and elements XML documents) /// QElectroTech version (as string, used to mark projects and elements XML documents)
const QString version = "0.81"; const QString version = "0.80";
/// QElectroTech displayed version /// QElectroTech displayed version
const QString displayedVersion = "0.81"; const QString displayedVersion = "0.80";
QString license(); QString license();
//Describe the current state of a graphic item //Describe the current state of a graphic item

View File

@@ -35,7 +35,6 @@
#include "titleblocktemplate.h" #include "titleblocktemplate.h"
#include "ui/aboutqetdialog.h" #include "ui/aboutqetdialog.h"
#include "ui/configpage/generalconfigurationpage.h" #include "ui/configpage/generalconfigurationpage.h"
#include "machine_info.h"
#include <cstdlib> #include <cstdlib>
#include <iostream> #include <iostream>
@@ -71,9 +70,6 @@ QString QETApp::m_user_custom_elements_dir = QString();
QString QETApp::m_user_custom_tbt_dir = QString(); QString QETApp::m_user_custom_tbt_dir = QString();
QETApp *QETApp::m_qetapp = nullptr; QETApp *QETApp::m_qetapp = nullptr;
bool lang_is_set = false;
QString system_language = QString();
/** /**
@brief QETApp::QETApp @brief QETApp::QETApp
@@ -150,7 +146,6 @@ QETApp::~QETApp()
ElementFactory::dropInstance(); ElementFactory::dropInstance();
ElementPictureFactory::dropInstance(); ElementPictureFactory::dropInstance();
MachineInfo::dropInstance();
} }
@@ -230,16 +225,11 @@ void QETApp::setLanguage(const QString &desired_language) {
*/ */
QString QETApp::langFromSetting() QString QETApp::langFromSetting()
{ {
if (!lang_is_set)
{
QSettings settings; QSettings settings;
system_language = settings.value("lang", "system").toString(); QString system_language = settings.value("lang", "system").toString();
if(system_language == "system") { if(system_language == "system") {
system_language = QLocale::system().name().left(2); system_language = QLocale::system().name().left(2);
} }
lang_is_set = true;
}
return system_language; return system_language;
} }
/** /**

View File

@@ -84,7 +84,7 @@ class QetGraphicsHeaderItem : public QGraphicsObject
QRect m_current_rect; QRect m_current_rect;
QRectF m_bounding_rect; QRectF m_bounding_rect;
QPointer<QAbstractItemModel> m_model; QAbstractItemModel *m_model = nullptr;
QVector<int> QVector<int>
m_sections_minimum_width, m_sections_minimum_width,

View File

@@ -156,17 +156,7 @@ QetGraphicsTableItem::QetGraphicsTableItem(QGraphicsItem *parent) :
} }
QetGraphicsTableItem::~QetGraphicsTableItem() QetGraphicsTableItem::~QetGraphicsTableItem()
{ {}
if (m_previous_table) {
if (m_next_table) {
m_previous_table->setNextTable(m_next_table);
} else {
m_previous_table->setNextTable(nullptr);
}
} else if (m_next_table) {
m_next_table->setPreviousTable(nullptr);
}
}
/** /**
@brief QetGraphicsTableItem::setModel @brief QetGraphicsTableItem::setModel
@@ -185,7 +175,7 @@ void QetGraphicsTableItem::setModel(QAbstractItemModel *model)
this, &QetGraphicsTableItem::modelReseted); this, &QetGraphicsTableItem::modelReseted);
} }
m_model = model; m_model = model;
m_header_item->setModel(m_model); m_header_item->setModel(model);
setUpColumnAndRowMinimumSize(); setUpColumnAndRowMinimumSize();
adjustSize(); adjustSize();
@@ -210,7 +200,7 @@ void QetGraphicsTableItem::setModel(QAbstractItemModel *model)
*/ */
QAbstractItemModel *QetGraphicsTableItem::model() const QAbstractItemModel *QetGraphicsTableItem::model() const
{ {
return m_model.data(); return m_model;
} }
/** /**
@@ -280,8 +270,8 @@ void QetGraphicsTableItem::paint(
if (m_previous_table) //Remove the number of row already displayed by previous tables if (m_previous_table) //Remove the number of row already displayed by previous tables
row_count -= m_previous_table->displayNRowOffset(); row_count -= m_previous_table->displayNRowOffset();
if (m_number_of_row_to_display > 0) //User override the number of row to display if (m_number_of_displayed_row > 0) //User override the number of row to display
row_count = std::min(row_count, m_number_of_row_to_display); row_count = std::min(row_count, m_number_of_displayed_row);
//Draw horizontal lines //Draw horizontal lines
auto cell_height = static_cast<double>(m_current_size.height())/static_cast<double>(row_count); auto cell_height = static_cast<double>(m_current_size.height())/static_cast<double>(row_count);
@@ -374,8 +364,8 @@ QSize QetGraphicsTableItem::minimumSize() const
row_count -= m_previous_table->displayNRowOffset(); row_count -= m_previous_table->displayNRowOffset();
} }
if (m_number_of_row_to_display > 0) if (m_number_of_displayed_row > 0)
row_count = std::min(row_count, m_number_of_row_to_display); row_count = std::min(row_count, m_number_of_displayed_row);
//m_minimum_column_width already take in count the minimum size of header //m_minimum_column_width already take in count the minimum size of header
@@ -399,7 +389,7 @@ QSize QetGraphicsTableItem::minimumSize() const
*/ */
void QetGraphicsTableItem::setDisplayNRow(const int &number) void QetGraphicsTableItem::setDisplayNRow(const int &number)
{ {
m_number_of_row_to_display = number; m_number_of_displayed_row = number;
setToMinimumHeight(); setToMinimumHeight();
if (m_next_table) if (m_next_table)
m_next_table->previousTableDisplayRowChanged(); m_next_table->previousTableDisplayRowChanged();
@@ -412,7 +402,7 @@ void QetGraphicsTableItem::setDisplayNRow(const int &number)
*/ */
int QetGraphicsTableItem::displayNRow() const int QetGraphicsTableItem::displayNRow() const
{ {
return m_number_of_row_to_display; return m_number_of_displayed_row;
} }
/** /**
@@ -499,41 +489,19 @@ QString QetGraphicsTableItem::tableName() const
*/ */
int QetGraphicsTableItem::displayNRowOffset() const int QetGraphicsTableItem::displayNRowOffset() const
{ {
auto offset_ = m_number_of_row_to_display; auto offset_ = m_number_of_displayed_row;
if(m_previous_table) if(m_previous_table)
offset_ += m_previous_table->displayNRowOffset(); offset_ += m_previous_table->displayNRowOffset();
return offset_; return offset_;
} }
/** QetGraphicsTableItem *QetGraphicsTableItem::previousTable() const
* @brief QetGraphicsTableItem::displayedRowCount
* @return the number of row displayed by this table
*/
int QetGraphicsTableItem::displayedRowCount() const
{
if (!m_model) {
return 0;
}
//Calcule the number of rows to display.
auto row_count = m_model->rowCount();
if (m_previous_table) //Remove the number of row already displayed by previous tables
row_count -= m_previous_table->displayNRowOffset();
if (m_number_of_row_to_display > 0) //User override the number of row to display
row_count = std::min(row_count, m_number_of_row_to_display);
return row_count;
}
QPointer<QetGraphicsTableItem> QetGraphicsTableItem::previousTable() const
{ {
return m_previous_table; return m_previous_table;
} }
QPointer<QetGraphicsTableItem> QetGraphicsTableItem::nextTable() const QetGraphicsTableItem *QetGraphicsTableItem::nextTable() const
{ {
return m_next_table; return m_next_table;
} }
@@ -587,7 +555,7 @@ QDomElement QetGraphicsTableItem::toXml(QDomDocument &dom_document) const
dom_table.setAttribute("height", QString::number(m_current_size.height())); dom_table.setAttribute("height", QString::number(m_current_size.height()));
dom_table.setAttribute("uuid", m_uuid.toString()); dom_table.setAttribute("uuid", m_uuid.toString());
dom_table.setAttribute("name", m_name); dom_table.setAttribute("name", m_name);
dom_table.setAttribute("display_n_row", QString::number(m_number_of_row_to_display)); dom_table.setAttribute("display_n_row", QString::number(m_number_of_displayed_row));
//Add the header xml //Add the header xml
dom_table.appendChild(m_header_item->toXml(dom_document)); dom_table.appendChild(m_header_item->toXml(dom_document));
@@ -603,7 +571,7 @@ QDomElement QetGraphicsTableItem::toXml(QDomDocument &dom_document) const
{ {
//Add model //Add model
auto dom_model = dom_document.createElement("model"); auto dom_model = dom_document.createElement("model");
auto project_db_model = static_cast<ProjectDBModel *>(m_model.data()); auto project_db_model = static_cast<ProjectDBModel *>(m_model);
dom_model.appendChild(project_db_model->toXml(dom_document)); dom_model.appendChild(project_db_model->toXml(dom_document));
dom_table.appendChild(dom_model); dom_table.appendChild(dom_model);
@@ -645,7 +613,7 @@ void QetGraphicsTableItem::fromXml(const QDomElement &dom_element)
"uuid", "uuid",
QUuid::createUuid().toString())); QUuid::createUuid().toString()));
m_name = dom_element.attribute("name"); m_name = dom_element.attribute("name");
m_number_of_row_to_display = dom_element.attribute( m_number_of_displayed_row = dom_element.attribute(
"display_n_row", "display_n_row",
QString::number(0)).toInt(); QString::number(0)).toInt();
@@ -710,8 +678,8 @@ bool QetGraphicsTableItem::toDXF(const QString &filepath)
if (m_previous_table) //Remove the number of row already displayed by previous tables if (m_previous_table) //Remove the number of row already displayed by previous tables
row_count -= m_previous_table->displayNRowOffset(); row_count -= m_previous_table->displayNRowOffset();
if (m_number_of_row_to_display > 0) //User override the number of row to display if (m_number_of_displayed_row > 0) //User override the number of row to display
row_count = std::min(row_count, m_number_of_row_to_display); row_count = std::min(row_count, m_number_of_displayed_row);
//Draw horizontal lines //Draw horizontal lines
auto cell_height = static_cast<double>(m_current_size.height())/static_cast<double>(row_count); auto cell_height = static_cast<double>(m_current_size.height())/static_cast<double>(row_count);
@@ -838,18 +806,13 @@ QVariant QetGraphicsTableItem::itemChange(
return QetGraphicsItem::itemChange(change, value); return QetGraphicsItem::itemChange(change, value);
} }
/**
* @brief QetGraphicsTableItem::modelReseted
*/
void QetGraphicsTableItem::modelReseted() void QetGraphicsTableItem::modelReseted()
{ {
dataChanged(m_model->index(0,0), m_model->index(0,0), QVector<int>()); dataChanged(m_model->index(0,0), m_model->index(0,0), QVector<int>());
setToMinimumHeight(); setToMinimumHeight();
if (!previousTable()) //this is the head table if (!previousTable()) { //this is the head table
{
checkInsufficientRowsCount(this); checkInsufficientRowsCount(this);
removeUselessNextTable();
} }
} }
@@ -1083,24 +1046,3 @@ void QetGraphicsTableItem::previousTableDisplayRowChanged()
m_next_table->previousTableDisplayRowChanged(); m_next_table->previousTableDisplayRowChanged();
} }
} }
/**
* @brief QetGraphicsTableItem::removeUselessNextTable
* Remove next table if useless, an useless table with 0 row displayed.
* If \p recursive is true check and remove for all sub next table.
* @param recursive
*/
void QetGraphicsTableItem::removeUselessNextTable(bool recursive)
{
if (m_next_table)
{
if (recursive) {
m_next_table->removeUselessNextTable();
}
if (m_next_table->displayedRowCount() <= 0)
{
m_next_table.data()->deleteLater();
m_next_table.clear();
}
}
}

View File

@@ -79,9 +79,8 @@ class QetGraphicsTableItem : public QetGraphicsItem
void setTableName(const QString &name); void setTableName(const QString &name);
QString tableName() const; QString tableName() const;
int displayNRowOffset() const; int displayNRowOffset() const;
int displayedRowCount() const; QetGraphicsTableItem *previousTable() const;
QPointer<QetGraphicsTableItem> previousTable() const; QetGraphicsTableItem *nextTable() const;
QPointer<QetGraphicsTableItem> nextTable() const;
void setToMinimumHeight(); void setToMinimumHeight();
void initLink(); void initLink();
QUuid uuid() const {return m_uuid;} QUuid uuid() const {return m_uuid;}
@@ -121,14 +120,13 @@ class QetGraphicsTableItem : public QetGraphicsItem
void headerSectionResized(); void headerSectionResized();
void adjustSize(); void adjustSize();
void previousTableDisplayRowChanged(); void previousTableDisplayRowChanged();
void removeUselessNextTable(bool recursive = true);
QPointer<QAbstractItemModel> m_model; QAbstractItemModel *m_model= nullptr;
QVector<int> m_minimum_column_width; QVector<int> m_minimum_column_width;
int int
m_minimum_row_height, m_minimum_row_height,
m_number_of_row_to_display = 0, m_number_of_displayed_row = 0,
m_br_margin = 10; m_br_margin = 10;
QSize QSize
@@ -141,8 +139,9 @@ class QetGraphicsTableItem : public QetGraphicsItem
QetGraphicsHandlerItem m_handler_item; QetGraphicsHandlerItem m_handler_item;
QetGraphicsHeaderItem *m_header_item = nullptr; QetGraphicsHeaderItem *m_header_item = nullptr;
QPointer<QetGraphicsTableItem> m_previous_table, QetGraphicsTableItem
m_next_table; *m_previous_table = nullptr,
*m_next_table = nullptr;
QString m_name; QString m_name;
QUuid QUuid

View File

@@ -128,15 +128,6 @@ void CrossRefItem::setUpConnection()
m_update_connection << connect(m_element, m_update_connection << connect(m_element,
&Element::linkedElementChanged, &Element::linkedElementChanged,
this, &CrossRefItem::linkedChanged); this, &CrossRefItem::linkedChanged);
auto diagram_ = dynamic_cast<Diagram *>(this->scene());
auto formula_ = m_properties.masterLabel();
if (diagram_ &&
formula_.contains("%F"))
{
m_update_connection << connect(diagram_ , &Diagram::diagramInformationChanged,
this, &CrossRefItem::updateLabel);
}
linkedChanged(); linkedChanged();
updateLabel(); updateLabel();
} }
@@ -170,9 +161,13 @@ QPainterPath CrossRefItem::shape() const{
QString CrossRefItem::elementPositionText( QString CrossRefItem::elementPositionText(
const Element *elmt, const bool &add_prefix) const const Element *elmt, const bool &add_prefix) const
{ {
XRefProperties xrp =
m_element->diagram()->project()->defaultXRefProperties(
m_element->kindInformations()["type"].toString());
QString formula = xrp.masterLabel();
autonum::sequentialNumbers seq; autonum::sequentialNumbers seq;
QString txt = autonum::AssignVariables::formulaToLabel( QString txt = autonum::AssignVariables::formulaToLabel(
m_properties.masterLabel(), formula,
seq, elmt->diagram(), seq, elmt->diagram(),
elmt); elmt);

View File

@@ -1326,7 +1326,6 @@ void DynamicElementTextItem::updateXref()
m_update_slave_Xref_connection << connect(m_master_element.data(), &Element::xChanged, this, &DynamicElementTextItem::updateXref); m_update_slave_Xref_connection << connect(m_master_element.data(), &Element::xChanged, this, &DynamicElementTextItem::updateXref);
m_update_slave_Xref_connection << connect(m_master_element.data(), &Element::yChanged, this, &DynamicElementTextItem::updateXref); m_update_slave_Xref_connection << connect(m_master_element.data(), &Element::yChanged, this, &DynamicElementTextItem::updateXref);
m_update_slave_Xref_connection << connect(m_master_element.data(), &Element::elementInfoChange, this, &DynamicElementTextItem::updateXref); m_update_slave_Xref_connection << connect(m_master_element.data(), &Element::elementInfoChange, this, &DynamicElementTextItem::updateXref);
m_update_slave_Xref_connection << connect(diagram(), &Diagram::diagramInformationChanged, this, &DynamicElementTextItem::updateXref);
m_update_slave_Xref_connection << connect(diagram()->project(), &QETProject::projectDiagramsOrderChanged, this, &DynamicElementTextItem::updateXref); m_update_slave_Xref_connection << connect(diagram()->project(), &QETProject::projectDiagramsOrderChanged, this, &DynamicElementTextItem::updateXref);
m_update_slave_Xref_connection << connect(diagram()->project(), &QETProject::diagramRemoved, this, &DynamicElementTextItem::updateXref); m_update_slave_Xref_connection << connect(diagram()->project(), &QETProject::diagramRemoved, this, &DynamicElementTextItem::updateXref);
m_update_slave_Xref_connection << connect(diagram()->project(), &QETProject::XRefPropertiesChanged, this, &DynamicElementTextItem::updateXref); m_update_slave_Xref_connection << connect(diagram()->project(), &QETProject::XRefPropertiesChanged, this, &DynamicElementTextItem::updateXref);

View File

@@ -736,38 +736,48 @@ bool Element::fromXml(
} }
QHash<int, Terminal *> priv_id_adr; QHash<int, Terminal *> priv_id_adr;
int terminals_non_trouvees = 0;
for (auto *qgi : childItems()) foreach(QGraphicsItem *qgi, childItems()) {
{ if (Terminal *p = qgraphicsitem_cast<Terminal *>(qgi)) {
if (auto terminal_ = qgraphicsitem_cast<Terminal *>(qgi)) bool terminal_trouvee = false;
{ foreach(QDomElement qde, liste_terminals) {
for(auto qde : liste_terminals) if (p -> fromXml(qde)) {
{ priv_id_adr.insert(
if (terminal_ -> fromXml(qde)) qde.attribute(
{ "id").toInt(),
priv_id_adr.insert(qde.attribute(QStringLiteral("id")).toInt(), p);
terminal_); terminal_trouvee = true;
// We used to break here, because we did not expect
// several terminals to share the same position.
// Of course, it finally happened.
} }
} }
if (!terminal_trouvee) ++ terminals_non_trouvees;
} }
} }
if (terminals_non_trouvees > 0)
//Check that associated id/adress doesn't conflict with table_id_adr
for(auto found_id : priv_id_adr.keys())
{ {
if (table_id_adr.contains(found_id)) m_state = QET::GIOK;
return(false);
}
else
{ {
//This element got an id who is already referenced (= conflict) // verifie que les associations id / adr n'entrent pas en conflit avec table_id_adr
foreach(int id_trouve, priv_id_adr.keys())
{
if (table_id_adr.contains(id_trouve))
{
// cet element possede un id qui est deja reference (= conflit)
m_state = QET::GIOK; m_state = QET::GIOK;
return(false); return(false);
} }
} }
// copie des associations id / adr
//Copie the association id/adress foreach(int id_trouve, priv_id_adr.keys()) {
for(auto found_id : priv_id_adr.keys()) { table_id_adr.insert(id_trouve,
table_id_adr.insert(found_id, priv_id_adr.value(id_trouve));
priv_id_adr.value(found_id)); }
} }
//load uuid of connected elements //load uuid of connected elements

View File

@@ -120,19 +120,8 @@ QETProject::QETProject(KAutoSaveFile *backup, QObject *parent) :
*/ */
QETProject::~QETProject() QETProject::~QETProject()
{ {
//Each time a diagram is deleted we also remove it from m_diagram_list for (auto diagram : m_diagrams_list)
//because a lot of thing append during the destructor of a diagram class
//and one of these thing (not directly in the destructor of the diagram
//but in another destructor called by the diagram destructor)
//is to get the diagram list of the project to make some updates @see QList<Diagram *> QETProject::diagrams() const.
//So we need to remove the freshly deleted diagram from the list
//in each iteration of the loop to avoid the use of a dangling pointer.
const auto diag_list = m_diagrams_list;
for (const auto &diagram : diag_list)
{
delete diagram; delete diagram;
m_diagrams_list.removeOne(diagram);
}
} }
/** /**
@@ -170,7 +159,7 @@ void QETProject::init()
writeBackup(); writeBackup();
QSettings settings; QSettings settings;
int autosave_interval = settings.value(QStringLiteral("diagrameditor/autosave-interval"), 0).toInt(); int autosave_interval = settings.value("diagrameditor/autosave-interval", 0).toInt();
if(autosave_interval > 0) if(autosave_interval > 0)
{ {
int ms = autosave_interval*60*1000; int ms = autosave_interval*60*1000;
@@ -1291,13 +1280,13 @@ void QETProject::readProjectXml(QDomDocument &xml_project)
m_state = ProjectParsingRunning; m_state = ProjectParsingRunning;
//The roots of the xml document must be a "project" element //The roots of the xml document must be a "project" element
if (root_elmt.tagName() == QLatin1String("project")) if (root_elmt.tagName() == "project")
{ {
//Normal opening mode //Normal opening mode
if (root_elmt.hasAttribute(QStringLiteral("version"))) if (root_elmt.hasAttribute("version"))
{ {
bool conv_ok; bool conv_ok;
m_project_qet_version = root_elmt.attribute(QStringLiteral("version")).toDouble(&conv_ok); m_project_qet_version = root_elmt.attribute("version").toDouble(&conv_ok);
#if TODO_LIST #if TODO_LIST
#pragma message("@TODO use of version convert") #pragma message("@TODO use of version convert")
#endif #endif
@@ -1323,7 +1312,7 @@ void QETProject::readProjectXml(QDomDocument &xml_project)
} }
} }
} }
setTitle(root_elmt.attribute(QStringLiteral("title"))); setTitle(root_elmt.attribute("title"));
} }
else else
{ {
@@ -1373,7 +1362,7 @@ void QETProject::readDiagramsXml(QDomDocument &xml_project)
} }
//Search the diagrams in the project //Search the diagrams in the project
QDomNodeList diagram_nodes = xml_project.elementsByTagName(QStringLiteral("diagram")); QDomNodeList diagram_nodes = xml_project.elementsByTagName("diagram");
if(dlgWaiting) if(dlgWaiting)
dlgWaiting->setProgressBarRange(0, diagram_nodes.length()*3); dlgWaiting->setProgressBarRange(0, diagram_nodes.length()*3);
@@ -1392,7 +1381,7 @@ void QETProject::readDiagramsXml(QDomDocument &xml_project)
int diagram_order = -1; int diagram_order = -1;
if (!QET::attributeIsAnInteger(diagram_xml_element, if (!QET::attributeIsAnInteger(diagram_xml_element,
QStringLiteral("order"), "order",
&diagram_order)) &diagram_order))
diagram_order = 500000; diagram_order = 500000;
@@ -1435,7 +1424,7 @@ void QETProject::readDiagramsXml(QDomDocument &xml_project)
void QETProject::readElementsCollectionXml(QDomDocument &xml_project) void QETProject::readElementsCollectionXml(QDomDocument &xml_project)
{ {
//Get the embedded elements collection of the project //Get the embedded elements collection of the project
QDomNodeList collection_roots = xml_project.elementsByTagName(QStringLiteral("collection")); QDomNodeList collection_roots = xml_project.elementsByTagName("collection");
QDomElement collection_root; QDomElement collection_root;
if (!collection_roots.isEmpty()) if (!collection_roots.isEmpty())
@@ -1460,8 +1449,8 @@ void QETProject::readElementsCollectionXml(QDomDocument &xml_project)
*/ */
void QETProject::readProjectPropertiesXml(QDomDocument &xml_project) void QETProject::readProjectPropertiesXml(QDomDocument &xml_project)
{ {
for (auto dom_elmt : QET::findInDomElement(xml_project.documentElement(), QStringLiteral("properties"))) foreach (QDomElement e, QET::findInDomElement(xml_project.documentElement(), "properties"))
m_project_properties.fromXml(dom_elmt); m_project_properties.fromXml(e);
} }
/** /**
@@ -1473,7 +1462,7 @@ void QETProject::readProjectPropertiesXml(QDomDocument &xml_project)
void QETProject::readDefaultPropertiesXml(QDomDocument &xml_project) void QETProject::readDefaultPropertiesXml(QDomDocument &xml_project)
{ {
// Find xml element where is stored properties for new diagram // Find xml element where is stored properties for new diagram
QDomNodeList newdiagrams_nodes = xml_project.elementsByTagName(QStringLiteral("newdiagrams")); QDomNodeList newdiagrams_nodes = xml_project.elementsByTagName("newdiagrams");
if (newdiagrams_nodes.isEmpty()) return; if (newdiagrams_nodes.isEmpty()) return;
QDomElement newdiagrams_elmt = newdiagrams_nodes.at(0).toElement(); QDomElement newdiagrams_elmt = newdiagrams_nodes.at(0).toElement();
@@ -1493,21 +1482,21 @@ void QETProject::readDefaultPropertiesXml(QDomDocument &xml_project)
QDomElement child_elmt = child.toElement(); QDomElement child_elmt = child.toElement();
if (child_elmt.isNull()) continue; if (child_elmt.isNull()) continue;
if (child_elmt.tagName() == QLatin1String("border")) if (child_elmt.tagName() == "border")
border_elmt = child_elmt; border_elmt = child_elmt;
else if (child_elmt.tagName() == QLatin1String("inset")) else if (child_elmt.tagName() == "inset")
titleblock_elmt = child_elmt; titleblock_elmt = child_elmt;
else if (child_elmt.tagName() == QLatin1String("conductors")) else if (child_elmt.tagName() == "conductors")
conductors_elmt = child_elmt; conductors_elmt = child_elmt;
else if (child_elmt.tagName() == QLatin1String("report")) else if (child_elmt.tagName() == "report")
report_elmt = child_elmt; report_elmt = child_elmt;
else if (child_elmt.tagName() == QLatin1String("xrefs")) else if (child_elmt.tagName() == "xrefs")
xref_elmt = child_elmt; xref_elmt = child_elmt;
else if (child_elmt.tagName() == QLatin1String("conductors_autonums")) else if (child_elmt.tagName() == "conductors_autonums")
conds_autonums = child_elmt; conds_autonums = child_elmt;
else if (child_elmt.tagName()== QLatin1String("folio_autonums")) else if (child_elmt.tagName()== "folio_autonums")
folio_autonums = child_elmt; folio_autonums = child_elmt;
else if (child_elmt.tagName()== QLatin1String("element_autonums")) else if (child_elmt.tagName()== "element_autonums")
element_autonums = child_elmt; element_autonums = child_elmt;
} }
@@ -1515,21 +1504,21 @@ void QETProject::readDefaultPropertiesXml(QDomDocument &xml_project)
if (!border_elmt.isNull()) default_border_properties_.fromXml(border_elmt); if (!border_elmt.isNull()) default_border_properties_.fromXml(border_elmt);
if (!titleblock_elmt.isNull()) default_titleblock_properties_.fromXml(titleblock_elmt); if (!titleblock_elmt.isNull()) default_titleblock_properties_.fromXml(titleblock_elmt);
if (!conductors_elmt.isNull()) default_conductor_properties_.fromXml(conductors_elmt); if (!conductors_elmt.isNull()) default_conductor_properties_.fromXml(conductors_elmt);
if (!report_elmt.isNull()) setDefaultReportProperties(report_elmt.attribute(QStringLiteral("label"))); if (!report_elmt.isNull()) setDefaultReportProperties(report_elmt.attribute("label"));
if (!xref_elmt.isNull()) if (!xref_elmt.isNull())
{ {
for (auto elmt : QET::findInDomElement(xref_elmt, QStringLiteral("xref"))) foreach(QDomElement elmt, QET::findInDomElement(xref_elmt, "xref"))
{ {
XRefProperties xrp; XRefProperties xrp;
xrp.fromXml(elmt); xrp.fromXml(elmt);
m_default_xref_properties.insert(elmt.attribute(QStringLiteral("type")), xrp); m_default_xref_properties.insert(elmt.attribute("type"), xrp);
} }
} }
if (!conds_autonums.isNull()) if (!conds_autonums.isNull())
{ {
m_current_conductor_autonum = conds_autonums.attribute(QStringLiteral("current_autonum")); m_current_conductor_autonum = conds_autonums.attribute("current_autonum");
m_freeze_new_conductors = conds_autonums.attribute(QStringLiteral("freeze_new_conductors")) == QLatin1String("true"); m_freeze_new_conductors = conds_autonums.attribute("freeze_new_conductors") == "true";
for (auto elmt : QET::findInDomElement(conds_autonums, QStringLiteral("conductor_autonum"))) foreach (QDomElement elmt, QET::findInDomElement(conds_autonums, "conductor_autonum"))
{ {
NumerotationContext nc; NumerotationContext nc;
nc.fromXml(elmt); nc.fromXml(elmt);
@@ -1538,22 +1527,22 @@ void QETProject::readDefaultPropertiesXml(QDomDocument &xml_project)
} }
if (!folio_autonums.isNull()) if (!folio_autonums.isNull())
{ {
for (auto elmt : QET::findInDomElement(folio_autonums, QStringLiteral("folio_autonum"))) foreach (QDomElement elmt, QET::findInDomElement(folio_autonums, "folio_autonum"))
{ {
NumerotationContext nc; NumerotationContext nc;
nc.fromXml(elmt); nc.fromXml(elmt);
m_folio_autonum.insert(elmt.attribute(QStringLiteral("title")), nc); m_folio_autonum.insert(elmt.attribute("title"), nc);
} }
} }
if (!element_autonums.isNull()) if (!element_autonums.isNull())
{ {
m_current_element_autonum = element_autonums.attribute(QStringLiteral("current_autonum")); m_current_element_autonum = element_autonums.attribute("current_autonum");
m_freeze_new_elements = element_autonums.attribute(QStringLiteral("freeze_new_elements")) == QLatin1String("true"); m_freeze_new_elements = element_autonums.attribute("freeze_new_elements") == "true";
for (auto elmt : QET::findInDomElement(element_autonums, QStringLiteral("element_autonum"))) foreach (QDomElement elmt, QET::findInDomElement(element_autonums, "element_autonum"))
{ {
NumerotationContext nc; NumerotationContext nc;
nc.fromXml(elmt); nc.fromXml(elmt);
m_element_autonum.insert(elmt.attribute(QStringLiteral("title")), nc); m_element_autonum.insert(elmt.attribute("title"), nc);
} }
} }
} }

View File

@@ -152,7 +152,8 @@ void AboutQETDialog::setVersion()
QString str = "<span style=\"font-weight:bold;font-size:16pt;\">QElectroTech V " QString str = "<span style=\"font-weight:bold;font-size:16pt;\">QElectroTech V "
+ QET::displayedVersion + QET::displayedVersion
+ "</span>"; + "</span>";
ui->m_version_label->setText(str + MachineInfo::instance()->compilation_info()); Machine_info *my_ma =new Machine_info(this);
ui->m_version_label->setText(str + my_ma->compilation_info());
} }
/** /**