QElectroTech  0.70
selectautonumw.cpp
Go to the documentation of this file.
1 /*
2  Copyright 2006-2019 The QElectroTech Team
3  This file is part of QElectroTech.
4 
5  QElectroTech is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 2 of the License, or
8  (at your option) any later version.
9 
10  QElectroTech is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #include "selectautonumw.h"
19 #include "ui_selectautonumw.h"
20 #include "numparteditorw.h"
21 #include <QMessageBox>
23 #include "formulaautonumberingw.h"
24 #include "ui_formulaautonumberingw.h"
25 #include "assignvariables.h"
26 
30 SelectAutonumW::SelectAutonumW(int type, QWidget *parent) :
31  QWidget(parent),
32  ui(new Ui::SelectAutonumW),
33  m_edited_type(type)
34 {
35 
36  ui->setupUi(this);
37  ui->m_comboBox->lineEdit()->setClearButtonEnabled(true);
38  if (m_edited_type == 0)
39  {
41  m_feaw->ui->label->setHidden(true);
42  ui->m_widget->layout()->addWidget(m_feaw);
43  }
44  else if (m_edited_type == 1)
45  {
47  m_fcaw->ui->label->setHidden(true);
48  ui->m_widget->layout()->addWidget(m_fcaw);
49  }
51 }
52 
53 SelectAutonumW::SelectAutonumW(const NumerotationContext &context, int type, QWidget *parent) :
54  QWidget(parent),
55  ui(new Ui::SelectAutonumW),
56  m_edited_type(type)
57 {
58  if (m_edited_type == 0)
59  {
61  m_feaw->ui->label->setHidden(true);
62  ui->m_widget->layout()->addWidget(m_feaw);
63  }
64  else if (m_edited_type == 1)
65  {
67  m_fcaw->ui->label->setHidden(true);
68  ui->m_widget->layout()->addWidget(m_fcaw);
69  }
70  ui->setupUi(this);
71  setContext(context);
72 }
73 
78 {
79  delete ui;
80 }
81 
87  m_context = context;
88 
89  qDeleteAll(num_part_list_);
90  num_part_list_.clear();
91 
92  if (m_context.size() == 0) { //@context contain nothing, build a default numPartEditor
94  }
95  else {
96  for (int i=0; i<m_context.size(); ++i) { //build with the content of @context
98  connect (part, SIGNAL(changed()), this, SLOT(applyEnable()));
99  num_part_list_ << part;
100  ui -> editor_layout -> addWidget(part);
101  }
102  }
103 
104  num_part_list_.size() == 1 ?
105  ui -> remove_button -> setDisabled(true):
106  ui -> remove_button -> setEnabled (true);
107 
108  applyEnable(false);
109 }
110 
117  foreach (NumPartEditorW *npew, num_part_list_) nc << npew -> toNumContext();
118  return nc;
119 }
120 
126 {
127  applyEnable(false);
128  NumPartEditorW *part = new NumPartEditorW(m_edited_type, this);
129  connect (part, SIGNAL(changed()), this, SLOT(applyEnable()));
130  num_part_list_ << part;
131  ui -> editor_layout -> addWidget(part);
132  ui -> remove_button -> setEnabled(true);
133 }
134 
140  //remove if @num_part_list contains more than one item
141  if (num_part_list_.size() > 1) {
142  NumPartEditorW *part = num_part_list_.takeLast();
143  disconnect(part, SIGNAL(changed()), this, SLOT(applyEnable()));
144  delete part;
145  if (num_part_list_.size() == 1) {
146  ui -> remove_button -> setDisabled(true);
147  }
148  }
149  applyEnable();
150 }
151 
157 {
158  if (m_edited_type == 0)
159  return m_feaw->formula();
160  else if (m_edited_type == 1)
161  return m_fcaw->formula();
162  else
163  return "";
164 }
165 
167 {
168  return ui->m_comboBox;
169 }
170 
175 void SelectAutonumW::on_buttonBox_clicked(QAbstractButton *button) {
176  //transform button to int
177  int answer = ui -> buttonBox -> buttonRole(button);
178  switch (answer) {
179  //Reset the curent context
180  case QDialogButtonBox::ResetRole:
182  break;
183  //help dialog
184  case QDialogButtonBox::HelpRole:
185  if (m_edited_type == 2)
186  {
187  QMessageBox::information (this, tr("Folio Autonumérotation", "title window"),
188  tr("C'est ici que vous pouvez définir la manière dont seront numérotés les nouveaux folios.\n"
189  "-Une numérotation est composée d'une variable minimum.\n"
190  "-Vous pouvez ajouter ou supprimer une variable de numérotation par le biais des boutons - et +.\n"
191  "-Une variable de numérotation comprend : un type, une valeur et une incrémentation.\n"
192 
193  "\n-les types \"Chiffre 1\", \"Chiffre 01\" et \"Chiffre 001\", représentent un type numérique défini dans le champ \"Valeur\", "
194  "qui s'incrémente à chaque nouveau folio de la valeur du champ \"Incrémentation\".\n"
195  "-\"Chiffre 01\" et \"Chiffre 001\", sont respectivement représentés sur le schéma par deux et trois digits minimum.\n"
196  "Si le chiffre défini dans le champ Valeur possède moins de digits que le type choisi,"
197  "celui-ci sera précédé par un ou deux 0 afin de respecter son type.\n"
198 
199  "\n-Le type \"Texte\", représente un texte fixe.\nLe champ \"Incrémentation\" n'est pas utilisé.\n",
200  "help dialog about the folio autonumerotation"
201  ));
202  break;
203  }
204  else
205  {
206  QMessageBox::information (this, tr("Conducteur Autonumérotation", "title window"),
207  tr("C'est ici que vous pouvez définir la manière dont seront numérotés les nouveaux conducteurs.\n"
208  "-Une numérotation est composée d'une variable minimum.\n"
209  "-Vous pouvez ajouter ou supprimer une variable de numérotation par le biais des boutons - et +.\n"
210  "-Une variable de numérotation comprend : un type, une valeur et une incrémentation.\n"
211 
212  "\n-les types \"Chiffre 1\", \"Chiffre 01\" et \"Chiffre 001\", représentent un type numérique défini dans le champ \"Valeur\", "
213  "qui s'incrémente à chaque nouveau conducteur de la valeur du champ \"Incrémentation\".\n"
214  "-\"Chiffre 01\" et \"Chiffre 001\", sont respectivement représentés sur le schéma par deux et trois digits minimum.\n"
215  "Si le chiffre défini dans le champ Valeur possède moins de digits que le type choisi,"
216  "celui-ci sera précédé par un ou deux 0 afin de respecter son type.\n"
217 
218  "\n-Le type \"Texte\", représente un texte fixe.\nLe champ \"Incrémentation\" n'est pas utilisé.\n"
219 
220  "\n-Le type \"N° folio\" représente le n° du folio en cours.\nLes autres champs ne sont pas utilisés.\n"
221 
222  "\n-Le type \"Folio\" représente le nom du folio en cours.\nLes autres champs ne sont pas utilisés.",
223  "help dialog about the conductor autonumerotation"
224  ));
225  break;
226  }
227  //apply the context in the diagram displayed by @diagram_chooser.
228  case QDialogButtonBox::ApplyRole:
229  applyEnable(false);
230  emit applyPressed();
231  break;
232  };
233 }
234 
240  if (b){
241  bool valid= true;
242  foreach (NumPartEditorW *npe, num_part_list_) if (!npe -> isValid()) valid= false;
243  ui -> buttonBox -> button(QDialogButtonBox::Apply) -> setEnabled(valid);
244  }
245  else {
246  ui -> buttonBox -> button(QDialogButtonBox::Apply) -> setEnabled(b);
247  }
248  if (m_edited_type == 0)
250  if (m_edited_type == 1)
252 }
253 
259 {
260  FormulaAutonumberingW* m_faw = nullptr;
261  if (m_edited_type == 0)
262  m_faw = m_feaw;
263  else if (m_edited_type == 1)
264  m_faw = m_fcaw;
265 
266  if (m_faw)
267  {
268  m_faw->clearContext();
270  }
271 }
272 
278 {
280  setContext(ncc.next());
281  applyEnable(true);
282 }
283 
289 {
291  setContext(ncc.previous());
292  applyEnable(true);
293 }
294 
296 {
297  Q_UNUSED(arg1);
298  applyEnable(true);
299 }
300 
302 {
303  emit removeClicked();
304 }
FormulaAutonumberingW * m_fcaw
Ui::SelectAutonumW * ui
void on_add_button_clicked()
SelectAutonumW::on_add_button_clicked Action on add_button, add a .
void on_m_previous_pb_clicked()
SelectAutonumW::on_m_previous_pb_clicked Decrease NumerotationContext.
Ui::FormulaAutonumberingW * ui
void removeClicked()
NumerotationContext next()
NumerotationContextCommands::next.
NumerotationContext m_context
FormulaAutonumberingW * m_feaw
void setContext(const QString &)
FormulaAutonumberingW::setContext.
QString numerotationContextToFormula(const NumerotationContext &nc)
numerotationContextToFormula
NumerotationContext previous()
NumerotationContextCommands::previous.
void applyEnable(bool=true)
SelectAutonumW::applyEnable enable/disable the apply button.
void on_m_remove_pb_clicked()
Ui::SearchAndReplaceWidget * ui
void contextToFormula()
SelectAutonumW::contextToFormula Apply formula to ElementAutonumbering Widget.
void clearContext()
FormulaAutonumberingW::clearContext.
int size() const
NumerotationContext::size.
QString formula()
SelectAutonumW::formula.
QComboBox * contextComboBox() const
QIcon tr
Definition: qeticons.cpp:204
void setContext(const NumerotationContext &context)
SelectAutonumW::setCurrentContext build the context of current diagram selected in the QcomboBox...
~SelectAutonumW() override
QList< NumPartEditorW * > num_part_list_
SelectAutonumW(int type, QWidget *parent=nullptr)
void applyPressed()
void on_m_next_pb_clicked()
SelectAutonumW::on_m_next_pb_clicked Increase NumerotationContext.
void on_remove_button_clicked()
SelectAutonumW::on_remove_button_clicked Action on remove button, remove the last ...
void on_m_comboBox_currentTextChanged(const QString &arg1)
NumerotationContext toNumContext() const
SelectAutonumW::toNumContext.
QMessageBox::StandardButton information(QWidget *, const QString &, const QString &, QMessageBox::StandardButtons=QMessageBox::Ok, QMessageBox::StandardButton=QMessageBox::NoButton)
void on_buttonBox_clicked(QAbstractButton *)
SelectAutonumW::on_buttonBox_clicked Action on clicked.
QString formula()
FormulaAutonumberingW::formula.