[qet] [4569] Element Autonumbering now has sequential variables and selectautonum widget.

[ Thread Index | Date Index | More lists.tuxfamily.org/qet Archives ]


Revision: 4569
Author:   dfochi
Date:     2016-07-10 03:33:49 +0200 (Sun, 10 Jul 2016)
Log Message:
-----------
Element Autonumbering now has sequential variables and selectautonum widget. Renamed autonumbering variables.

Modified Paths:
--------------
    trunk/sources/diagram.cpp
    trunk/sources/diagramevent/diagrameventaddelement.cpp
    trunk/sources/numerotationcontext.cpp
    trunk/sources/numerotationcontextcommands.cpp
    trunk/sources/numerotationcontextcommands.h
    trunk/sources/projectconfigpages.cpp
    trunk/sources/projectconfigpages.h
    trunk/sources/qetgraphicsitem/customelement.cpp
    trunk/sources/qetgraphicsitem/element.cpp
    trunk/sources/qetgraphicsitem/element.h
    trunk/sources/qetgraphicsitem/masterelement.cpp
    trunk/sources/qetgraphicsitem/simpleelement.cpp
    trunk/sources/qetproject.cpp
    trunk/sources/qetproject.h
    trunk/sources/ui/elementautonumberingw.cpp
    trunk/sources/ui/elementautonumberingw.h
    trunk/sources/ui/elementautonumberingw.ui
    trunk/sources/ui/numparteditorw.cpp
    trunk/sources/ui/numparteditorw.h
    trunk/sources/ui/numparteditorw.ui
    trunk/sources/ui/selectautonumw.cpp
    trunk/sources/ui/selectautonumw.h
    trunk/sources/ui/selectautonumw.ui

Modified: trunk/sources/diagram.cpp
===================================================================
--- trunk/sources/diagram.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/diagram.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -866,7 +866,6 @@
 				CustomElement *celmt = static_cast<CustomElement*>(item);
 				celmt->parseLabels();
 			}
-
 			elmt->updateLabel();
 		}
 			break;

Modified: trunk/sources/diagramevent/diagrameventaddelement.cpp
===================================================================
--- trunk/sources/diagramevent/diagrameventaddelement.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/diagramevent/diagrameventaddelement.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -233,4 +233,6 @@
 		can.numerate();
 	};
 	m_diagram -> undoStack().push(undo_object);
+	element->assignSeq();
+	element->updateLabel();
 }

Modified: trunk/sources/numerotationcontext.cpp
===================================================================
--- trunk/sources/numerotationcontext.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/numerotationcontext.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -99,7 +99,7 @@
  * @return all type use to numerotation
  */
 QString NumerotationContext::validRegExpNum () const {
-	return ("unit|ten|hundred|string|idfolio|folio");
+	return ("unit|ten|hundred|string|idfolio|folio|elementline|elementcolumn|elementprefix");
 }
 
 /**

Modified: trunk/sources/numerotationcontextcommands.cpp
===================================================================
--- trunk/sources/numerotationcontextcommands.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/numerotationcontextcommands.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -112,6 +112,18 @@
 		strategy_ = new FolioNum (diagram_);
 		return;
 	}
+	else if (str=="elementline"){
+		strategy_ = new ElementLineNum (diagram_);
+		return;
+	}
+	else if (str=="elementcolumn"){
+		strategy_ = new ElementColumnNum (diagram_);
+		return;
+	}
+	else if (str=="elementprefix"){
+		strategy_ = new ElementPrefixNum (diagram_);
+		return;
+	}
 }
 
 
@@ -359,3 +371,99 @@
 	return (nextString(nc, i));
 }
 
+/**
+ * Constructor
+ */
+ElementLineNum::ElementLineNum (Diagram *d):
+	NumStrategy (d)
+{}
+
+/**
+ * @brief ElementLineNum::toRepresentedString
+ * @return the represented string of folio
+ */
+QString ElementLineNum::toRepresentedString(const QString str) const {
+	Q_UNUSED(str);
+	return "%l";
+}
+
+/**
+ * @brief ElementLineNum::next
+ * @return the next NumerotationContext nc at position i
+ */
+NumerotationContext ElementLineNum::next (const NumerotationContext &nc, const int i) const {
+	return (nextString(nc, i));
+}
+
+/**
+ * @brief ElementLineNum::previous
+ * @return the previous NumerotationContext nc at posiiton i
+ */
+NumerotationContext ElementLineNum::previous(const NumerotationContext &nc, const int i) const {
+	return (nextString(nc, i));
+}
+
+/**
+ * Constructor
+ */
+ElementColumnNum::ElementColumnNum (Diagram *d):
+	NumStrategy (d)
+{}
+
+/**
+ * @brief ElementColumnNum::toRepresentedString
+ * @return the represented string of folio
+ */
+QString ElementColumnNum::toRepresentedString(const QString str) const {
+	Q_UNUSED(str);
+	return "%c";
+}
+
+/**
+ * @brief ElementColumnNum::next
+ * @return the next NumerotationContext nc at position i
+ */
+NumerotationContext ElementColumnNum::next (const NumerotationContext &nc, const int i) const {
+	return (nextString(nc, i));
+}
+
+/**
+ * @brief ElementColumnNum::previous
+ * @return the previous NumerotationContext nc at posiiton i
+ */
+NumerotationContext ElementColumnNum::previous(const NumerotationContext &nc, const int i) const {
+	return (nextString(nc, i));
+}
+
+/**
+ * Constructor
+ */
+ElementPrefixNum::ElementPrefixNum (Diagram *d):
+	NumStrategy (d)
+{}
+
+/**
+ * @brief ElementPrefixNum::toRepresentedString
+ * @return the represented string of folio
+ */
+QString ElementPrefixNum::toRepresentedString(const QString str) const {
+	Q_UNUSED(str);
+	return "%prefix";
+}
+
+/**
+ * @brief ElementPrefixNum::next
+ * @return the next NumerotationContext nc at position i
+ */
+NumerotationContext ElementPrefixNum::next (const NumerotationContext &nc, const int i) const {
+	return (nextString(nc, i));
+}
+
+/**
+ * @brief ElementPrefixNum::previous
+ * @return the previous NumerotationContext nc at posiiton i
+ */
+NumerotationContext ElementPrefixNum::previous(const NumerotationContext &nc, const int i) const {
+	return (nextString(nc, i));
+}
+

Modified: trunk/sources/numerotationcontextcommands.h
===================================================================
--- trunk/sources/numerotationcontextcommands.h	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/numerotationcontextcommands.h	2016-07-10 01:33:49 UTC (rev 4569)
@@ -113,4 +113,33 @@
 	NumerotationContext next     (const NumerotationContext &, const int) const;
 	NumerotationContext previous (const NumerotationContext &, const int) const;
 };
+
+class ElementLineNum: public NumStrategy
+{
+	public:
+	ElementLineNum (Diagram *);
+	QString toRepresentedString(const QString) const;
+	NumerotationContext next     (const NumerotationContext &, const int) const;
+	NumerotationContext previous (const NumerotationContext &, const int) const;
+};
+
+class ElementColumnNum: public NumStrategy
+{
+	public:
+	ElementColumnNum (Diagram *);
+	QString toRepresentedString(const QString) const;
+	NumerotationContext next     (const NumerotationContext &, const int) const;
+	NumerotationContext previous (const NumerotationContext &, const int) const;
+};
+
+class ElementPrefixNum: public NumStrategy
+{
+	public:
+	ElementPrefixNum (Diagram *);
+	QString toRepresentedString(const QString) const;
+	NumerotationContext next     (const NumerotationContext &, const int) const;
+	NumerotationContext previous (const NumerotationContext &, const int) const;
+};
+
+
 #endif // NUMEROTATIONCONTEXTCOMMANDS_H

Modified: trunk/sources/projectconfigpages.cpp
===================================================================
--- trunk/sources/projectconfigpages.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/projectconfigpages.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -257,38 +257,51 @@
 
 	//Conductor Tab
 	conductor_tab_widget = new QWidget(this);
+	conductor_tab_widget->setObjectName("ConductorTab");
 
-	m_label = new QLabel(tr("Numérotations disponibles :", "availables numerotations"), conductor_tab_widget);
+	m_label_conductor = new QLabel(tr("Numérotations disponibles :", "availables numerotations"), conductor_tab_widget);
 
-	m_context_cb = new QComboBox(conductor_tab_widget);
-	m_context_cb->setEditable(true);
-	m_context_cb->lineEdit()->setClearButtonEnabled(true);
-	m_context_cb->addItem(tr("Nom de la nouvelle numérotation"));
+	m_context_cb_conductor= new QComboBox(conductor_tab_widget);
+	m_context_cb_conductor->setEditable(true);
+	m_context_cb_conductor->lineEdit()->setClearButtonEnabled(true);
+	m_context_cb_conductor->addItem(tr("Nom de la nouvelle numérotation"));
 
-	m_remove_pb = new QPushButton(QET::Icons::EditDelete, QString(), conductor_tab_widget);
-	m_remove_pb -> setToolTip(tr("Supprimer la numérotation"));
+	m_remove_pb_conductor= new QPushButton(QET::Icons::EditDelete, QString(), conductor_tab_widget);
+	m_remove_pb_conductor-> setToolTip(tr("Supprimer la numérotation"));
 
-	m_saw = new SelectAutonumW(conductor_tab_widget);
+	m_saw_conductor = new SelectAutonumW(conductor_tab_widget);
 
 	//Element Tab
 	element_tab_widget = new QWidget(this);
-	m_eaw = new ElementAutonumberingW(element_tab_widget);
+	element_tab_widget->setObjectName("ElementTab");
 
+	m_label_element = new QLabel(tr("Numérotations disponibles :", "availables numerotations"), element_tab_widget);
+
+	m_context_cb_element = new QComboBox(element_tab_widget);
+	m_context_cb_element->setEditable(true);
+	m_context_cb_element->lineEdit()->setClearButtonEnabled(true);
+	m_context_cb_element->addItem(tr("Nom de la nouvelle numérotation"));
+
+	m_remove_pb_element = new QPushButton(QET::Icons::EditDelete, QString(), element_tab_widget);
+	m_remove_pb_element -> setToolTip(tr("Supprimer la numérotation"));
+
+	m_saw_element = new SelectAutonumW(element_tab_widget);
+
 	//Folio Tab
 	folio_tab_widget = new QWidget(this);
 	folio_tab_widget->setObjectName("FolioTab");
 
-	m_label_2 = new QLabel(tr("Numérotations disponibles :", "availables numerotations"), folio_tab_widget);
+	m_label_folio = new QLabel(tr("Numérotations disponibles :", "availables numerotations"), folio_tab_widget);
 
-	m_context_cb_2 = new QComboBox(folio_tab_widget);
-	m_context_cb_2->setEditable(true);
-	m_context_cb_2->lineEdit()->setClearButtonEnabled(true);
-	m_context_cb_2->addItem(tr("Nom de la nouvelle numérotation"));
+	m_context_cb_folio = new QComboBox(folio_tab_widget);
+	m_context_cb_folio->setEditable(true);
+	m_context_cb_folio->lineEdit()->setClearButtonEnabled(true);
+	m_context_cb_folio->addItem(tr("Nom de la nouvelle numérotation"));
 
-	m_remove_pb_2 = new QPushButton(QET::Icons::EditDelete, QString(), folio_tab_widget);
-	m_remove_pb_2 -> setToolTip(tr("Supprimer la numérotation"));
+	m_remove_pb_folio = new QPushButton(QET::Icons::EditDelete, QString(), folio_tab_widget);
+	m_remove_pb_folio -> setToolTip(tr("Supprimer la numérotation"));
 
-	m_saw_2 = new SelectAutonumW(folio_tab_widget);
+	m_saw_folio = new SelectAutonumW(folio_tab_widget);
 
 	//AutoNumbering Tab
 	autoNumbering_tab_widget = new QWidget(this);
@@ -304,42 +317,55 @@
 	//Conductor Tab
 	tab_widget->addTab(conductor_tab_widget, tr("Conductor"));
 
-	QHBoxLayout *context_layout = new QHBoxLayout();
-	context_layout -> addWidget (m_label);
-	context_layout -> addWidget (m_context_cb);
-	context_layout -> addWidget (m_remove_pb);
+	QHBoxLayout *context_layout_conductor = new QHBoxLayout();
+	context_layout_conductor -> addWidget (m_label_conductor);
+	context_layout_conductor -> addWidget (m_context_cb_conductor);
+	context_layout_conductor -> addWidget (m_remove_pb_conductor);
 
-	QVBoxLayout *main_layout = new QVBoxLayout();
-	QVBoxLayout *aux_layout = new QVBoxLayout();
-	aux_layout->addLayout(context_layout);
-	aux_layout->addWidget(m_saw);
+	QVBoxLayout *main_layout_conductor = new QVBoxLayout();
+	QVBoxLayout *aux_layout_conductor = new QVBoxLayout();
+	aux_layout_conductor->addLayout(context_layout_conductor);
+	aux_layout_conductor->addWidget(m_saw_conductor);
 
-	main_layout->addLayout(aux_layout);
-	conductor_tab_widget -> setLayout (main_layout);
+	main_layout_conductor->addLayout(aux_layout_conductor);
+	conductor_tab_widget -> setLayout (main_layout_conductor);
 
 	//Element Tab
 	tab_widget->addTab(element_tab_widget,tr ("Element"));
 
+	QHBoxLayout *element_context_layout = new QHBoxLayout();
+	element_context_layout -> addWidget (m_label_element);
+	element_context_layout -> addWidget (m_context_cb_element);
+	element_context_layout -> addWidget (m_remove_pb_element);
+
+	QVBoxLayout *main_layout_element = new QVBoxLayout();
+	QVBoxLayout *aux_layout_element = new QVBoxLayout();
+	aux_layout_element->addLayout(element_context_layout);
+	aux_layout_element->addWidget(m_saw_element);
+
+	main_layout_element->addLayout(aux_layout_element);
+	element_tab_widget->setLayout(main_layout_element);
+
 	// Folio Tab
 	tab_widget->addTab(folio_tab_widget, tr("Folio"));
 
-	QHBoxLayout *context_layout_2 = new QHBoxLayout();
-	context_layout_2 -> addWidget (m_label_2);
-	context_layout_2 -> addWidget (m_context_cb_2);
-	context_layout_2 -> addWidget (m_remove_pb_2);
+	QHBoxLayout *context_layout_folio = new QHBoxLayout();
+	context_layout_folio -> addWidget (m_label_folio);
+	context_layout_folio -> addWidget (m_context_cb_folio);
+	context_layout_folio -> addWidget (m_remove_pb_folio);
 
-	QVBoxLayout *main_layout_2 = new QVBoxLayout();
-	QVBoxLayout *aux_layout_2 = new QVBoxLayout();
-	aux_layout_2->addLayout(context_layout_2);
-	aux_layout_2->addWidget(m_saw_2);
+	QVBoxLayout *main_layout_folio = new QVBoxLayout();
+	QVBoxLayout *aux_layout_folio = new QVBoxLayout();
+	aux_layout_folio->addLayout(context_layout_folio);
+	aux_layout_folio->addWidget(m_saw_folio);
 
-	main_layout_2->addLayout(aux_layout_2);
-	folio_tab_widget -> setLayout (main_layout_2);
+	main_layout_folio->addLayout(aux_layout_folio);
+	folio_tab_widget->setLayout(main_layout_folio);
 
 	//Auto Numbering Tab
 	tab_widget->addTab(autoNumbering_tab_widget,tr ("Folio Auto Numbering"));
 
-	tab_widget->resize(455,590);
+	tab_widget->resize(465,590);
 }
 
 /**
@@ -348,23 +374,25 @@
  */
 void ProjectAutoNumConfigPage::readValuesFromProject() {
 	//Conductor Tab
-	QList <QString> keys = project_->conductorAutoNum().keys();
-	if (!keys.isEmpty()){
-	foreach (QString str, keys) { m_context_cb -> addItem(str); }
+	QList <QString> keys_conductor = project_->conductorAutoNum().keys();
+	if (!keys_conductor.isEmpty()){
+	foreach (QString str, keys_conductor) { m_context_cb_conductor-> addItem(str); }
 	}
 
 	//Element Tab
-	if (!project_->elementAutoNum().isEmpty())
-		m_eaw->setContext(project_->elementAutoNum());
+	QList <QString> keys_element = project_->elementAutoNum().keys();
+	if (!keys_element.isEmpty()){
+	foreach (QString str, keys_element) { m_context_cb_element -> addItem(str);}
+	}
 
 	//Folio Tab
-	QList <QString> keys_2 = project_->folioAutoNum().keys();
-	if (!keys_2.isEmpty()){
-	foreach (QString str, keys_2) { m_context_cb_2 -> addItem(str);}
+	QList <QString> keys_folio = project_->folioAutoNum().keys();
+	if (!keys_folio.isEmpty()){
+	foreach (QString str, keys_folio) { m_context_cb_folio -> addItem(str);}
 	}
 
 	//Folio AutoNumbering Tab
-	m_faw->setContext(keys_2);
+	m_faw->setContext(keys_folio);
 }
 
 /**
@@ -383,92 +411,125 @@
 	connect(tab_widget,SIGNAL(currentChanged(int)),this,SLOT(tabChanged(int)));
 
 	//Conductor Tab
-	connect (m_context_cb, SIGNAL (currentIndexChanged(QString)), this, SLOT (updateContext(QString)));
-	connect (m_saw, SIGNAL (applyPressed()), this, SLOT (saveContext()));
-	connect (m_remove_pb, SIGNAL (clicked()), this, SLOT(removeContext()));
+	connect (m_context_cb_conductor, SIGNAL (currentIndexChanged(QString)), this, SLOT (updateContext_conductor(QString)));
+	connect (m_saw_conductor,        SIGNAL (applyPressed()),               this, SLOT (saveContext_conductor()));
+	connect (m_remove_pb_conductor,  SIGNAL (clicked()),                    this, SLOT (removeContext_conductor()));
 
 	//Element Tab
-	connect (m_eaw, SIGNAL (applyPressed()), this, SLOT (saveContext_3()));
+	connect (m_context_cb_element, SIGNAL (currentIndexChanged(QString)), this, SLOT (updateContext_element(QString)));
+	connect (m_saw_element,        SIGNAL (applyPressed()),               this, SLOT (saveContext_element()));
+	connect (m_remove_pb_element,  SIGNAL (clicked()),                    this, SLOT (removeContext_element()));
 
 	//Folio Tab
-	connect (m_context_cb_2, SIGNAL (currentIndexChanged(QString)), this, SLOT (updateContext_2(QString)));
-	connect (m_saw_2, SIGNAL (applyPressed()), this, SLOT (saveContext_2()));
-	connect (m_remove_pb_2, SIGNAL (clicked()), this, SLOT (removeContext_2()));
+	connect (m_context_cb_folio, SIGNAL (currentIndexChanged(QString)), this, SLOT (updateContext_folio(QString)));
+	connect (m_saw_folio,        SIGNAL (applyPressed()),               this, SLOT (saveContext_folio()));
+	connect (m_remove_pb_folio,  SIGNAL (clicked()),                    this, SLOT (removeContext_folio()));
 
 	//	Auto Folio Numbering
 	connect (m_faw, SIGNAL (applyPressed()),				 this, SLOT (applyAutoNum()));
 }
 
 /**
- * @brief ProjectAutoNumConfigPage::updateContext
+ * @brief ProjectAutoNumConfigPage::updateContext_conductor
  * Display the current selected context for conductor
  * @param str, key of context stored in project
  */
-void ProjectAutoNumConfigPage::updateContext(QString str) {
-	if (str == tr("Nom de la nouvelle numérotation")) m_saw -> setContext(NumerotationContext());
-	else m_saw ->setContext(project_->conductorAutoNum(str));
+void ProjectAutoNumConfigPage::updateContext_conductor(QString str) {
+	if (str == tr("Nom de la nouvelle numérotation")) m_saw_conductor -> setContext(NumerotationContext());
+	else m_saw_conductor ->setContext(project_->conductorAutoNum(str));
 }
 
 /**
- * @brief ProjectAutoNumConfigPage::updateContext_2
+ * @brief ProjectAutoNumConfigPage::updateContext_folio
  * Display the current selected context for folio
  * @param str, key of context stored in project
  */
-void ProjectAutoNumConfigPage::updateContext_2(QString str) {
-	if (str == tr("Nom de la nouvelle numérotation")) m_saw_2 -> setContext(NumerotationContext());
-	else m_saw_2 ->setContext(project_->folioAutoNum(str));
+void ProjectAutoNumConfigPage::updateContext_folio(QString str) {
+	if (str == tr("Nom de la nouvelle numérotation")) m_saw_folio -> setContext(NumerotationContext());
+	else m_saw_folio ->setContext(project_->folioAutoNum(str));
 }
 
 /**
- * @brief ProjectAutoNumConfigPage::saveContext
+ * @brief ProjectAutoNumConfigPage::updateContext_element
+ * Display the current selected context for element
+ * @param str, key of context stored in project
+ */
+void ProjectAutoNumConfigPage::updateContext_element(QString str) {
+	if (str == tr("Nom de la nouvelle numérotation")) m_saw_element -> setContext(NumerotationContext());
+	else m_saw_element ->setContext(project_->elementAutoNum(str));
+}
+
+/**
+ * @brief ProjectAutoNumConfigPage::saveContext_conductor
  * Save the current displayed conductor context in project
  */
-void ProjectAutoNumConfigPage::saveContext() {
+void ProjectAutoNumConfigPage::saveContext_conductor() {
 	// If the text is the default text "Name of new numerotation" save the edited context
 	// With the the name "No name"
-	if (m_context_cb -> currentText() == tr("Nom de la nouvelle numérotation")) {
-		project_->addConductorAutoNum (tr("Sans nom"), m_saw -> toNumContext());
-		m_context_cb -> addItem(tr("Sans nom"));
+	if (m_context_cb_conductor-> currentText() == tr("Nom de la nouvelle numérotation")) {
+		project_->addConductorAutoNum (tr("Sans nom"), m_saw_conductor -> toNumContext());
+		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->currentText())) {
-		project()->addConductorAutoNum(m_context_cb->currentText(), m_saw->toNumContext());
-		m_context_cb -> addItem(m_context_cb->currentText());
+	else if ( !project_ -> conductorAutoNum().keys().contains( m_context_cb_conductor->currentText())) {
+		project()->addConductorAutoNum(m_context_cb_conductor->currentText(), m_saw_conductor->toNumContext());
+		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_->addConductorAutoNum (m_context_cb -> currentText(), m_saw -> toNumContext());
+		project_->addConductorAutoNum (m_context_cb_conductor-> currentText(), m_saw_conductor -> toNumContext());
 	}
 }
 
 /**
- * @brief ProjectAutoNumConfigPage::saveContext_2
+ * @brief ProjectAutoNumConfigPage::saveContext_folio
  * Save the current displayed folio context in project
  */
-void ProjectAutoNumConfigPage::saveContext_2() {
+void ProjectAutoNumConfigPage::saveContext_folio() {
 	// If the text is the default text "Name of new numerotation" save the edited context
 	// With the the name "No name"
-	if (m_context_cb_2 -> currentText() == tr("Nom de la nouvelle numérotation")) {
-		project_->addFolioAutoNum (tr("Sans nom"), m_saw_2 -> toNumContext());
-		m_context_cb_2 -> addItem(tr("Sans nom"));
+	if (m_context_cb_folio -> currentText() == tr("Nom de la nouvelle numérotation")) {
+		project_->addFolioAutoNum (tr("Sans nom"), m_saw_folio -> toNumContext());
+		m_context_cb_folio -> 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_ -> folioAutoNum().keys().contains( m_context_cb_2->currentText())) {
-		project()->addFolioAutoNum(m_context_cb_2->currentText(), m_saw_2->toNumContext());
-		m_context_cb_2 -> addItem(m_context_cb_2->currentText());
+	else if ( !project_ -> folioAutoNum().keys().contains( m_context_cb_folio->currentText())) {
+		project()->addFolioAutoNum(m_context_cb_folio->currentText(), m_saw_folio->toNumContext());
+		m_context_cb_folio -> addItem(m_context_cb_folio->currentText());
 	}
 	// Else, the text already exist in the autonum of the project, just update the context
 	else {
-		project_->addFolioAutoNum (m_context_cb_2 -> currentText(), m_saw_2 -> toNumContext());
+		project_->addFolioAutoNum (m_context_cb_folio -> currentText(), m_saw_folio -> toNumContext());
 	}
 }
 
 /**
- * @brief ProjectAutoNumConfigPage::saveContext_3
+ * @brief ProjectAutoNumConfigPage::saveContext_element
  * Save the current displayed Element formula in project
  */
-void ProjectAutoNumConfigPage::saveContext_3() {
-	project()->addElementAutoNum (m_eaw->formula());
+void ProjectAutoNumConfigPage::saveContext_element() {
+
+	// If the text is the default text "Name of new numerotation" save the edited context
+	// 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 (m_context_cb_element->currentText(), m_saw_element->elementFormula()); //add hash <title, formula>
+		project()->addElementAutoNumCurrentFormula (m_saw_element->elementFormula()); //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()->addElementAutoNumCurrentFormula (m_saw_element->elementFormula()); //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()->addElementAutoNumCurrentFormula (m_saw_element->elementFormula()); //add last added element formula to current formula
+	}
 }
 
 /**
@@ -499,23 +560,36 @@
  * @brief ProjectAutoNumConfigPage::removeContext
  * Remove from project the current conductor numerotation context
  */
-void ProjectAutoNumConfigPage::removeContext() {
+void ProjectAutoNumConfigPage::removeContext_conductor() {
 	//if default text, return
-	if ( m_context_cb -> currentText() == tr("Nom de la nouvelle numérotation") ) return;
-	project_	 -> removeConductorAutonum	(m_context_cb -> currentText() );
-	m_context_cb -> removeItem				(m_context_cb -> currentIndex() );
+	if ( m_context_cb_conductor-> currentText() == tr("Nom de la nouvelle numérotation") ) return;
+	project_ -> removeConductorAutoNum (m_context_cb_conductor-> currentText() );
+	m_context_cb_conductor-> removeItem (m_context_cb_conductor-> currentIndex() );
 }
+
 /**
- * @brief ProjectAutoNumConfigPage::removeContext_2
+ * @brief ProjectAutoNumConfigPage::removeContext_folio
  * Remove from project the current folio numerotation context
  */
-void ProjectAutoNumConfigPage::removeContext_2() {
+void ProjectAutoNumConfigPage::removeContext_folio() {
 	//if default text, return
-	if ( m_context_cb_2 -> currentText() == tr("Nom de la nouvelle numérotation") ) return;
-	project_	   -> removeFolioAutoNum	 (m_context_cb_2 -> currentText() );
-	m_context_cb_2 -> removeItem			 (m_context_cb_2 -> currentIndex() );
+	if ( m_context_cb_folio -> currentText() == tr("Nom de la nouvelle numérotation") ) return;
+	project_ -> removeFolioAutoNum (m_context_cb_folio -> currentText() );
+	m_context_cb_folio -> removeItem (m_context_cb_folio -> currentIndex() );
 }
+
 /**
+ * @brief ProjectAutoNumConfigPage::removeContext_element
+ * Remove from project the current element numerotation context
+ */
+void ProjectAutoNumConfigPage::removeContext_element() {
+	//if default text, return
+	if ( m_context_cb_element -> currentText() == tr("Nom de la nouvelle numérotation") ) return;
+	project_ -> removeElementAutoNum (m_context_cb_element -> currentText() );
+	m_context_cb_element -> removeItem (m_context_cb_element -> currentIndex() );
+}
+
+/**
  * @brief ProjectAutoNumConfigPage::changeToTab
  * @param tab index
  * Change to Selected Tab
@@ -535,7 +609,7 @@
 			tab_widget->resize(470,tab_widget->height());
 		}
 		else {
-			tab_widget->resize(455,tab_widget->height());
+			tab_widget->resize(465,tab_widget->height());
 		}
 	}
 }

Modified: trunk/sources/projectconfigpages.h
===================================================================
--- trunk/sources/projectconfigpages.h	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/projectconfigpages.h	2016-07-10 01:33:49 UTC (rev 4569)
@@ -141,13 +141,15 @@
 	private:
 		void buildConnections();
 	private slots:
-		void updateContext(QString);
-		void saveContext();
-		void removeContext(); //conductor
-		void updateContext_2(QString);
-		void saveContext_2(); //folio
-		void removeContext_2();
-		void saveContext_3(); //element
+		void updateContext_conductor(QString);//conductor
+		void saveContext_conductor();
+		void removeContext_conductor();
+		void updateContext_folio(QString);//folio
+		void saveContext_folio();
+		void removeContext_folio();
+		void updateContext_element(QString);//element
+		void saveContext_element();
+		void removeContext_element();
 
 		void applyAutoNum();
 
@@ -167,14 +169,18 @@
 		QWidget               *folio_tab_widget;
 		QWidget               *autoNumbering_tab_widget;
 		QScrollArea           *scrollArea;
-		QLabel                *m_label;
-		QLabel                *m_label_2;
-		QComboBox             *m_context_cb;
-		QComboBox             *m_context_cb_2;
-		QPushButton           *m_remove_pb;
-		QPushButton           *m_remove_pb_2;
-		SelectAutonumW        *m_saw;
-		SelectAutonumW        *m_saw_2;
+		QLabel                *m_label_conductor;
+		QLabel                *m_label_folio;
+		QLabel                *m_label_element;
+		QComboBox             *m_context_cb_conductor;
+		QComboBox             *m_context_cb_folio;
+		QComboBox             *m_context_cb_element;
+		QPushButton           *m_remove_pb_conductor;
+		QPushButton           *m_remove_pb_folio;
+		QPushButton           *m_remove_pb_element;
+		SelectAutonumW        *m_saw_conductor;
+		SelectAutonumW        *m_saw_folio;
+		SelectAutonumW        *m_saw_element;
 		FolioAutonumberingW   *m_faw;
 		ElementAutonumberingW *m_eaw;
 

Modified: trunk/sources/qetgraphicsitem/customelement.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/customelement.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/qetgraphicsitem/customelement.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -309,8 +309,8 @@
 								prefix = rxml.readElementText();
 								DiagramContext &dc = this->rElementInformations();
 								//if there is a formula to assign, assign it
-								if (!location().project()->elementAutoNum().isEmpty() && this->linkType()!=Element::Slave) {
-									QString formula = location().project()->elementAutoNum();
+								if (!location().project()->elementAutoNumFormula().isEmpty() && this->linkType()!=Element::Slave) {
+									QString formula = location().project()->elementAutoNumFormula();
 									formula.replace("%prefix", prefix);
 									dc.addValue("label", formula);
 									this->setTaggedText("label",formula);
@@ -336,8 +336,8 @@
 	}
 	//apply formula to specific label
 	else if ((this->taggedText("label")!= NULL) && (location().projectId()!=-1) &&
-			 (!location().project()->elementAutoNum().isEmpty()) && (this->linkType()!=Element::Slave)) {
-		QString formula = location().project()->elementAutoNum();
+			 (!location().project()->elementAutoNumFormula().isEmpty()) && (this->linkType()!=Element::Slave)) {
+		QString formula = location().project()->elementAutoNumFormula();
 		DiagramContext &dc = this->rElementInformations();
 		QString prefix = this->taggedText("label")->toPlainText();
 		formula.replace("%prefix", prefix);

Modified: trunk/sources/qetgraphicsitem/element.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/element.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/qetgraphicsitem/element.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -26,6 +26,7 @@
 #include "terminal.h"
 #include "PropertiesEditor/propertieseditordialog.h"
 #include "elementpropertieswidget.h"
+#include "numerotationcontextcommands.h"
 
 /**
 	Constructeur pour un element sans scene ni parent
@@ -677,3 +678,69 @@
 	label.replace("%total", QString::number(elmt->diagram()->border_and_titleblock.folioTotal()));
 	return label;
 }
+
+/**
+ * @brief Element::assignSeq()
+ * Assign sequential values to element label
+ */
+void Element::assignSeq() {
+	DiagramContext &dc = this->rElementInformations();
+	QString formula = diagram()->project()->elementAutoNumFormula();
+	QHash <QString,QString> hash = diagram()->project()->elementAutoNum_2();
+	QString formula_name = hash.key(formula);
+	QString label = dc["label"].toString();
+	qDebug() << "Label" << label;
+	NumerotationContext nc = diagram()->project()->elementAutoNum(formula_name);
+	NumerotationContextCommands ncc (nc);
+	if (!nc.isEmpty()) {
+		if (label.contains("%sequ_")) {
+			int count = 1;
+			for (int i = 0; i < nc.size(); i++) {
+				if (nc.itemAt(i).at(0) == "unit") {
+					label.replace("%sequ_" + QString::number(count), QString::number(nc.itemAt(i).at(1).toInt()));
+					count++;
+				}
+			}
+		}
+		if (label.contains("%seqt_")) {
+			int count = 1;
+			for (int i = 0; i < nc.size(); i++) {
+				if (nc.itemAt(i).at(0) == "ten") {
+					label.replace("%seqt_" + QString::number(count), QString::number(nc.itemAt(i).at(1).toInt()));
+					count++;
+				}
+			}
+		}
+		if (label.contains("%seqh_")) {
+			int count = 1;
+			for (int i = 0; i < nc.size(); i++) {
+				if (nc.itemAt(i).at(0) == "hundred") {
+					label.replace("%seqh_" + QString::number(count), QString::number(nc.itemAt(i).at(1).toInt()));
+					count++;
+				}
+			}
+		}
+	}
+	dc.addValue("label",label);
+	this->diagram()->project()->addElementAutoNum(formula_name,ncc.next());
+	this->setElementInformations(dc);
+	this->setTaggedText("label", label);
+}
+
+/**
+ * @brief ElementTextItem::setTaggedText
+ * Set text @newstr to the text tagged with @tagg.
+ * If tagg is found return the text item, else return NULL.
+ * @param tagg required tagg
+ * @param newstr new label
+ * @param noeditable set editable or not (by default, set editable)
+ */
+ElementTextItem* Element::setTaggedText(const QString &tagg, const QString &newstr, const bool noeditable) {
+	ElementTextItem *eti = taggedText(tagg);
+	if (eti) {
+		eti -> setPlainText(newstr);
+		eti -> setNoEditable(noeditable);
+	}
+	return eti;
+}
+

Modified: trunk/sources/qetgraphicsitem/element.h
===================================================================
--- trunk/sources/qetgraphicsitem/element.h	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/qetgraphicsitem/element.h	2016-07-10 01:33:49 UTC (rev 4569)
@@ -118,6 +118,7 @@
 		QList <QUuid>     tmp_uuids_link;
 		QUuid             uuid_;
 		kind              link_type_;
+		ElementTextItem* setTaggedText(const QString &tagg, const QString &newstr, const bool noeditable=false);
 
 	signals:
 		void linkedElementChanged(); //This signal is emited when the linked elements with this element change
@@ -133,6 +134,7 @@
 																									//about the herited class like contactelement for know
 																									// kind of contact (simple tempo) or number of contact show by the element.
 		QString assignVariables (QString, Element *);
+		void assignSeq ();
 
 	//ATTRIBUTES
 	protected:

Modified: trunk/sources/qetgraphicsitem/masterelement.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/masterelement.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/qetgraphicsitem/masterelement.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -128,7 +128,7 @@
  */
 void MasterElement::changeElementInfo(){
 	QString temp_label = this->elementInformations()["label"].toString();
-	if (temp_label.contains("\%l")||temp_label.contains("\%c")||temp_label.contains("\%f")||temp_label.contains("\%F")) {
+	if (temp_label.contains("\%")) {
 		if (this->diagram()!=NULL)
 			this->updateLabel(this->elementInformations(),this->elementInformations());
 	}

Modified: trunk/sources/qetgraphicsitem/simpleelement.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/simpleelement.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/qetgraphicsitem/simpleelement.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -62,7 +62,7 @@
  */
 void SimpleElement::changeElementInfo(){
 	QString temp_label = this->elementInformations()["label"].toString();
-	if (temp_label.contains("\%l")||temp_label.contains("\%c")||temp_label.contains("\%f")||temp_label.contains("\%F")) {
+	if (temp_label.contains("\%")) {
 		if (this->diagram()!=NULL)
 			this->updateLabel(this->elementInformations(),this->elementInformations());
 	}

Modified: trunk/sources/qetproject.cpp
===================================================================
--- trunk/sources/qetproject.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/qetproject.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -410,15 +410,42 @@
 
 /**
  * @brief QETProject::elementAutoNum
- * @return Formula of element autonum stored in project
+ * @return All value of element autonum stored in project
  */
-QString QETProject::elementAutoNum() const {
+QHash <QString, NumerotationContext> QETProject::elementAutoNum() const {
 	return m_element_autonum;
 }
 
 /**
+ * @brief QETProject::elementAutoNum_2
+ * @return Title and Formula Hash
+ */
+QHash <QString, QString> QETProject::elementAutoNum_2() {
+	return m_element_autonum_formula;
+}
+
+/**
+ * @brief QETProject::elementAutoNumFormula
+ * @param element autonum title
+ * @return Formula of element autonum stored in element autonum
+ */
+QString QETProject::elementAutoNumFormula (QString key) const {
+	if (m_element_autonum.contains(key))
+	return m_element_autonum_formula[key];
+	else return "";
+}
+
+/**
+ * @brief QETProject::elementAutoNumFormula
+ * @return current formula being used by project
+ */
+QString QETProject::elementAutoNumFormula () const {
+	return m_current_element_formula;
+}
+
+/**
  * @brief QETProject::folioAutoNum
- * @return All value of conductor autonum stored in project
+ * @return All value of folio autonum stored in project
  */
 QHash <QString, NumerotationContext> QETProject::folioAutoNum() const {
 	return  m_folio_autonum;
@@ -436,15 +463,36 @@
 }
 
 /**
- * @brief QETProject::addElementAutoNum
+ * @brief QETProject::addElementAutoNumFormula
  * Add the new formula
  * @param formula
  */
-void QETProject::addElementAutoNum(QString formula) {
-	m_element_autonum = formula;
+void QETProject::addElementAutoNumFormula(QString key, QString formula) {
+	m_element_autonum_formula.insert(key, formula);
 }
 
 /**
+ * @brief QETProject::addElementAutoNumCurrentFormula
+ * Add the formula to the current formula
+ * @param formula
+ */
+void QETProject::addElementAutoNumCurrentFormula(QString formula) {
+	m_current_element_formula = formula;
+}
+
+
+/**
+ * @brief QETProject::addElementAutoNum
+ * Add a new element numerotation context. If key already exist,
+ * replace old context by the new context
+ * @param key
+ * @param context
+ */
+void QETProject::addElementAutoNum(QString key, NumerotationContext context) {
+	m_element_autonum.insert(key, context);
+}
+
+/**
  * @brief QETProject::addFolioAutoNum
  * Add a new folio numerotation context. If key already exist,
  * replace old context by the new context
@@ -456,15 +504,24 @@
 }
 
 /**
- * @brief QETProject::removeConductorAutonum
+ * @brief QETProject::removeConductorAutoNum
  * Remove Conductor Numerotation Context stored with key
  * @param key
  */
-void QETProject::removeConductorAutonum(QString key) {
+void QETProject::removeConductorAutoNum(QString key) {
 	m_conductor_autonum.remove(key);
 }
 
 /**
+ * @brief QETProject::removeElementAutonum
+ * Remove Element Numerotation Context stored with key
+ * @param key
+ */
+void QETProject::removeElementAutoNum(QString key) {
+	m_element_autonum.remove(key);
+}
+
+/**
  * @brief QETProject::removeFolioAutonum
  * Remove Folio Numerotation Context stored with key
  * @param key
@@ -485,6 +542,17 @@
 }
 
 /**
+ * @brief QETProject::elementAutoNum
+ * Return element numerotation context stored with @key.
+ * If key is not found, return an empty numerotation context
+ * @param key
+ */
+NumerotationContext QETProject::elementAutoNum (const QString &key) const {
+	if (m_element_autonum.contains(key)) return m_element_autonum[key];
+	else return NumerotationContext();
+}
+
+/**
  * @brief QETProject::folioAutoNum
  * Return folio numerotation context stored with @key.
  * If key is not found, return an empty numerotation context
@@ -508,7 +576,7 @@
 /**
  * @brief QETProject::autoFolio
  * @return true if use of auto folio is authorized.
- * See also Q_PROPERTY autoFolio
+ * See also Q_PROPERTY autoConductor
  */
 bool QETProject::autoFolio() const
 {
@@ -531,7 +599,7 @@
  * @brief QETProject::setAutoFolio
  * @param ac
  * Enable the use of auto folio if true
- * See also Q_PROPERTY autoConductor
+ * See also Q_PROPERTY autoFolio
  */
 void QETProject::setAutoFolio(bool af)
 {
@@ -1244,7 +1312,7 @@
 	if (!folio_autonums.isNull())
 	{
 		foreach (QDomElement elmt, QET::findInDomElement(folio_autonums, "folio_autonum"))
-	{
+		{
 			NumerotationContext nc;
 			nc.fromXml(elmt);
 			m_folio_autonum.insert(elmt.attribute("title"), nc);
@@ -1252,7 +1320,14 @@
 	}
 	if (!element_autonums.isNull())
 	{
-		m_element_autonum = element_autonums.attribute("formula");
+		m_current_element_formula = element_autonums.attribute("current_formula");
+		foreach (QDomElement elmt, QET::findInDomElement(element_autonums, "element_autonum"))
+		{
+			NumerotationContext nc;
+			nc.fromXml(elmt);
+			m_element_autonum.insert(elmt.attribute("title"), nc);
+			m_element_autonum_formula.insert(elmt.attribute("title"),elmt.attribute("formula"));
+		}
 	}
 }
 
@@ -1326,7 +1401,13 @@
 
 	//Export Element Autonums
 	QDomElement element_autonums = xml_document.createElement("element_autonums");
-	element_autonums.setAttribute("formula", m_element_autonum);
+	element_autonums.setAttribute("current_formula", m_current_element_formula);
+	foreach (QString key, elementAutoNum().keys()) {
+	QDomElement element_autonum = elementAutoNum(key).toXml(xml_document, "element_autonum");
+		element_autonum.setAttribute("title", key);
+		element_autonum.setAttribute("formula", elementAutoNumFormula(key));
+		element_autonums.appendChild(element_autonum);
+	}
 	xml_element.appendChild(element_autonums);
 }
 

Modified: trunk/sources/qetproject.h
===================================================================
--- trunk/sources/qetproject.h	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/qetproject.h	2016-07-10 01:33:49 UTC (rev 4569)
@@ -107,19 +107,28 @@
 		void setDefaultXRefProperties(QHash <QString, XRefProperties> hash);
 
 		QHash <QString, NumerotationContext> conductorAutoNum() const;
+		QHash <QString, NumerotationContext> elementAutoNum() const;
+		QHash <QString, QString>             elementAutoNum_2();
 		QHash <QString, NumerotationContext> folioAutoNum() const;
 		void addConductorAutoNum (QString key, NumerotationContext context);
-		void addElementAutoNum   (QString formula);
+		void addElementAutoNum (QString key, NumerotationContext context);
+		void addElementAutoNumFormula (QString key, QString formula);
+		void addElementAutoNumCurrentFormula (QString formula);
 		void addFolioAutoNum     (QString key, NumerotationContext context);
-		void removeConductorAutonum (QString key);
+		void removeConductorAutoNum (QString key);
+		void removeElementAutoNum (QString key);
 		void removeFolioAutoNum (QString key);
 		NumerotationContext conductorAutoNum(const QString &key) const;
-		NumerotationContext folioAutoNum(const QString &key)    const;
-		QString elementAutoNum() const;
+		NumerotationContext folioAutoNum(const QString &key)     const;
+		NumerotationContext elementAutoNum(const QString &key)   const;
+		QString elementAutoNumFormula(const QString key) const; //returns Formula
+		QString elementAutoNumFormula() const;
 
-		bool autoConductor    () const;
-		bool autoFolio  () const;
+		bool autoConductor () const;
+		bool autoElement () const;
+		bool autoFolio () const;
 		void setAutoConductor (bool ac);
+		void setAutoElement (bool ae);
 		void setAutoFolio (bool af);
 		void autoFolioNumberingNewFolios ();
 		void autoFolioNumberingSelectedFolios(int, int, QString);
@@ -223,7 +232,9 @@
 	/// Folio auto numbering
 	QHash <QString, NumerotationContext> m_folio_autonum;
 	/// Element Auto Numbering
-	QString m_element_autonum;
+	QHash <QString, QString> m_element_autonum_formula; //Title and Formula hash
+	QHash <QString, NumerotationContext> m_element_autonum; //Title and NumContext hash
+	QString m_current_element_formula;
 	/// Folio List Sheets quantity for this project.
 	int folioSheetsQuantity;
 	bool m_auto_conductor;

Modified: trunk/sources/ui/elementautonumberingw.cpp
===================================================================
--- trunk/sources/ui/elementautonumberingw.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/elementautonumberingw.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -30,7 +30,7 @@
 
 {
 	ui->setupUi(this);
-	applyEnable(false);
+	setContext(formula_);
 }
 
 /**
@@ -50,6 +50,14 @@
 }
 
 /**
+ * @brief ElementAutonumberingW::clearContext
+ * @param clear formula line edit text
+ */
+void ElementAutonumberingW::clearContext() {
+	ui->m_formula_le->clear();
+}
+
+/**
  * @brief ElementAutonumberingW::formula
  * @return formula to be stored into project
  */
@@ -61,32 +69,6 @@
  * @brief ElementAutonumberingW::on_m_formula_le_textChanged
  * Update Apply Button
  */
-void ElementAutonumberingW::on_m_formula_le_textChanged() {
-	if (!ui->m_formula_le->text().isEmpty())
-		applyEnable(true);
-	else applyEnable(false);
+void ElementAutonumberingW::on_m_formula_le_textChanged(QString text) {
+	emit (textChanged(text));
 }
-
-/**
- * @brief ElementAutonumberingW::on_buttonBox_clicked
- * Action on @buttonBox clicked
- */
-void ElementAutonumberingW::on_buttonBox_clicked(QAbstractButton *button) {
-	//transform button to int
-	int answer = ui -> buttonBox -> buttonRole(button);
-
-	switch (answer) {
-		case QDialogButtonBox::ApplyRole:
-			applyEnable(true);
-			emit applyPressed();
-			break;
-	}
-}
-
-/**
- * @brief ElementAutonumberingW::applyEnable
- * enable/disable the apply button
- */
-void ElementAutonumberingW::applyEnable(bool b) {
-		ui -> buttonBox -> button(QDialogButtonBox::Apply) -> setEnabled(b);
-}

Modified: trunk/sources/ui/elementautonumberingw.h
===================================================================
--- trunk/sources/ui/elementautonumberingw.h	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/elementautonumberingw.h	2016-07-10 01:33:49 UTC (rev 4569)
@@ -42,23 +42,24 @@
 		~ElementAutonumberingW();
 		QString formula();
 		void setContext(QString);
+		void clearContext();
+		Ui::ElementAutonumberingW *ui;
 
-
 	private:
 
 	// SIGNALS
 	signals:
 		void applyPressed();
+		void textChanged(QString);
 
 	//SLOTS
 	private slots:
-		void on_m_formula_le_textChanged();
-		void on_buttonBox_clicked(QAbstractButton *);
-		void applyEnable (bool = true);
+		void on_m_formula_le_textChanged(QString);
 
 	//ATTRIBUTES
 	private:
-		Ui::ElementAutonumberingW *ui;
+		QString formula_;
+
 };
 
 #endif // ELEMENTAUTONUMBERINGW_H

Modified: trunk/sources/ui/elementautonumberingw.ui
===================================================================
--- trunk/sources/ui/elementautonumberingw.ui	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/elementautonumberingw.ui	2016-07-10 01:33:49 UTC (rev 4569)
@@ -6,19 +6,19 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>460</width>
-    <height>550</height>
+    <width>383</width>
+    <height>305</height>
    </rect>
   </property>
   <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
   </property>
   <property name="minimumSize">
    <size>
-    <width>460</width>
+    <width>0</width>
     <height>0</height>
    </size>
   </property>
@@ -30,117 +30,59 @@
     <enum>QLayout::SetDefaultConstraint</enum>
    </property>
    <item>
-    <widget class="QScrollArea" name="scrollArea">
+    <widget class="QGroupBox" name="groupBox">
      <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+      <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
        <horstretch>0</horstretch>
-       <verstretch>50</verstretch>
+       <verstretch>0</verstretch>
       </sizepolicy>
      </property>
-     <property name="minimumSize">
-      <size>
-       <width>0</width>
-       <height>0</height>
-      </size>
+     <property name="title">
+      <string>Auto Naming Pattern:</string>
      </property>
-     <property name="sizeIncrement">
-      <size>
-       <width>0</width>
-       <height>50</height>
-      </size>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="1">
+       <widget class="QLineEdit" name="m_formula_le">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="inputMask">
+         <string notr="true"/>
+        </property>
+        <property name="text">
+         <string notr="true"/>
+        </property>
+        <property name="placeholderText">
+         <string>Insert Formula Here e.g.: %prefix%l%c</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0">
+       <widget class="QLabel" name="label_5">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Formula:</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="locale">
+      <locale language="French" country="France"/>
      </property>
-     <property name="mouseTracking">
-      <bool>false</bool>
-     </property>
-     <property name="layoutDirection">
-      <enum>Qt::LeftToRight</enum>
-     </property>
-     <property name="verticalScrollBarPolicy">
-      <enum>Qt::ScrollBarAsNeeded</enum>
-     </property>
-     <property name="horizontalScrollBarPolicy">
-      <enum>Qt::ScrollBarAlwaysOff</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QAbstractScrollArea::AdjustToContents</enum>
-     </property>
-     <property name="widgetResizable">
-      <bool>true</bool>
-     </property>
-     <property name="alignment">
-      <set>Qt::AlignHCenter|Qt::AlignTop</set>
-     </property>
-     <widget class="QWidget" name="scrollAreaWidgetContents">
-      <property name="geometry">
-       <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>440</width>
-        <height>498</height>
-       </rect>
-      </property>
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-        <horstretch>0</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>0</height>
-       </size>
-      </property>
-      <layout class="QGridLayout" name="gridLayout">
-       <property name="sizeConstraint">
-        <enum>QLayout::SetFixedSize</enum>
-       </property>
-       <item row="4" column="1" colspan="2">
-        <spacer name="verticalSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="1" column="1" rowspan="2" colspan="2">
-        <widget class="QGroupBox" name="groupBox">
-         <property name="title">
-          <string>Auto Naming Pattern:</string>
-         </property>
-         <layout class="QGridLayout" name="gridLayout_4">
-          <item row="0" column="1">
-           <widget class="QLineEdit" name="m_formula_le">
-            <property name="inputMask">
-             <string notr="true"/>
-            </property>
-            <property name="text">
-             <string notr="true"/>
-            </property>
-            <property name="placeholderText">
-             <string>Insert Formula Here e.g.: %prefix%l%c</string>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="0">
-           <widget class="QLabel" name="label_5">
-            <property name="text">
-             <string>Formula:</string>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="0" rowspan="2" colspan="3">
-           <widget class="QLabel" name="label">
-            <property name="locale">
-             <locale language="French" country="France"/>
-            </property>
-            <property name="text">
-             <string>You can use the following variables to your formula:
+     <property name="text">
+      <string>You can use the following variables to your formula:
  -%prefix: Default Element Prefix
  -%l: Element Line
  -%c: Element Column
@@ -148,29 +90,23 @@
  -%f or %id: Folio ID
  -%total: Total of folios
 You can also assign any other titleblock variable 
-that you create. Text and number inputs are also available</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
-      </layout>
-     </widget>
+that you create. Text and number inputs are
+ also available.</string>
+     </property>
     </widget>
    </item>
    <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
      </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Apply</set>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
      </property>
-    </widget>
+    </spacer>
    </item>
   </layout>
  </widget>

Modified: trunk/sources/ui/numparteditorw.cpp
===================================================================
--- trunk/sources/ui/numparteditorw.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/numparteditorw.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -29,6 +29,7 @@
 {
 	ui -> setupUi(this);
 	if (parentWidget()->parentWidget()->objectName()=="FolioTab") ui->type_combo->setMaxCount(4);
+	else if (parentWidget()->parentWidget()->objectName()=="ConductorTab") ui->type_combo->setMaxCount(6);
 	setType(NumPartEditorW::unit, true);
 }
 
@@ -42,7 +43,8 @@
 	intValidator (new QIntValidator(0,99999,this))
 {
 	ui -> setupUi(this);
-	if (parentWidget()->parentWidget()->objectName()=="FolioTab") ui->type_combo->setMaxCount(5);
+	if (parentWidget()->parentWidget()->objectName()=="FolioTab") ui->type_combo->setMaxCount(4);
+	else if (parentWidget()->parentWidget()->objectName()=="ConductorTab") ui->type_combo->setMaxCount(6);
 	//if @context contains nothing build with default value
 	if(context.size()==0) setType(NumPartEditorW::unit, true);
 
@@ -54,6 +56,9 @@
 		else if (strl.at(0)=="string") setType(NumPartEditorW::string);
 		else if (strl.at(0)=="idfolio") setType(NumPartEditorW::idfolio);
 		else if (strl.at(0)=="folio") setType(NumPartEditorW::folio);
+		else if (strl.at(0)=="elementline") setType(NumPartEditorW::elementline);
+		else if (strl.at(0)=="elementcolumn") setType(NumPartEditorW::elementcolumn);
+		else if (strl.at(0)=="elementprefix") setType(NumPartEditorW::elementprefix);
 		ui -> value_field -> setText(strl.at(1));
 		ui -> increase_spinBox -> setValue(strl.at(2).toInt());
 	}
@@ -94,6 +99,15 @@
 		case folio:
 			type_str = "folio";
 			break;
+		case elementline:
+			type_str = "elementline";
+			break;
+		case elementcolumn:
+			type_str = "elementcolumn";
+			break;
+		case elementprefix:
+			type_str = "elementprefix";
+			break;
 	}
 	nc.addValue(type_str, ui -> value_field -> displayText(), ui -> increase_spinBox -> value());
 	return nc;
@@ -104,7 +118,8 @@
  * @return true if value field isn't empty or if type is folio
  */
 bool NumPartEditorW::isValid() {
-	if (type_ == folio||type_ == idfolio) {return true;}
+	if (type_ == folio || type_ == idfolio || type_ == elementline ||
+		type_ == elementcolumn || type_ == elementprefix) {return true;}
 	else if(ui -> value_field -> text().isEmpty()) {return false;}
 	else return true;
 }
@@ -133,6 +148,15 @@
 		case folio:
 			setType(folio);
 			break;
+		case elementline:
+			setType(elementline);
+			break;
+		case elementcolumn:
+			setType(elementcolumn);
+			break;
+		case elementprefix:
+			setType(elementprefix);
+			break;
 	};
 	emit changed();
 }
@@ -164,7 +188,10 @@
 
 	//if @t is a numeric type and preview type @type_ isn't a numeric type
 	//or @fnum is true, we set numeric behavior
-	if ( ((t==unit || t==ten || t==hundred) && (type_==string || type_==folio || type_==idfolio)) || fnum) {
+	if ( ((t==unit || t==ten || t==hundred) &&
+		  (type_==string || type_==folio || type_==idfolio ||
+		   type_==elementcolumn || type_==elementline || type_==elementprefix))
+		 || fnum) {
 		ui -> value_field -> clear();
 		ui -> value_field -> setEnabled(true);
 		ui -> value_field -> setValidator(intValidator);
@@ -172,7 +199,8 @@
 		ui -> increase_spinBox -> setValue(1);
 	}
 	//@t isn't a numeric type
-	else if (t==string || t==folio || t==idfolio) {
+	else if (t == string || t == folio || t == idfolio || t == elementline ||
+			 t == elementcolumn || t == elementprefix) {
 		ui -> value_field -> clear();
 		ui -> increase_spinBox -> setDisabled(true);
 		if (t==string) {
@@ -187,6 +215,18 @@
 			ui -> value_field -> setDisabled(true);
 			ui -> increase_spinBox -> setDisabled(true);
 		}
+		else if (t==elementcolumn) {
+			ui -> value_field -> setDisabled(true);
+			ui -> increase_spinBox -> setDisabled(true);
+		}
+		else if (t==elementline) {
+			ui -> value_field -> setDisabled(true);
+			ui -> increase_spinBox -> setDisabled(true);
+		}
+		else if (t==elementprefix) {
+			ui -> value_field -> setDisabled(true);
+			ui -> increase_spinBox -> setDisabled(true);
+		}
 	}
 	type_= t;
 }

Modified: trunk/sources/ui/numparteditorw.h
===================================================================
--- trunk/sources/ui/numparteditorw.h	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/numparteditorw.h	2016-07-10 01:33:49 UTC (rev 4569)
@@ -41,11 +41,11 @@
 	NumPartEditorW (NumerotationContext &, int, QWidget *parent=0);
 	~NumPartEditorW();
 
-	enum type {unit,ten,hundred,string,idfolio,folio};
+	enum type {unit,ten,hundred,string,idfolio,folio,elementline,elementcolumn,elementprefix};
 	NumerotationContext toNumContext();
 	bool isValid ();
+	type type_;
 
-
 	private slots:
 	void on_type_combo_activated(int);
 	void on_value_field_textEdited();
@@ -58,8 +58,8 @@
 	private:
 	Ui::NumPartEditorW *ui;
 	QValidator *intValidator;
-	type type_;
 
+
 };
 
 #endif // NUMPARTEDITORW_H

Modified: trunk/sources/ui/numparteditorw.ui
===================================================================
--- trunk/sources/ui/numparteditorw.ui	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/numparteditorw.ui	2016-07-10 01:33:49 UTC (rev 4569)
@@ -6,20 +6,29 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>308</width>
-    <height>45</height>
+    <width>368</width>
+    <height>33</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
   <layout class="QHBoxLayout" name="horizontalLayout_2">
+   <property name="spacing">
+    <number>3</number>
+   </property>
    <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>2</number>
+   </property>
    <property name="rightMargin">
     <number>0</number>
    </property>
+   <property name="bottomMargin">
+    <number>2</number>
+   </property>
    <item>
     <widget class="QComboBox" name="type_combo">
      <property name="sizePolicy">
@@ -61,6 +70,21 @@
        <string>Folio</string>
       </property>
      </item>
+     <item>
+      <property name="text">
+       <string>Element Line</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Element Column</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Element Prefix</string>
+      </property>
+     </item>
     </widget>
    </item>
    <item>

Modified: trunk/sources/ui/selectautonumw.cpp
===================================================================
--- trunk/sources/ui/selectautonumw.cpp	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/selectautonumw.cpp	2016-07-10 01:33:49 UTC (rev 4569)
@@ -20,6 +20,9 @@
 #include "numparteditorw.h"
 #include <QMessageBox>
 #include "numerotationcontextcommands.h"
+#include "elementautonumberingw.h"
+#include "ui_elementautonumberingw.h"
+#include "qdebug.h"
 
 /**
  * Constructor
@@ -28,7 +31,13 @@
 	QWidget(parent),
 	ui(new Ui::SelectAutonumW)
 {
+
 	ui->setupUi(this);
+	if (this->parentWidget() -> objectName()=="ElementTab"){
+		m_eaw = new ElementAutonumberingW();
+		connect(m_eaw,SIGNAL(textChanged(QString)),this,SLOT(formula_textChanged(QString)));
+		ui->scrollAreaWidgetContents->layout()->addWidget(m_eaw);
+	}
 	setContext(NumerotationContext());
 }
 
@@ -36,6 +45,11 @@
 	QWidget(parent),
 	ui(new Ui::SelectAutonumW)
 {
+	if (this->parentWidget() -> objectName()=="ElementTab"){
+		m_eaw = new ElementAutonumberingW();
+		connect(m_eaw,SIGNAL(textChanged(QString)),this,SLOT(formula_textChanged(QString)));
+		ui->scrollAreaWidgetContents->layout()->addWidget(m_eaw);
+	}
 	ui->setupUi(this);
 	setContext(context);
 }
@@ -118,6 +132,14 @@
 }
 
 /**
+ * @brief SelectAutonumW::elementFormula
+ * @return element autonumbering widget formula
+ */
+QString SelectAutonumW::elementFormula() {
+	return m_eaw->formula();
+}
+
+/**
  * @brief SelectAutonumW::on_buttonBox_clicked
  * Action on @buttonBox clicked
  */
@@ -189,11 +211,59 @@
 		foreach (NumPartEditorW *npe, num_part_list_) if (!npe -> isValid()) valid= false;
 		ui -> buttonBox -> button(QDialogButtonBox::Apply) -> setEnabled(valid);
 	}
-	else
+	else {
 		ui -> buttonBox -> button(QDialogButtonBox::Apply) -> setEnabled(b);
+	}
+	if (this->parentWidget() -> objectName()=="ElementTab")
+		contextToFormula();
 }
 
 /**
+ * @brief SelectAutonumW::contextToFormula
+ * Apply formula to ElementAutonumbering Widget
+ */
+void SelectAutonumW::contextToFormula() {
+	m_eaw->clearContext();
+	int count_unit = 0;
+	int count_ten = 0;
+	int count_hundred = 0;
+	foreach (NumPartEditorW *npe, num_part_list_) {
+		if (npe->isValid()) {
+			if (npe->type_ == NumPartEditorW::idfolio) {
+				m_eaw->setContext("%id");
+			}
+			else if (npe->type_ == NumPartEditorW::folio) {
+				m_eaw->setContext("%F");
+			}
+			else if (npe->type_ == NumPartEditorW::elementcolumn) {
+				m_eaw->setContext("%c");
+			}
+			else if (npe->type_ == NumPartEditorW::elementline) {
+				m_eaw->setContext("%l");
+			}
+			else if (npe->type_ == NumPartEditorW::elementprefix) {
+				m_eaw->setContext("%prefix");
+			}
+			else if (npe->type_ == NumPartEditorW::string) {
+				m_eaw->setContext(npe->toNumContext().itemAt(0).at(1));
+			}
+			else if (npe->type_ == NumPartEditorW::unit) {
+				count_unit++;
+				m_eaw->setContext("%sequ_"+QString::number(count_unit));
+			}
+			else if (npe->type_ == NumPartEditorW::ten) {
+				count_ten++;
+				m_eaw->setContext("%seqt_"+QString::number(count_ten));
+			}
+			else if (npe->type_ == NumPartEditorW::hundred) {
+				count_hundred++;
+				m_eaw->setContext("%seqh_"+QString::number(count_hundred));
+			}
+		}
+	}
+}
+
+/**
  * @brief SelectAutonumW::on_m_next_pb_clicked
  * Increase NumerotationContext
  */

Modified: trunk/sources/ui/selectautonumw.h
===================================================================
--- trunk/sources/ui/selectautonumw.h	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/selectautonumw.h	2016-07-10 01:33:49 UTC (rev 4569)
@@ -20,6 +20,7 @@
 
 #include <QWidget>
 #include "numerotationcontext.h"
+#include "elementautonumberingw.h"
 
 class NumPartEditorW;
 class QAbstractButton;
@@ -40,6 +41,8 @@
 
 		void setContext (const NumerotationContext &context);
 		NumerotationContext toNumContext() const;
+		void contextToFormula ();
+		QString elementFormula();
 
 	signals:
 		void applyPressed();
@@ -51,15 +54,15 @@
 		void on_buttonBox_clicked(QAbstractButton *);
 		void applyEnable (bool = true);
 
-	//ATTRIBUTS
+	//ATTRIBUTES
 		void on_m_next_pb_clicked();
-
 		void on_m_previous_pb_clicked();
 
 	private:
 		Ui::SelectAutonumW *ui;
 		QList <NumPartEditorW *> num_part_list_;
 		NumerotationContext m_context;
+		ElementAutonumberingW *m_eaw;
 };
 
 #endif // SELECTAUTONUMW_H

Modified: trunk/sources/ui/selectautonumw.ui
===================================================================
--- trunk/sources/ui/selectautonumw.ui	2016-07-09 18:24:40 UTC (rev 4568)
+++ trunk/sources/ui/selectautonumw.ui	2016-07-10 01:33:49 UTC (rev 4569)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>418</width>
-    <height>506</height>
+    <height>508</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -269,7 +269,7 @@
             <property name="sizeHint" stdset="0">
              <size>
               <width>20</width>
-              <height>30</height>
+              <height>0</height>
              </size>
             </property>
            </spacer>


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/