Conductor Autonum now works with variables. Folio Autonumberings added to conductor autonum

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4674 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
dfochi 2016-08-29 15:37:42 +00:00
parent 342b69b210
commit 230700f845
31 changed files with 604 additions and 157 deletions

View File

@ -121,6 +121,5 @@ void ConductorAutoNumerotation::numerateNewConductor() {
if (context.isEmpty()) return;
NumerotationContextCommands ncc (context, m_diagram);
applyText(ncc.toRepresentedString());
m_diagram->project()->addConductorAutoNum(m_diagram -> conductorsAutonumName(), ncc.next());
applyText(m_diagram->project()->conductorAutoNumCurrentFormula());
}

View File

@ -367,6 +367,15 @@ QString ConductorProperties::typeToString(ConductorType t) {
}
}
/**
* @brief ConductorProperties::setText
* This method sets the current conductor text
* @param text to be setted
*/
void ConductorProperties::setText(QString text) {
text = text;
}
/**
* @brief ConductorProperties::defaultProperties
* @return the default properties stored in the setting file

View File

@ -96,6 +96,7 @@ class ConductorProperties
void toSettings(QSettings &, const QString & = QString()) const;
void fromSettings(QSettings &, const QString & = QString());
static QString typeToString(ConductorType);
void setText(QString);
static ConductorProperties defaultProperties();

View File

@ -206,7 +206,7 @@ void NewDiagramPage::setFolioAutonum(QString autoNum){
/**
* @brief NewDiagramPage::saveCurrentTbp
* Save current TBP to retrieve after auto folio num
* Save current TBP to retrieve after auto folio num
*/
void NewDiagramPage::saveCurrentTbp(){
savedTbp = ipw->properties();

View File

@ -82,6 +82,7 @@ Diagram::Diagram(QETProject *project) :
connect(&border_and_titleblock, SIGNAL(borderChanged(QRectF,QRectF)), this, SLOT(adjustSceneRect()));
connect(&border_and_titleblock, SIGNAL(titleBlockFolioChanged(const QString &)), this, SLOT(updateLabels()));
connect(this, SIGNAL (diagramActivated()), this, SLOT(loadElmtFolioSeq()));
connect(this, SIGNAL (diagramActivated()), this, SLOT(loadCndFolioSeq()));
adjustSceneRect();
}
@ -477,25 +478,46 @@ QDomDocument Diagram::toXml(bool whole_content) {
//Default New Element
racine.setAttribute("freezeNewElement", m_freeze_new_elements_ ? "true" : "false");
//Folio Sequential Variables
//Element Folio Sequential Variables
if (!m_elmt_unitfolio_max.isEmpty() || !m_elmt_tenfolio_max.isEmpty() || !m_elmt_hundredfolio_max.isEmpty()) {
QDomElement folioContainedAutonum = document.createElement("elementautonumfoliosequentials");
QDomElement elmtfoliosequential = document.createElement("elementautonumfoliosequentials");
if (!m_elmt_unitfolio_max.isEmpty()) {
QDomElement elmtfolioseq = document.createElement("elementunitfolioseq");
elementFolioSequentialsToXml(&m_elmt_unitfolio_max, &elmtfolioseq, "sequf_", "unitfolioseq", &document);
folioContainedAutonum.appendChild(elmtfolioseq);
folioSequentialsToXml(&m_elmt_unitfolio_max, &elmtfolioseq, "sequf_", "unitfolioseq", &document);
elmtfoliosequential.appendChild(elmtfolioseq);
}
if (!m_elmt_tenfolio_max.isEmpty()) {
QDomElement elmtfolioseq = document.createElement("elementtenfolioseq");
elementFolioSequentialsToXml(&m_elmt_tenfolio_max, &elmtfolioseq, "seqtf_", "tenfolioseq", &document);
folioContainedAutonum.appendChild(elmtfolioseq);
folioSequentialsToXml(&m_elmt_tenfolio_max, &elmtfolioseq, "seqtf_", "tenfolioseq", &document);
elmtfoliosequential.appendChild(elmtfolioseq);
}
if (!m_elmt_hundredfolio_max.isEmpty()) {
QDomElement elmtfolioseq = document.createElement("elementhundredfolioseq");
elementFolioSequentialsToXml(&m_elmt_hundredfolio_max, &elmtfolioseq, "seqhf_", "hundredfolioseq", &document);
folioContainedAutonum.appendChild(elmtfolioseq);
folioSequentialsToXml(&m_elmt_hundredfolio_max, &elmtfolioseq, "seqhf_", "hundredfolioseq", &document);
elmtfoliosequential.appendChild(elmtfolioseq);
}
racine.appendChild(folioContainedAutonum);
racine.appendChild(elmtfoliosequential);
}
//Conductor Folio Sequential Variables
if (!m_cnd_unitfolio_max.isEmpty() || !m_cnd_tenfolio_max.isEmpty() || !m_cnd_hundredfolio_max.isEmpty()) {
QDomElement cndfoliosequential = document.createElement("conductorautonumfoliosequentials");
QHash<QString, QStringList>::iterator i;
if (!m_cnd_unitfolio_max.isEmpty()) {
QDomElement cndfolioseq = document.createElement("conductorunitfolioseq");
folioSequentialsToXml(&m_cnd_unitfolio_max, &cndfolioseq, "sequf_", "unitfolioseq", &document);
cndfoliosequential.appendChild(cndfolioseq);
}
if (!m_cnd_tenfolio_max.isEmpty()) {
QDomElement cndfolioseq = document.createElement("conductortenfolioseq");
folioSequentialsToXml(&m_cnd_tenfolio_max, &cndfolioseq, "seqtf_", "tenfolioseq", &document);
cndfoliosequential.appendChild(cndfolioseq);
}
if (!m_cnd_hundredfolio_max.isEmpty()) {
QDomElement cndfolioseq = document.createElement("conductorhundredfolioseq");
folioSequentialsToXml(&m_cnd_hundredfolio_max, &cndfolioseq, "seqhf_", "hundredfolioseq", &document);
cndfoliosequential.appendChild(cndfolioseq);
}
racine.appendChild(cndfoliosequential);
}
}
else {
@ -594,13 +616,13 @@ QDomDocument Diagram::toXml(bool whole_content) {
}
/**
+ * @brief Diagram::elementFolioSequentialsToXml
+ * Add element folio sequential to QDomElement
+ * @brief Diagram::folioSequentialsToXml
+ * Add folio sequential to QDomElement
+ * @param domElement to add attributes
+ * @param hash to retrieve content with content
+ * @param sequential type
+ */
void Diagram::elementFolioSequentialsToXml(QHash<QString, QStringList> *hash, QDomElement *domElement, QString seq_type, QString type, QDomDocument *doc) {
void Diagram::folioSequentialsToXml(QHash<QString, QStringList> *hash, QDomElement *domElement, QString seq_type, QString type, QDomDocument *doc) {
QHash<QString, QStringList>::iterator i;
for (i = hash->begin(); i != hash->end(); i++) {
QDomElement folioseq = doc->createElement(type);
@ -702,9 +724,15 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
// Load Freeze New Element
m_freeze_new_elements_ = root.attribute("freezeNewElement").toInt();
elementFolioSequentialsFromXml(root, &m_elmt_unitfolio_max, "elementunitfolioseq","sequf_","unitfolioseq");
elementFolioSequentialsFromXml(root, &m_elmt_tenfolio_max, "elementtenfolioseq","seqtf_", "tenfolioseq");
elementFolioSequentialsFromXml(root, &m_elmt_hundredfolio_max, "elementhundredfolioseq","seqhf_", "hundredfolioseq");
//Load Element Folio Sequential
folioSequentialsFromXml(root, &m_elmt_unitfolio_max, "elementunitfolioseq","sequf_","unitfolioseq", "elementautonumfoliosequentials");
folioSequentialsFromXml(root, &m_elmt_tenfolio_max, "elementtenfolioseq","seqtf_", "tenfolioseq", "elementautonumfoliosequentials");
folioSequentialsFromXml(root, &m_elmt_hundredfolio_max, "elementhundredfolioseq","seqhf_", "hundredfolioseq", "elementautonumfoliosequentials");
//Load Conductor Folio Sequential
folioSequentialsFromXml(root, &m_cnd_unitfolio_max, "conductorunitfolioseq","sequf_","unitfolioseq", "conductorautonumfoliosequentials");
folioSequentialsFromXml(root, &m_cnd_tenfolio_max, "conductortenfolioseq","seqtf_","tenfolioseq", "conductorautonumfoliosequentials");
folioSequentialsFromXml(root, &m_cnd_hundredfolio_max, "conductorhundredfolioseq","seqhf_","hundredfolioseq", "conductorautonumfoliosequentials");
}
// if child haven't got a child, loading is finish (diagram is empty)
@ -879,16 +907,16 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
}
/**
* @brief Diagram::elementFolioSequentialsFromXml
* Load element folio sequential from QDomElement
* @brief Diagram::folioSequentialsFromXml
* Load folio sequential from QDomElement
* @param root containing all folio sequentials
* @param hash to be loaded with content
* @param folioSeq type
* @param seq type
* @param type of sequential
*/
void Diagram::elementFolioSequentialsFromXml(const QDomElement &root, QHash<QString, QStringList>* hash, QString folioSeq, QString seq, QString type) {
foreach (QDomElement folioSeqAutoNum, QET::findInDomElement(root, "elementautonumfoliosequentials", folioSeq)) {
void Diagram::folioSequentialsFromXml(const QDomElement &root, QHash<QString, QStringList>* hash, QString folioSeq, QString seq, QString type, QString autonumFolioSeqType) {
foreach (QDomElement folioSeqAutoNum, QET::findInDomElement(root, autonumFolioSeqType, folioSeq)) {
for(QDomElement folioseq = folioSeqAutoNum.firstChildElement(type); !folioseq.isNull(); folioseq = folioseq.nextSiblingElement(type)) {
QString title = folioseq.attribute("title");
QStringList list;
@ -1154,22 +1182,19 @@ void Diagram::updateLabels() {
* @param type to be treated
* @param Numerotation Context to be manipulated
*/
void Diagram::insertFolioSeqHash(QHash<QString, QStringList> *hash, QString title, QString seq, QString type, NumerotationContext *nc) {
if (project()->elementAutoNumFormula().contains(seq)) {
QStringList max;
for (int i = 0; i < nc->size(); i++) {
if (nc->itemAt(i).at(0) == type) {
nc->replaceValue(i, QString::number(nc->itemAt(i).at(3).toInt()));
max.append(QString::number(nc->itemAt(i).at(3).toInt() - nc->itemAt(i).at(2).toInt()));
}
void Diagram::insertFolioSeqHash(QHash<QString, QStringList> *hash, QString title, QString type, NumerotationContext *nc) {
QStringList max;
for (int i = 0; i < nc->size(); i++) {
if (nc->itemAt(i).at(0) == type) {
nc->replaceValue(i, QString::number(nc->itemAt(i).at(3).toInt()));
max.append(QString::number(nc->itemAt(i).at(3).toInt() - nc->itemAt(i).at(2).toInt()));
}
hash->insert(title,max);
project()->addElementAutoNum(title,*nc);
}
hash->insert(title,max);
}
/**
* @brief Diagram::loadElmtFolioSeqHash
* @brief Diagram::loadFolioSeqHash
* This class loads all folio sequential variables
* related to the current autonum
* @param Hash to be accessed
@ -1178,8 +1203,7 @@ void Diagram::insertFolioSeqHash(QHash<QString, QStringList> *hash, QString titl
* @param type to be treated
* @param Numerotation Context to be manipulated
*/
void Diagram::loadElmtFolioSeqHash(QHash<QString, QStringList> *hash, QString title, QString seq, QString type, NumerotationContext *nc) {
if (project()->elementAutoNumFormula().contains(seq)) {
void Diagram::loadFolioSeqHash(QHash<QString, QStringList> *hash, QString title, QString type, NumerotationContext *nc) {
int j = 0;
for (int i = 0; i < nc->size(); i++) {
if (nc->itemAt(i).at(0) == type) {
@ -1189,8 +1213,6 @@ void Diagram::loadElmtFolioSeqHash(QHash<QString, QStringList> *hash, QString ti
j++;
}
}
project()->addElementAutoNum(title,*nc);
}
}
/**
@ -1199,35 +1221,114 @@ void Diagram::loadElmtFolioSeqHash(QHash<QString, QStringList> *hash, QString ti
* to the current autonum
*/
void Diagram::loadElmtFolioSeq() {
//Element
QString title = project()->elementCurrentAutoNum();
NumerotationContext nc = project()->elementAutoNum(title);
//Unit Folio
if (m_elmt_unitfolio_max.isEmpty() || !m_elmt_unitfolio_max.contains(title)) {
//Insert Initial Value
insertFolioSeqHash(&m_elmt_unitfolio_max,title,"%sequf_","unitfolio",&nc);
if (project()->elementAutoNumCurrentFormula().contains("%sequf_")) {
insertFolioSeqHash(&m_elmt_unitfolio_max,title,"unitfolio",&nc);
project()->addElementAutoNum(title,nc);
}
}
else if (m_elmt_unitfolio_max.contains(title)) {
//Load Folio Current Value
loadElmtFolioSeqHash(&m_elmt_unitfolio_max,title,"%sequf_","unitfolio",&nc);
if (project()->elementAutoNumCurrentFormula().contains("%sequf_")) {
loadFolioSeqHash(&m_elmt_unitfolio_max,title,"unitfolio",&nc);
project()->addElementAutoNum(title,nc);
}
}
//Ten Folio
if (m_elmt_tenfolio_max.isEmpty() || !m_elmt_tenfolio_max.contains(title)) {
//Insert Initial Value
insertFolioSeqHash(&m_elmt_tenfolio_max,title,"%seqtf_","tenfolio",&nc);
if (project()->elementAutoNumCurrentFormula().contains("%seqtf_")) {
insertFolioSeqHash(&m_elmt_tenfolio_max,title,"tenfolio",&nc);
project()->addElementAutoNum(title,nc);
}
}
else if (m_elmt_tenfolio_max.contains(title)) {
//Load Folio Current Value
loadElmtFolioSeqHash(&m_elmt_tenfolio_max,title,"%seqtf_","tenfolio",&nc);
if (project()->elementAutoNumCurrentFormula().contains("%seqtf_")) {
loadFolioSeqHash(&m_elmt_tenfolio_max,title,"tenfolio",&nc);
project()->addElementAutoNum(title,nc);
}
}
//Hundred Folio
if (m_elmt_hundredfolio_max.isEmpty() || !m_elmt_hundredfolio_max.contains(title)) {
//Insert Initial Value
insertFolioSeqHash(&m_elmt_hundredfolio_max,title,"%seqhf_","hundredfolio",&nc);
if (project()->elementAutoNumCurrentFormula().contains("%seqhf_")) {
insertFolioSeqHash(&m_elmt_hundredfolio_max,title,"hundredfolio",&nc);
project()->addElementAutoNum(title,nc);
}
}
else if (m_elmt_hundredfolio_max.contains(title)) {
//Load Folio Current Value
loadElmtFolioSeqHash(&m_elmt_hundredfolio_max,title,"%seqhf_","hundredfolio",&nc);
if (project()->elementAutoNumCurrentFormula().contains("%seqhf_")) {
loadFolioSeqHash(&m_elmt_hundredfolio_max,title,"hundredfolio",&nc);
project()->addElementAutoNum(title,nc);
}
}
}
/**
* @brief Diagram::loadCndFolioSeq
* This class loads all conductor folio sequential variables related
* to the current autonum
*/
void Diagram::loadCndFolioSeq() {
//Conductor
QString title = project()->conductorCurrentAutoNum();
NumerotationContext nc = project()->conductorAutoNum(title);
//Unit Folio
if (m_cnd_unitfolio_max.isEmpty() || !m_cnd_unitfolio_max.contains(title)) {
//Insert Initial Value
if (project()->conductorAutoNumCurrentFormula().contains("%sequf_")) {
insertFolioSeqHash(&m_cnd_unitfolio_max,title,"unitfolio",&nc);
project()->addConductorAutoNum(title,nc);
}
}
else if (m_cnd_unitfolio_max.contains(title)) {
//Load Folio Current Value
if (project()->conductorAutoNumCurrentFormula().contains("%sequf_")) {
loadFolioSeqHash(&m_cnd_unitfolio_max,title,"unitfolio",&nc);
project()->addConductorAutoNum(title,nc);
}
}
//Ten Folio
if (m_cnd_tenfolio_max.isEmpty() || !m_cnd_tenfolio_max.contains(title)) {
//Insert Initial Value
if (project()->conductorAutoNumCurrentFormula().contains("%seqtf_")) {
insertFolioSeqHash(&m_cnd_tenfolio_max,title,"tenfolio",&nc);
project()->addConductorAutoNum(title,nc);
}
}
else if (m_cnd_tenfolio_max.contains(title)) {
//Load Folio Current Value
if (project()->conductorAutoNumCurrentFormula().contains("%seqtf_")) {
loadFolioSeqHash(&m_cnd_tenfolio_max,title,"tenfolio",&nc);
project()->addConductorAutoNum(title,nc);
}
}
//Hundred Folio
if (m_cnd_hundredfolio_max.isEmpty() || !m_cnd_hundredfolio_max.contains(title)) {
//Insert Initial Value
if (project()->conductorAutoNumCurrentFormula().contains("%seqhf_")) {
insertFolioSeqHash(&m_cnd_hundredfolio_max,title,"hundredfolio",&nc);
project()->addConductorAutoNum(title,nc);
}
}
else if (m_cnd_hundredfolio_max.contains(title)) {
//Load Folio Current Value
if (project()->conductorAutoNumCurrentFormula().contains("%seqhf_")) {
loadFolioSeqHash(&m_cnd_hundredfolio_max,title,"hundredfolio",&nc);
project()->addConductorAutoNum(title,nc);
}
}
}

View File

@ -87,6 +87,10 @@ class Diagram : public QGraphicsScene
QHash <QString, QStringList> m_elmt_unitfolio_max;
QHash <QString, QStringList> m_elmt_tenfolio_max;
QHash <QString, QStringList> m_elmt_hundredfolio_max;
/// Hash containing max values for folio sequential autonums in this diagram
QHash <QString, QStringList> m_cnd_unitfolio_max;
QHash <QString, QStringList> m_cnd_tenfolio_max;
QHash <QString, QStringList> m_cnd_hundredfolio_max;
bool item_paste;
private:
@ -158,8 +162,8 @@ class Diagram : public QGraphicsScene
void write(const QDomElement &);
bool wasWritten() const;
QDomElement writeXml(QDomDocument &) const;
void elementFolioSequentialsToXml(QHash<QString, QStringList>*, QDomElement *, QString, QString, QDomDocument *);
void elementFolioSequentialsFromXml(const QDomElement&, QHash<QString, QStringList>*, QString, QString, QString);
void folioSequentialsToXml(QHash<QString, QStringList>*, QDomElement *, QString, QString, QDomDocument *);
void folioSequentialsFromXml(const QDomElement&, QHash<QString, QStringList>*, QString, QString, QString, QString);
// methods related to graphics items addition/removal on the diagram
void initElementsLinks();
@ -216,9 +220,10 @@ class Diagram : public QGraphicsScene
void unfreezeNew();
bool freezeNewElements();
//methods related to insertion and loading of element folio sequential
void insertFolioSeqHash (QHash<QString, QStringList> *hash, QString title, QString seq, QString type, NumerotationContext *nc);
void loadElmtFolioSeqHash (QHash<QString, QStringList> *hash, QString title, QString seq, QString type, NumerotationContext *nc);
//methods related to insertion and loading of folio sequential
void insertFolioSeqHash (QHash<QString, QStringList> *hash, QString title, QString seq, NumerotationContext *nc);
void loadFolioSeqHash (QHash<QString, QStringList> *hash, QString title, QString seq, NumerotationContext *nc);
public slots:
void adjustSceneRect ();
@ -229,6 +234,7 @@ class Diagram : public QGraphicsScene
void setTitleBlockTemplate(const QString &);
void updateLabels();
void loadElmtFolioSeq();
void loadCndFolioSeq();
// methods related to graphics items selection
void selectAll();

View File

@ -231,6 +231,7 @@ void DiagramEventAddElement::addElement()
//Autonum the new conductor, the undo command associated for this, have for parent undo_object
ConductorAutoNumerotation can (conductor, m_diagram, undo_object);
can.numerate();
conductor->setSeq = true;
};
m_diagram -> undoStack().push(undo_object);
element->setSequential();

View File

@ -83,6 +83,7 @@ DiagramView::DiagramView(Diagram *diagram, QWidget *parent) :
adjustSceneRect();
updateWindowTitle();
scene->loadElmtFolioSeq();
scene->loadCndFolioSeq();
context_menu = new QMenu(this);
paste_here = new QAction(QET::Icons::EditPaste, tr("Coller ici", "context menu action"), this);

View File

@ -178,6 +178,7 @@ void ElementsMover::endMovement()
//Autonum the new conductor, the undo command associated for this, have for parent undo_object
ConductorAutoNumerotation can (conductor, diagram_, undo_object);
can.numerate();
conductor->setSeq = true;
}
};
}

View File

@ -445,7 +445,7 @@ IdFolioNum::IdFolioNum (Diagram *d):
*/
QString IdFolioNum::toRepresentedString(const QString str) const {
Q_UNUSED(str);
return (QString::number(diagram_ -> folioIndex() + 1));
return ("%id");
}
/**

View File

@ -28,7 +28,7 @@
#include "selectautonumw.h"
#include "numerotationcontext.h"
#include "folioautonumbering.h"
#include "elementautonumberingw.h"
#include "formulaautonumberingw.h"
#include "autonumberingmanagementw.h"
#include "ui_autonumberingmanagementw.h"
@ -483,15 +483,21 @@ void ProjectAutoNumConfigPage::saveContext_conductor() {
// With the the name "No name"
if (m_context_cb_conductor-> currentText() == tr("Nom de la nouvelle numérotation")) {
project_->addConductorAutoNum (tr("Sans nom"), m_saw_conductor -> toNumContext());
project()->addConductorAutoNumFormula (tr("Sans nom"), m_saw_conductor->formula()); //add hash <title, formula>
project()->setConductorAutoNumCurrentFormula (m_saw_conductor->formula(),tr("Sans nom")); //add last added conductor formula to current formula
m_context_cb_conductor-> addItem(tr("Sans nom"));
}
// If the text isn't yet to the autonum of the project, add this new item to the combo box.
else if ( !project_ -> conductorAutoNum().keys().contains( m_context_cb_conductor->currentText())) {
project()->addConductorAutoNum(m_context_cb_conductor->currentText(), m_saw_conductor->toNumContext());
project()->addConductorAutoNumFormula (m_context_cb_conductor->currentText(), m_saw_conductor->formula()); //add hash <title, formula>
project()->setConductorAutoNumCurrentFormula (m_saw_conductor->formula(),m_context_cb_conductor->currentText()); //add last added conductor formula to current formula
m_context_cb_conductor-> addItem(m_context_cb_conductor->currentText());
}
// Else, the text already exist in the autonum of the project, just update the context
else {
project()->addConductorAutoNumFormula (m_context_cb_conductor->currentText(), m_saw_conductor->formula()); //add hash <title, formula>
project()->setConductorAutoNumCurrentFormula (m_saw_conductor->formula(), m_context_cb_conductor->currentText()); //add last added conductor formula to current formula
project_->addConductorAutoNum (m_context_cb_conductor-> currentText(), m_saw_conductor -> toNumContext());
}
project()->conductorAutoNumAdded();
@ -530,22 +536,22 @@ void ProjectAutoNumConfigPage::saveContext_element() {
// With the the name "No name"
if (m_context_cb_element -> currentText() == tr("Nom de la nouvelle numérotation")) {
project_->addElementAutoNum (tr("Sans nom"), m_saw_element -> toNumContext());
project()->addElementAutoNumFormula (tr("Sans nom"), m_saw_element->elementFormula()); //add hash <title, formula>
project()->setElementAutoNumCurrentFormula (m_saw_element->elementFormula(),tr("Sans nom")); //add last added element formula to current formula
project()->addElementAutoNumFormula (tr("Sans nom"), m_saw_element->formula()); //add hash <title, formula>
project()->setElementAutoNumCurrentFormula (m_saw_element->formula(),tr("Sans nom")); //add last added element formula to current formula
m_context_cb_element -> addItem(tr("Sans nom"));
}
// If the text isn't yet to the autonum of the project, add this new item to the combo box.
else if ( !project_ -> elementAutoNum().keys().contains( m_context_cb_element->currentText())) {
project()->addElementAutoNum(m_context_cb_element->currentText(), m_saw_element->toNumContext()); //add hash <title, numcontext>
project()->addElementAutoNumFormula (m_context_cb_element->currentText(), m_saw_element->elementFormula()); //add hash <title, formula>
project()->setElementAutoNumCurrentFormula (m_saw_element->elementFormula(),m_context_cb_element->currentText()); //add last added element formula to current formula
project()->addElementAutoNumFormula (m_context_cb_element->currentText(), m_saw_element->formula()); //add hash <title, formula>
project()->setElementAutoNumCurrentFormula (m_saw_element->formula(),m_context_cb_element->currentText()); //add last added element formula to current formula
m_context_cb_element -> addItem(m_context_cb_element->currentText());
}
// Else, the text already exist in the autonum of the project, just update the context
else {
project_->addElementAutoNum (m_context_cb_element -> currentText(), m_saw_element -> toNumContext()); //add hash <title, numcontext>
project()->addElementAutoNumFormula (m_context_cb_element->currentText(), m_saw_element->elementFormula()); //add hash <title, formula>
project()->setElementAutoNumCurrentFormula (m_saw_element->elementFormula(), m_context_cb_element->currentText()); //add last added element formula to current formula
project()->addElementAutoNumFormula (m_context_cb_element->currentText(), m_saw_element->formula()); //add hash <title, formula>
project()->setElementAutoNumCurrentFormula (m_saw_element->formula(), m_context_cb_element->currentText()); //add last added element formula to current formula
}
project()->elementAutoNumAdded();
}
@ -705,11 +711,12 @@ void ProjectAutoNumConfigPage::changeToTab(int i){
void ProjectAutoNumConfigPage::tabChanged(int i){
if (i>=1){
if (tab_widget->currentIndex() == 4){
tab_widget->resize(480,tab_widget->height());
tab_widget->resize(520,tab_widget->height());
}
else {
tab_widget->resize(475,tab_widget->height());
else if (tab_widget->currentIndex() == 1 || tab_widget->currentIndex() == 2 ){
tab_widget->resize(495,tab_widget->height());
}
else tab_widget->resize(475,tab_widget->height());
}
else {
tab_widget->resize(850,tab_widget->height());

View File

@ -31,7 +31,7 @@ class SelectAutonumW;
class QComboBox;
class QPushButton;
class FolioAutonumberingW;
class ElementAutonumberingW;
class FormulaAutonumberingW;
class AutoNumberingManagementW;
class QTabWidget;
class QScrollArea;

View File

@ -898,6 +898,7 @@ void ProjectView::loadDiagrams() {
}
this->currentDiagram()->diagram()->loadElmtFolioSeq();
this->currentDiagram()->diagram()->loadCndFolioSeq();
// If project have the folios list, move it at the beginning of the project
if (m_project -> getFolioSheetsQuantity()) {

View File

@ -28,6 +28,7 @@
#include "conductorautonumerotation.h"
#include "conductorpropertiesdialog.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "numerotationcontextcommands.h"
#define PR(x) qDebug() << #x " = " << x;
@ -46,6 +47,7 @@ Conductor::Conductor(Terminal *p1, Terminal* p2) :
QGraphicsPathItem(0),
terminal1(p1),
terminal2(p2),
setSeq(true),
bMouseOver(false),
m_handler(10),
text_item(0),
@ -509,7 +511,7 @@ Diagram *Conductor::diagram() const {
return(qobject_cast<Diagram *>(scene()));
}
/**
/**4
@return le champ de texte associe a ce conducteur
*/
ConductorTextItem *Conductor::textItem() const {
@ -815,11 +817,36 @@ bool Conductor::fromXml(QDomElement &e) {
text_item -> fromXml(e);
ConductorProperties pr;
pr.fromXml(e);
//Load Sequential Values
loadSequential(&e,"sequ_",&seq_unit);
loadSequential(&e,"sequf_",&seq_unitfolio);
loadSequential(&e,"seqt_",&seq_ten);
loadSequential(&e,"seqtf_",&seq_tenfolio);
loadSequential(&e,"seqh_",&seq_hundred);
loadSequential(&e,"seqhf_",&seq_hundredfolio);
setProperties(pr);
return return_;
}
/**
Load Sequentials to display on conductor label
@param QDomElement to set Attributes
@param Qstring seq to be retrieved
@param QStringList list to be inserted values
*/
void Conductor::loadSequential(QDomElement* e, QString seq, QStringList* list) {
//Load Sequential Values
int i = 0;
while (!e->attribute(seq + QString::number(i+1)).isEmpty()) {
list->append(e->attribute(seq + QString::number(i+1)));
i++;
}
setSeq = false;
}
/**
Exporte les caracteristiques du conducteur sous forme d'une element XML.
@param d Le document XML a utiliser pour creer l'element XML
@ -847,6 +874,37 @@ QDomElement Conductor::toXml(QDomDocument &d, QHash<Terminal *, int> &table_adr_
e.appendChild(current_segment);
}
}
// Save Conductor sequential values to Xml
// Save Unit Sequential Values
for (int i = 0; i < seq_unit.size(); i++) {
e.setAttribute("sequ_" + QString::number(i+1),seq_unit.at(i));
}
// Save UnitFolio Sequential Values
for (int i = 0; i < seq_unitfolio.size(); i++) {
e.setAttribute("sequf_" + QString::number(i+1),seq_unitfolio.at(i));
}
// Save Ten Sequential Values
for (int i = 0; i < seq_ten.size(); i++) {
e.setAttribute("seqt_" + QString::number(i+1),seq_ten.at(i));
}
// Save TenFolio Sequential Values
for (int i = 0; i < seq_tenfolio.size(); i++) {
e.setAttribute("seqtf_" + QString::number(i+1),seq_tenfolio.at(i));
}
// Save Hundred Sequential Values
for (int i = 0; i < seq_hundred.size(); i++) {
e.setAttribute("seqh_" + QString::number(i+1),seq_hundred.at(i));
}
// Save Hundred Sequential Values
for (int i = 0; i < seq_hundredfolio.size(); i++) {
e.setAttribute("seqhf_" + QString::number(i+1),seq_hundredfolio.at(i));
}
// Export the properties and text
properties_. toXml(e);
@ -1205,6 +1263,7 @@ QString Conductor::assignVariables(QString label) {
//The check below was introduced to avoid crash caused by the addition of terminal elements
//Needs further debbugging.
if (diagram() == NULL) return label;
//Titleblock Variables
for (int i = 0; i < diagram()->border_and_titleblock.additionalFields().count(); i++)
{
@ -1234,9 +1293,138 @@ QString Conductor::assignVariables(QString label) {
label.replace("%F", diagram() -> border_and_titleblock.folio());
label.replace("%id", QString::number(diagram()->folioIndex()+1));
label.replace("%total", QString::number(diagram()->border_and_titleblock.folioTotal()));
label = assignSeq(label, this);
return label;
}
/**
* @brief Conductor::setSequential
* Set sequential values to conductor
*/
void Conductor::setSequential() {
if (diagram()==NULL) return;
QString conductor_currentAutoNum = diagram()->project()->conductorCurrentAutoNum();
QString formula = diagram()->project()->conductorAutoNumCurrentFormula();
QString label = this->text();
NumerotationContext nc = diagram()->project()->conductorAutoNum(conductor_currentAutoNum);
NumerotationContextCommands ncc (nc);
if (!nc.isEmpty()) {
if (label.contains("%sequ_"))
setSequentialToList(&seq_unit,&nc,"unit");
if (label.contains("%sequf_")) {
setSequentialToList(&seq_unitfolio,&nc,"unitfolio");
setFolioSequentialToHash(&seq_unitfolio,&diagram()->m_cnd_unitfolio_max,conductor_currentAutoNum);
}
if (label.contains("%seqt_"))
setSequentialToList(&seq_ten,&nc,"ten");
if (label.contains("%seqtf_")) {
setSequentialToList(&seq_tenfolio,&nc,"tenfolio");
setFolioSequentialToHash(&seq_tenfolio,&diagram()->m_cnd_tenfolio_max,conductor_currentAutoNum);
}
if (label.contains("%seqh_"))
setSequentialToList(&seq_hundred,&nc,"hundred");
if (label.contains("%seqhf_")) {
setSequentialToList(&seq_hundredfolio,&nc,"hundredfolio");
setFolioSequentialToHash(&seq_hundredfolio,&diagram()->m_cnd_hundredfolio_max,conductor_currentAutoNum);
}
this->diagram()->project()->addConductorAutoNum(conductor_currentAutoNum,ncc.next());
}
}
/**
* @brief Conductor::setSequentialToList
* This class appends all sequential to selected list
* @param list to have values inserted
* @param nc to retrieve values from
* @param sequential type
*/
void Conductor::setSequentialToList(QStringList* list, NumerotationContext* nc, QString type) {
for (int i = 0; i < nc->size(); i++) {
if (nc->itemAt(i).at(0) == type) {
QString number;
if (type == "ten" || type == "tenfolio")
number = QString("%1").arg(nc->itemAt(i).at(1).toInt(), 2, 10, QChar('0'));
else if (type == "hundred" || type == "hundredfolio")
number = QString("%1").arg(nc->itemAt(i).at(1).toInt(), 3, 10, QChar('0'));
else number = QString::number(nc->itemAt(i).at(1).toInt());
list->append(number);
}
}
}
/**
* @brief Conductor::setFolioSequentialToHash
* This class inserts all conductors from list to hash
* @param list to retrieve values from
* @param hash to have values inserted
* @param current element autonum to insert on hash
*/
void Conductor::setFolioSequentialToHash(QStringList* list, QHash<QString, QStringList> *hash, QString conductor_currentAutoNum) {
if (hash->isEmpty() || (!(hash->contains(conductor_currentAutoNum)))) {
QStringList max;
for (int i = 0; i < list->size(); i++) {
max.append(list->at(i));
}
hash->insert(conductor_currentAutoNum,max);
}
else if (hash->contains(conductor_currentAutoNum)) {
//Load the String List and update it
QStringList max = hash->value(conductor_currentAutoNum);
for (int i = 0; i < list->size(); i++) {
if ((list->at(i).toInt()) > max.at(i).toInt()) {
max.replace(i,list->at(i));
hash->remove(conductor_currentAutoNum);
hash->insert(conductor_currentAutoNum,max);
}
}
}
}
/**
* @brief Conductor::assignSeq
* Replace sequential values to conductor label
* @param label to be replaced
* @return replaced label
*/
QString Conductor::assignSeq(QString label, Conductor* cnd) {
for (int i = 1; i <= qMax(qMax(qMax(cnd->seq_unitfolio.size(), cnd->seq_tenfolio.size()),qMax(cnd->seq_hundredfolio.size(),cnd->seq_unit.size())),qMax(cnd->seq_hundred.size(),cnd->seq_ten.size())); i++) {
if (label.contains("%sequ_" + QString::number(i)) && !cnd->seq_unit.isEmpty()) {
label.replace("%sequ_" + QString::number(i),cnd->seq_unit.at(i-1));
}
if (label.contains("%seqt_" + QString::number(i)) && !cnd->seq_ten.isEmpty()) {
label.replace("%seqt_" + QString::number(i),cnd->seq_ten.at(i-1));
}
if (label.contains("%seqh_" + QString::number(i)) && !cnd->seq_hundred.isEmpty()) {
label.replace("%seqh_" + QString::number(i),cnd->seq_hundred.at(i-1));
}
if (label.contains("%sequf_" + QString::number(i)) && !cnd->seq_unitfolio.isEmpty()) {
label.replace("%sequf_" + QString::number(i),cnd->seq_unitfolio.at(i-1));
}
if (label.contains("%seqtf_" + QString::number(i)) && !cnd->seq_tenfolio.isEmpty()) {
label.replace("%seqtf_" + QString::number(i),cnd->seq_tenfolio.at(i-1));
}
if (label.contains("%seqhf_" + QString::number(i)) && !cnd->seq_hundredfolio.isEmpty()) {
label.replace("%seqhf_" + QString::number(i),cnd->seq_hundredfolio.at(i-1));
}
}
return label;
}
/**
* @brief Conductor::setOthersSequential
* Copy sequentials from conductor in argument to this conductor
* @param conductor to copy sequentials from
*/
void Conductor::setOthersSequential(Conductor *other) {
QString conductor_currentAutoNum = other->diagram()->project()->conductorCurrentAutoNum();
NumerotationContext nc = other->diagram()->project()->conductorAutoNum(conductor_currentAutoNum);
seq_unit = other->seq_unit;
seq_unitfolio = other->seq_unitfolio;
seq_ten = other->seq_ten;
seq_tenfolio = other->seq_tenfolio;
seq_hundred = other->seq_hundred;
seq_hundredfolio = other->seq_hundredfolio;
}
/**
* @brief Conductor::setText
@ -1244,6 +1432,11 @@ QString Conductor::assignVariables(QString label) {
* @param t
*/
void Conductor::setText(const QString &t) {
text_item->setPlainText(t);
if (setSeq) {
setSequential();
setSeq = false;
}
QString label = assignVariables(t);
text_item -> setPlainText(label);
}
@ -1271,7 +1464,6 @@ void Conductor::setProperties(const ConductorProperties &properties)
other_properties.m_tension_protocol = properties_.m_tension_protocol;
other_conductor->setProperties(other_properties);
}
setText(properties_.text);
text_item -> setFontSize(properties_.text_size);
if (properties_.type != ConductorProperties::Multi)

View File

@ -30,6 +30,7 @@ class ConductorSegment;
class ConductorTextItem;
class Element;
class QETDiagramEditor;
class NumerotationContext;
typedef QPair<QPointF, Qt::Corner> ConductorBend;
typedef QHash<Qt::Corner, ConductorProfile> ConductorProfilesGroup;
/**
@ -94,6 +95,11 @@ class Conductor : public QObject, public QGraphicsPathItem
QString text() const;
QString assignVariables(QString) ;
void setText(const QString &);
QString assignSeq (QString, Conductor*);
void setSequential ();
void setOthersSequential (Conductor *);
void setSequentialToList(QStringList*, NumerotationContext*, QString);
void setFolioSequentialToHash(QStringList*, QHash<QString, QStringList>*, QString);
public:
static bool valideXml (QDomElement &);
@ -117,6 +123,14 @@ class Conductor : public QObject, public QGraphicsPathItem
QSet<Conductor *> relatedPotentialConductors(const bool all_diagram = true, QList <Terminal *> *t_list=0);
QETDiagramEditor* diagramEditor() const;
void editProperty ();
// Lists containing Sequentials
QStringList seq_unit;
QStringList seq_unitfolio;
QStringList seq_ten;
QStringList seq_tenfolio;
QStringList seq_hundred;
QStringList seq_hundredfolio;
bool setSeq;
public slots:
void displayedTextChanged();
@ -180,6 +194,7 @@ class Conductor : public QObject, public QGraphicsPathItem
static QPointF extendTerminal(const QPointF &, Qet::Orientation, qreal = 9.0);
static Qt::Corner movementType(const QPointF &, const QPointF &);
static QPointF movePointIntoPolygon(const QPointF &, const QPainterPath &);
void loadSequential(QDomElement* e, QString seq, QStringList* list);
};
Conductor * longuestConductorInPotential (Conductor *conductor, bool all_diagram = false);

View File

@ -309,9 +309,9 @@ void CustomElement::parseLabels() {
prefix = rxml.readElementText();
DiagramContext &dc = this->rElementInformations();
//if there is a formula to assign, assign it
if (!(location().project()->elementAutoNumFormula().isEmpty()) && (location().project()->elementAutoNumFormula() != "") &&
if (!(location().project()->elementAutoNumCurrentFormula().isEmpty()) && (location().project()->elementAutoNumCurrentFormula() != "") &&
(this->linkType()!=Element::Slave) && (this->linkType()!=Element::Terminale)) {
QString formula = location().project()->elementAutoNumFormula();
QString formula = location().project()->elementAutoNumCurrentFormula();
this->setPrefix(prefix);
dc.addValue("label", formula);
this->setTaggedText("label",formula);
@ -340,10 +340,10 @@ void CustomElement::parseLabels() {
//that are already specified in the element label (inside .elmt file). This method is not called if elements
//are being loaded at first time or being pasted
else if ((this->taggedText("label")!= NULL) && (location().projectId()!=-1) &&
(!location().project()->elementAutoNumFormula().isEmpty()) &&
(!location().project()->elementAutoNumCurrentFormula().isEmpty()) &&
(this->linkType()!=Element::Slave) && (this->linkType()!=Element::Terminale) &&
!this->diagram()->item_paste) {
QString formula = location().project()->elementAutoNumFormula();
QString formula = location().project()->elementAutoNumCurrentFormula();
DiagramContext &dc = this->rElementInformations();
QString prefix = this->taggedText("label")->toPlainText();
this->setPrefix(prefix);

View File

@ -772,7 +772,7 @@ QString Element::assignVariables(QString label, Element *elmt){
void Element::setSequential() {
DiagramContext &dc = this->rElementInformations();
QString element_currentAutoNum = diagram()->project()->elementCurrentAutoNum();
QString formula = diagram()->project()->elementAutoNumFormula();
QString formula = diagram()->project()->elementAutoNumCurrentFormula();
QString label = dc["label"].toString();
NumerotationContext nc = diagram()->project()->elementAutoNum(element_currentAutoNum);
NumerotationContextCommands ncc (nc);

View File

@ -21,6 +21,7 @@
#include "qetgraphicsitem/conductor.h"
#include "diagramcommands.h"
#include "conductorautonumerotation.h"
#include "conductortextitem.h"
QColor Terminal::neutralColor = QColor(Qt::blue);
QColor Terminal::allowedColor = QColor(Qt::darkGreen);
@ -594,25 +595,35 @@ void Terminal::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
{
use_properties = true;
others_properties = (*conductors_list.begin())->properties();
foreach (Conductor *conductor, conductors_list)
foreach (Conductor *conductor, conductors_list) {
if (conductor->properties() != others_properties)
use_properties = false;
}
}
QUndoCommand *undo = new AddItemCommand<Conductor *>(new_conductor, diagram());
if (use_properties)
if (use_properties) {
Conductor *other = conductors_list.toList().first();
new_conductor->setSeq = false;
new_conductor->setOthersSequential(other);
new_conductor->setProperties(others_properties);
}
else
{
//Autonum it
//Autonum it
ConductorAutoNumerotation can (new_conductor, diagram(), undo);
can.numerate();
new_conductor->setSeq = true;
}
//Add undo command to the parent diagram
//Add undo command to the parent diagram
diagram() -> undoStack().push(undo);
if (use_properties) {
Conductor *other = conductors_list.toList().first();
new_conductor->setText("");
new_conductor->setText(other->properties().text);
}
}
/**

View File

@ -424,6 +424,14 @@ QHash <QString, QString> QETProject::elementAutoNumHash() {
return m_element_autonum_formula;
}
/**
* @brief QETProject::conductorAutoNumHash
* @return Title and Formula Hash
*/
QHash <QString, QString> QETProject::conductorAutoNumHash() {
return m_conductor_autonum_formula;
}
/**
* @brief QETProject::elementAutoNumFormula
* @param element autonum title
@ -436,13 +444,32 @@ QString QETProject::elementAutoNumFormula (QString key) const {
}
/**
* @brief QETProject::elementAutoNumFormula
* @brief QETProject::conductorAutoNumFormula
* @param conductor autonum title
* @return Formula of element autonum stored in conductor autonum
*/
QString QETProject::conductorAutoNumFormula (QString key) const {
if (m_conductor_autonum.contains(key))
return m_conductor_autonum_formula[key];
else return "";
}
/**
* @brief QETProject::elementAutoNumCurrentFormula
* @return current formula being used by project
*/
QString QETProject::elementAutoNumFormula () const {
QString QETProject::elementAutoNumCurrentFormula() const {
return m_current_element_formula;
}
/**
* @brief QETProject::conductorAutoNumCurrentFormula
* @return current formula being used by project
*/
QString QETProject::conductorAutoNumCurrentFormula() const {
return m_current_conductor_formula;
}
/**
* @brief QETProject::elementCurrentAutoNum
* @return current element autonum title
@ -451,6 +478,14 @@ QString QETProject::elementCurrentAutoNum () const {
return m_current_element_autonum;
}
/**
* @brief QETProject::conductorCurrentAutoNum
* @return current element autonum title
*/
QString QETProject::conductorCurrentAutoNum () const {
return m_current_conductor_autonum;
}
/**
* @brief QETProject::folioAutoNum
* @return All value of folio autonum stored in project
@ -470,6 +505,26 @@ void QETProject::addConductorAutoNum(QString key, NumerotationContext context) {
m_conductor_autonum.insert(key, context);
}
/**
* @brief QETProject::addConductorAutoNumFormula
* Add the new formula
* @param formula
*/
void QETProject::addConductorAutoNumFormula(QString key, QString formula) {
m_conductor_autonum_formula.insert(key, formula);
}
/**
* @brief QETProject::setConductorAutoNumCurrentFormula
* Add the formula and title to the current formula and current autonum
* @param formula
* @param title
*/
void QETProject::setConductorAutoNumCurrentFormula(QString formula, QString title) {
m_current_conductor_formula = formula;
m_current_conductor_autonum = title;
}
/**
* @brief QETProject::addElementAutoNumFormula
* Add the new formula
@ -1049,7 +1104,7 @@ QList <Diagram *> QETProject::addNewDiagramFolioList() {
diagram_folio_list -> border_and_titleblock.importTitleBlock(defaultTitleBlockProperties());
diagram_folio_list -> defaultConductorProperties = defaultConductorProperties();
diagram_folio_list -> border_and_titleblock.setTitle(tr("Liste des Folios"));
diagram_folio_list -> border_and_titleblock.setTitle(tr("Liste des Folios"));
// no need to display rows and columns
diagram_folio_list -> border_and_titleblock.displayRows(false);
diagram_folio_list -> border_and_titleblock.displayColumns(false);
@ -1353,11 +1408,14 @@ void QETProject::readDefaultPropertiesXml(QDomDocument &xml_project)
}
if (!conds_autonums.isNull())
{
m_current_conductor_autonum = conds_autonums.attribute("current_autonum");
m_current_conductor_formula = conds_autonums.attribute("current_formula");
foreach (QDomElement elmt, QET::findInDomElement(conds_autonums, "conductor_autonum"))
{
NumerotationContext nc;
nc.fromXml(elmt);
m_conductor_autonum.insert(elmt.attribute("title"), nc);
m_conductor_autonum_formula.insert(elmt.attribute("title"),elmt.attribute("formula"));
}
}
if (!folio_autonums.isNull())
@ -1434,14 +1492,19 @@ void QETProject::writeDefaultPropertiesXml(QDomElement &xml_element) {
}
xml_element.appendChild(xrefs_elmt);
//Export conductors autonums
QDomElement conds_autonums = xml_document.createElement("conductors_autonums");
//Export Conductor Autonums
QDomElement conductor_autonums = xml_document.createElement("conductors_autonums");
conductor_autonums.setAttribute("current_autonum", m_current_conductor_autonum);
conductor_autonums.setAttribute("current_formula", m_current_conductor_formula);
foreach (QString key, conductorAutoNum().keys()) {
QDomElement cond_autonum = conductorAutoNum(key).toXml(xml_document, "conductor_autonum");
cond_autonum.setAttribute("title", key);
conds_autonums.appendChild(cond_autonum);
QDomElement conductor_autonum = conductorAutoNum(key).toXml(xml_document, "conductor_autonum");
if (key != "" && conductorAutoNumFormula(key) != "") {
conductor_autonum.setAttribute("title", key);
conductor_autonum.setAttribute("formula", conductorAutoNumFormula(key));
conductor_autonums.appendChild(conductor_autonum);
}
}
xml_element.appendChild(conds_autonums);
xml_element.appendChild(conductor_autonums);
//Export Folio Autonums
QDomElement folio_autonums = xml_document.createElement("folio_autonums");

View File

@ -109,8 +109,11 @@ class QETProject : public QObject
QHash <QString, NumerotationContext> conductorAutoNum() const;
QHash <QString, NumerotationContext> elementAutoNum() const;
QHash <QString, QString> elementAutoNumHash();
QHash <QString, QString> conductorAutoNumHash();
QHash <QString, NumerotationContext> folioAutoNum() const;
void addConductorAutoNum (QString key, NumerotationContext context);
void addConductorAutoNumFormula (QString key, QString formula);
void setConductorAutoNumCurrentFormula (QString formula, QString title);
void addElementAutoNum (QString key, NumerotationContext context);
void addElementAutoNumFormula (QString key, QString formula);
void setElementAutoNumCurrentFormula (QString formula, QString title);
@ -121,9 +124,14 @@ class QETProject : public QObject
NumerotationContext conductorAutoNum(const QString &key) const;
NumerotationContext folioAutoNum(const QString &key) const;
NumerotationContext elementAutoNum(const QString &key);
QString conductorAutoNumFormula(const QString key) const; //returns Formula
QString conductorAutoNumCurrentFormula() const;
QString conductorCurrentAutoNum() const;
QString elementAutoNumFormula(const QString key) const; //returns Formula
QString elementAutoNumFormula() const;
QString elementCurrentAutoNum () const;
QString elementAutoNumCurrentFormula() const;
QString elementCurrentAutoNum() const;
void freezeExistentElementLabel(int,int);
void freezeNewElementLabel(int,int);
@ -244,12 +252,15 @@ class QETProject : public QObject
/// undo stack for this project
QUndoStack *undo_stack_;
/// Conductor auto numerotation
QHash <QString, NumerotationContext> m_conductor_autonum;
QHash <QString, NumerotationContext> m_conductor_autonum;//Title and NumContext hash
QHash <QString, QString> m_conductor_autonum_formula;//Title and Formula hash
QString m_current_conductor_formula;
QString m_current_conductor_autonum;
/// Folio auto numbering
QHash <QString, NumerotationContext> m_folio_autonum;
/// Element Auto Numbering
QHash <QString, QString> m_element_autonum_formula; //Title and Formula hash
QHash <QString, NumerotationContext> m_element_autonum; //Title and NumContext hash
QHash <QString, QString> m_element_autonum_formula; //Title and Formula hash
QString m_current_element_formula;
QString m_current_element_autonum;
/// Folio List Sheets quantity for this project.

View File

@ -153,7 +153,7 @@ void AutoNumberingDockWidget::setActive() {
}
//Element
QString element_formula = project_->elementAutoNumFormula();
QString element_formula = project_->elementAutoNumCurrentFormula();
QString active_element_autonum = project_->elementCurrentAutoNum();
int el_index = ui->m_element_cb->findText(active_element_autonum);
ui->m_element_cb->setCurrentIndex(el_index);
@ -191,7 +191,14 @@ void AutoNumberingDockWidget::conductorAutoNumChanged() {
*/
void AutoNumberingDockWidget::on_m_conductor_cb_activated(int) {
QString current_autonum = ui->m_conductor_cb->currentText();
QString current_formula = project_->conductorAutoNumFormula(current_autonum);
if (current_autonum != "") {
project_->setConductorAutoNumCurrentFormula(current_formula, current_autonum);
}
else
project_->setConductorAutoNumCurrentFormula("","");
projectview_->currentDiagram()->diagram()->setConductorsAutonumName(current_autonum);
projectview_->currentDiagram()->diagram()->loadCndFolioSeq();
}
/**

View File

@ -20,8 +20,8 @@
#include "numparteditorw.h"
#include <QMessageBox>
#include "numerotationcontextcommands.h"
#include "elementautonumberingw.h"
#include "ui_elementautonumberingw.h"
#include "formulaautonumberingw.h"
#include "ui_formulaautonumberingw.h"
#include "qdebug.h"
#include "qetproject.h"
#include "diagram.h"

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>467</width>
<width>524</width>
<height>550</height>
</rect>
</property>
@ -75,8 +75,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>448</width>
<height>498</height>
<width>504</width>
<height>495</height>
</rect>
</property>
<property name="sizePolicy">
@ -110,7 +110,7 @@
<item row="2" column="1">
<widget class="QComboBox" name="m_to_cb">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -136,7 +136,7 @@
<item row="1" column="1">
<widget class="QComboBox" name="m_from_cb">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -149,7 +149,7 @@
<item row="0" column="1">
<widget class="QSpinBox" name="m_new_tabs_sb">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>

View File

@ -15,8 +15,8 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "elementautonumberingw.h"
#include "ui_elementautonumberingw.h"
#include "formulaautonumberingw.h"
#include "ui_formulaautonumberingw.h"
#include <QMessageBox>
#include <QPushButton>
#include <QtWidgets>
@ -24,9 +24,9 @@
/**
* Constructor
*/
ElementAutonumberingW::ElementAutonumberingW(QWidget *parent) :
FormulaAutonumberingW::FormulaAutonumberingW(QWidget *parent) :
QWidget(parent),
ui(new Ui::ElementAutonumberingW)
ui(new Ui::FormulaAutonumberingW)
{
ui->setupUi(this);
@ -36,39 +36,39 @@ ElementAutonumberingW::ElementAutonumberingW(QWidget *parent) :
/**
* Destructor
*/
ElementAutonumberingW::~ElementAutonumberingW()
FormulaAutonumberingW::~FormulaAutonumberingW()
{
delete ui;
}
/**
* @brief ElementAutonumberingW::setContext
* @brief FormulaAutonumberingW::setContext
* @param formula to be inserted into context
*/
void ElementAutonumberingW::setContext(QString formula) {
void FormulaAutonumberingW::setContext(QString formula) {
ui->m_formula_le->insert(formula);
}
/**
* @brief ElementAutonumberingW::clearContext
* @brief FormulaAutonumberingW::clearContext
* @param clear formula line edit text
*/
void ElementAutonumberingW::clearContext() {
void FormulaAutonumberingW::clearContext() {
ui->m_formula_le->clear();
}
/**
* @brief ElementAutonumberingW::formula
* @brief FormulaAutonumberingW::formula
* @return formula to be stored into project
*/
QString ElementAutonumberingW::formula() {
QString FormulaAutonumberingW::formula() {
return ui->m_formula_le->text();
}
/**
* @brief ElementAutonumberingW::on_m_formula_le_textChanged
* @brief FormulaAutonumberingW::on_m_formula_le_textChanged
* Update Apply Button
*/
void ElementAutonumberingW::on_m_formula_le_textChanged(QString text) {
void FormulaAutonumberingW::on_m_formula_le_textChanged(QString text) {
emit (textChanged(text));
}

View File

@ -15,15 +15,15 @@
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ELEMENTAUTONUMBERINGW_H
#define ELEMENTAUTONUMBERINGW_H
#ifndef FORMULAAUTONUMBERINGW_H
#define FORMULAAUTONUMBERINGW_H
#include <QWidget>
class QAbstractButton;
namespace Ui {
class ElementAutonumberingW;
class FormulaAutonumberingW;
}
/**
@ -32,18 +32,18 @@ namespace Ui {
the user to overwrite it with a new formula. Formula is added
while parsing label in customelement.cpp
*/
class ElementAutonumberingW : public QWidget
class FormulaAutonumberingW : public QWidget
{
Q_OBJECT
//METHODS
public:
explicit ElementAutonumberingW(QWidget *parent = 0);
~ElementAutonumberingW();
explicit FormulaAutonumberingW(QWidget *parent = 0);
~FormulaAutonumberingW();
QString formula();
void setContext(QString);
void clearContext();
Ui::ElementAutonumberingW *ui;
Ui::FormulaAutonumberingW *ui;
private:
@ -62,4 +62,4 @@ class ElementAutonumberingW : public QWidget
};
#endif // ELEMENTAUTONUMBERINGW_H
#endif // FORMULAAUTONUMBERINGW_H

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ElementAutonumberingW</class>
<widget class="QWidget" name="ElementAutonumberingW">
<class>FormulaAutonumberingW</class>
<widget class="QWidget" name="FormulaAutonumberingW">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>383</width>
<height>357</height>
<width>370</width>
<height>305</height>
</rect>
</property>
<property name="sizePolicy">
@ -44,7 +44,7 @@
<item row="0" column="1">
<widget class="QLineEdit" name="m_formula_le">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -88,8 +88,6 @@
-%c: Element Column
-%F: Folio Name
-%f or %id: Folio ID
-%M: Machine
-%LM: Location
-%total: Total of folios
You can also assign any other titleblock variable
that you create. Text and number inputs are

View File

@ -84,8 +84,8 @@ void NumPartEditorW::setVisibleItems() {
<< tr("Texte");
}
else if (parentWidget()->parentWidget()->objectName()=="ConductorTab") {
items << tr("Chiffre 1") << tr("Chiffre 01")
<< tr("Chiffre 001")
items << tr("Chiffre 1") << tr("Chiffre 1 - Folio") << tr("Chiffre 01")
<< tr("Chiffre 01 - Folio") << tr("Chiffre 001") << tr("Chiffre 001 - Folio")
<< tr("Texte") << tr("N° folio") << tr("Folio");
}
else

View File

@ -38,7 +38,7 @@ ProjectPropertiesDialog::ProjectPropertiesDialog(QETProject *project, QWidget *p
connect(projectAutoNumConfigPage,SIGNAL(setAutoNum(QString)),newDiagramPage,SLOT(setFolioAutonum(QString)));
connect(projectAutoNumConfigPage,SIGNAL(saveCurrentTbp()),newDiagramPage,SLOT(saveCurrentTbp()));
connect(projectAutoNumConfigPage,SIGNAL(loadSavedTbp()),newDiagramPage,SLOT(loadSavedTbp()));
m_properties_dialog->setMinimumHeight(690);
m_properties_dialog->setMinimumHeight(690);
}

View File

@ -20,8 +20,8 @@
#include "numparteditorw.h"
#include <QMessageBox>
#include "numerotationcontextcommands.h"
#include "elementautonumberingw.h"
#include "ui_elementautonumberingw.h"
#include "formulaautonumberingw.h"
#include "ui_formulaautonumberingw.h"
#include "qdebug.h"
/**
@ -34,8 +34,13 @@ SelectAutonumW::SelectAutonumW(QWidget *parent) :
ui->setupUi(this);
if (this->parentWidget() -> objectName()=="ElementTab"){
m_eaw = new ElementAutonumberingW();
ui->scrollAreaWidgetContents->layout()->addWidget(m_eaw);
m_feaw = new FormulaAutonumberingW();
ui->scrollAreaWidgetContents->layout()->addWidget(m_feaw);
}
else if (this->parentWidget() -> objectName()=="ConductorTab"){
m_fcaw = new FormulaAutonumberingW();
m_fcaw->ui->label->setHidden(true);
ui->scrollAreaWidgetContents->layout()->addWidget(m_fcaw);
}
setContext(NumerotationContext());
}
@ -45,8 +50,13 @@ SelectAutonumW::SelectAutonumW(const NumerotationContext &context, QWidget *pare
ui(new Ui::SelectAutonumW)
{
if (this->parentWidget() -> objectName()=="ElementTab"){
m_eaw = new ElementAutonumberingW();
ui->scrollAreaWidgetContents->layout()->addWidget(m_eaw);
m_feaw = new FormulaAutonumberingW();
ui->scrollAreaWidgetContents->layout()->addWidget(m_feaw);
}
else if (this->parentWidget() -> objectName()=="ConductorTab"){
m_fcaw = new FormulaAutonumberingW();
m_fcaw->ui->label->setHidden(true);
ui->scrollAreaWidgetContents->layout()->addWidget(m_fcaw);
}
ui->setupUi(this);
setContext(context);
@ -130,11 +140,15 @@ void SelectAutonumW::on_remove_button_clicked() {
}
/**
* @brief SelectAutonumW::elementFormula
* @return element autonumbering widget formula
* @brief SelectAutonumW::formula
* @return autonumbering widget formula
*/
QString SelectAutonumW::elementFormula() {
return m_eaw->formula();
QString SelectAutonumW::formula() {
if (this->parentWidget() -> objectName()=="ElementTab")
return m_feaw->formula();
else if (this->parentWidget() ->objectName()=="ConductorTab")
return m_fcaw->formula();
else return "";
}
/**
@ -222,6 +236,8 @@ void SelectAutonumW::applyEnable(bool b) {
}
if (this->parentWidget() -> objectName()=="ElementTab")
contextToFormula();
if (this->parentWidget()->objectName()=="ConductorTab")
contextToFormula();
}
/**
@ -229,7 +245,12 @@ void SelectAutonumW::applyEnable(bool b) {
* Apply formula to ElementAutonumbering Widget
*/
void SelectAutonumW::contextToFormula() {
m_eaw->clearContext();
FormulaAutonumberingW* m_faw;
if (this->parentWidget() -> objectName()=="ElementTab")
m_faw = m_feaw;
if (this->parentWidget()->objectName()=="ConductorTab")
m_faw = m_fcaw;
m_faw->clearContext();
int count_unit = 0;
int count_unitf = 0;
int count_ten = 0;
@ -239,54 +260,54 @@ void SelectAutonumW::contextToFormula() {
foreach (NumPartEditorW *npe, num_part_list_) {
if (npe->isValid()) {
if (npe->type_ == NumPartEditorW::idfolio) {
m_eaw->setContext("%id");
m_faw->setContext("%id");
}
else if (npe->type_ == NumPartEditorW::folio) {
m_eaw->setContext("%F");
m_faw->setContext("%F");
}
else if (npe->type_ == NumPartEditorW::machine) {
m_eaw->setContext("%M");
m_faw->setContext("%M");
}
else if (npe->type_ == NumPartEditorW::locmach) {
m_eaw->setContext("%LM");
m_faw->setContext("%LM");
}
else if (npe->type_ == NumPartEditorW::elementcolumn) {
m_eaw->setContext("%c");
m_faw->setContext("%c");
}
else if (npe->type_ == NumPartEditorW::elementline) {
m_eaw->setContext("%l");
m_faw->setContext("%l");
}
else if (npe->type_ == NumPartEditorW::elementprefix) {
m_eaw->setContext("%prefix");
m_faw->setContext("%prefix");
}
else if (npe->type_ == NumPartEditorW::string) {
m_eaw->setContext(npe->toNumContext().itemAt(0).at(1));
m_faw->setContext(npe->toNumContext().itemAt(0).at(1));
}
else if (npe->type_ == NumPartEditorW::unit) {
count_unit++;
m_eaw->setContext("%sequ_"+QString::number(count_unit));
m_faw->setContext("%sequ_"+QString::number(count_unit));
}
else if (npe->type_ == NumPartEditorW::unitfolio) {
count_unitf++;
m_eaw->setContext("%sequf_"+QString::number(count_unitf));
m_faw->setContext("%sequf_"+QString::number(count_unitf));
}
else if (npe->type_ == NumPartEditorW::ten) {
count_ten++;
m_eaw->setContext("%seqt_"+QString::number(count_ten));
m_faw->setContext("%seqt_"+QString::number(count_ten));
}
else if (npe->type_ == NumPartEditorW::tenfolio) {
count_tenf++;
m_eaw->setContext("%seqtf_"+QString::number(count_tenf));
m_faw->setContext("%seqtf_"+QString::number(count_tenf));
}
else if (npe->type_ == NumPartEditorW::hundred) {
count_hundred++;
m_eaw->setContext("%seqh_"+QString::number(count_hundred));
m_faw->setContext("%seqh_"+QString::number(count_hundred));
}
else if (npe->type_ == NumPartEditorW::hundredfolio) {
count_hundredf++;
m_eaw->setContext("%seqhf_"+QString::number(count_hundredf));
m_faw->setContext("%seqhf_"+QString::number(count_hundredf));
}
}
}

View File

@ -20,10 +20,11 @@
#include <QWidget>
#include "numerotationcontext.h"
#include "elementautonumberingw.h"
#include "formulaautonumberingw.h"
class NumPartEditorW;
class QAbstractButton;
class FormulaAutonumberingW;
namespace Ui {
class SelectAutonumW;
@ -42,7 +43,7 @@ class SelectAutonumW : public QWidget
void setContext (const NumerotationContext &context);
NumerotationContext toNumContext() const;
void contextToFormula ();
QString elementFormula();
QString formula();
signals:
void applyPressed();
@ -65,7 +66,8 @@ class SelectAutonumW : public QWidget
Ui::SelectAutonumW *ui;
QList <NumPartEditorW *> num_part_list_;
NumerotationContext m_context;
ElementAutonumberingW *m_eaw;
FormulaAutonumberingW *m_feaw;
FormulaAutonumberingW *m_fcaw;
};
#endif // SELECTAUTONUMW_H

View File

@ -224,7 +224,7 @@
<string>Type</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
@ -234,7 +234,7 @@
<string>Valeur</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
@ -250,7 +250,7 @@
<string>Incrémentation</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>