QElectroTech  0.70
autonumberingdockwidget.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 */
19 #include "qetapp.h"
20 #include "ui_autonumberingdockwidget.h"
21 #include "diagramview.h"
22 #include "diagram.h"
23 #include "titleblockproperties.h"
24 #include "numerotationcontext.h"
26 
33  QDockWidget(parent),
35 {
36  ui->setupUi(this);
37  this->setDisabled(true);
38 }
39 
45 {
46  this->disconnect();
47  delete ui;
48 }
49 
55 {
56  ui->m_conductor_cb->clear();
57  ui->m_element_cb->clear();
58  ui->m_folio_cb->clear();
59 }
60 
62 {
63  m_project = nullptr;
64  m_project_view = nullptr;
65  clear();
66  this->setDisabled(true);
67 }
68 
76 {
77  //Disconnect previous project
79  {
80  //Conductor Signals
81  disconnect(m_project, SIGNAL(conductorAutoNumChanged()),this,SLOT(conductorAutoNumChanged()));
82  disconnect (m_project,SIGNAL(conductorAutoNumRemoved()), this,SLOT(conductorAutoNumChanged()));
83  disconnect (m_project,SIGNAL(conductorAutoNumAdded()), this,SLOT(conductorAutoNumChanged()));
84  disconnect(m_project_view,SIGNAL(diagramActivated(DiagramView*)),this,SLOT(setConductorActive(DiagramView*)));
85 
86  //Element Signals
87  disconnect (m_project,SIGNAL(elementAutoNumRemoved(QString)), this,SLOT(elementAutoNumChanged()));
88  disconnect (m_project,SIGNAL(elementAutoNumAdded(QString)), this,SLOT(elementAutoNumChanged()));
89 
90  //Folio Signals
91  disconnect (m_project,SIGNAL(folioAutoNumRemoved()), this,SLOT(folioAutoNumChanged()));
92  disconnect (m_project,SIGNAL(folioAutoNumAdded()), this,SLOT(folioAutoNumChanged()));
93  disconnect (this,
94  SIGNAL(folioAutoNumChanged(QString)),
96  SLOT (slot_setAutoPageNum(QString)));
97  disconnect(m_project, SIGNAL(defaultTitleBlockPropertiesChanged()),this,SLOT(setActive()));
98 
99  //Conductor, Element and Folio Signals
100  disconnect(m_project, &QETProject::destroyed, this, &AutoNumberingDockWidget::projectClosed);
101  }
102 
103  m_project = project;
104  m_project_view = projectview;
105  this->setEnabled(true);
106 
107  //Conductor Signals
108  connect(m_project, SIGNAL(conductorAutoNumChanged()),this,SLOT(conductorAutoNumChanged()));
109  connect(m_project,SIGNAL(conductorAutoNumRemoved()), this,SLOT(conductorAutoNumChanged()));
110  connect(m_project,SIGNAL(conductorAutoNumAdded()), this,SLOT(conductorAutoNumChanged()));
111  connect(m_project_view,SIGNAL(diagramActivated(DiagramView*)),this,SLOT(setConductorActive(DiagramView*)));
112 
113  //Element Signals
114  connect (m_project,SIGNAL(elementAutoNumRemoved(QString)), this,SLOT(elementAutoNumChanged()));
115  connect (m_project,SIGNAL(elementAutoNumAdded(QString)), this,SLOT(elementAutoNumChanged()));
116 
117  //Folio Signals
118  connect (m_project,SIGNAL(folioAutoNumRemoved()), this,SLOT(folioAutoNumChanged()));
119  connect (m_project,SIGNAL(folioAutoNumAdded()), this,SLOT(folioAutoNumChanged()));
120  connect (this,
121  SIGNAL(folioAutoNumChanged(QString)),
123  SLOT (slot_setAutoPageNum(QString)));
124  connect(m_project, SIGNAL(defaultTitleBlockPropertiesChanged()),this,SLOT(setActive()));
125 
126  //Conductor, Element and Folio Signals
127  connect(m_project, &QETProject::destroyed, this, &AutoNumberingDockWidget::projectClosed);
128 
129  //Set Combobox Context
130  setContext();
131 
132  ui->m_configure_pb->setShortcut(QKeySequence( tr("Ctrl+Shift+P")));
133 }
134 
140 
141  this->clear();
142 
143  //Conductor Combobox
144  ui->m_conductor_cb->addItem("");
145  QList <QString> keys_conductor = m_project->conductorAutoNum().keys();
146  if (!keys_conductor.isEmpty()) {
147  foreach (QString str, keys_conductor) { ui->m_conductor_cb-> addItem(str); }
148  }
149 
150  //Element Combobox
151  ui->m_element_cb->addItem("");
152  QList <QString> keys_element = m_project->elementAutoNum().keys();
153  if (!keys_element.isEmpty()) {
154  foreach (QString str, keys_element) {ui->m_element_cb -> addItem(str);}
155  }
156 
157  //Folio Combobox
158  ui->m_folio_cb->addItem("");
159  QList <QString> keys_folio = m_project->folioAutoNum().keys();
160  if (!keys_folio.isEmpty()) {
161  foreach (QString str, keys_folio) { ui->m_folio_cb -> addItem(str);}
162  }
163 
164  this->setActive();
165 }
166 
172  if (dv!=nullptr) {
173  QString conductor_autonum = dv->diagram()->conductorsAutonumName();
174  int conductor_index = ui->m_conductor_cb->findText(conductor_autonum);
175  ui->m_conductor_cb->setCurrentIndex(conductor_index);
176  }
177 }
178 
184 
185  if (m_project_view!=nullptr) {
186  //Conductor
188  QString conductor_autonum = m_project_view->currentDiagram()->diagram()->conductorsAutonumName();
189  int conductor_index = ui->m_conductor_cb->findText(conductor_autonum);
190  ui->m_conductor_cb->setCurrentIndex(conductor_index);
191  }
192 
193  //Element
194  QString element_formula = m_project->elementAutoNumCurrentFormula();
195  QString active_element_autonum = m_project->elementCurrentAutoNum();
196  int el_index = ui->m_element_cb->findText(active_element_autonum);
197  ui->m_element_cb->setCurrentIndex(el_index);
198 
199  //Folio
200  if (m_project->defaultTitleBlockProperties().folio == "%autonum") {
201  QString page_autonum = m_project->defaultTitleBlockProperties().auto_page_num;
202  int folio_index = ui->m_folio_cb->findText(page_autonum);
203  ui->m_folio_cb->setCurrentIndex(folio_index);
204  }
205  }
206 }
207 
213  ui->m_conductor_cb->clear();
214 
215  //Conductor Combobox
216  ui->m_conductor_cb->addItem("");
217  QList <QString> keys_conductor = m_project->conductorAutoNum().keys();
218  if (!keys_conductor.isEmpty()) {
219  foreach (QString str, keys_conductor) { ui->m_conductor_cb-> addItem(str); }
220  }
221  setActive();
222 }
223 
230 {
231  QString current_autonum = ui->m_conductor_cb->currentText();
232 
233  m_project->setCurrentConductorAutoNum(current_autonum);
236 }
237 
243 
244  ui->m_element_cb->clear();
245 
246  //Element Combobox
247  ui->m_element_cb->addItem("");
248  QList <QString> keys_element = m_project->elementAutoNum().keys();
249  if (!keys_element.isEmpty()) {
250  foreach (QString str, keys_element) {ui->m_element_cb -> addItem(str);}
251  }
252  setActive();
253 }
254 
261 {
262  m_project->setCurrrentElementAutonum(ui->m_element_cb->currentText());
264 }
265 
271 
272  ui->m_folio_cb->clear();
273 
274  //Folio Combobox
275  ui->m_folio_cb->addItem("");
276  QList <QString> keys_folio = m_project->folioAutoNum().keys();
277  if (!keys_folio.isEmpty()) {
278  foreach (QString str, keys_folio) { ui->m_folio_cb -> addItem(str);}
279  }
280  setActive();
281 }
282 
289  QString current_autonum = ui->m_folio_cb->currentText();
290  TitleBlockProperties ip = m_project -> defaultTitleBlockProperties();
291  if (current_autonum != "") {
292  ip.setAutoPageNum(current_autonum);
293  ip.folio = "%autonum";
295  }
296  else {
297  ip.folio = "%id/%total";
299  }
300  emit(folioAutoNumChanged(current_autonum));
301 }
302 
304 {
305  if (m_project)
306  {
309  ppd.exec();
310  }
311 }
The ProjectPropertiesDialog class this class builds a dialog to edit whole properties of a project...
TitleBlockProperties defaultTitleBlockProperties() const
Definition: qetproject.cpp:415
void setDefaultTitleBlockProperties(const TitleBlockProperties &)
QETProject::setDefaultTitleBlockProperties Specify the title block to be used at the creation of a ne...
Definition: qetproject.cpp:424
void setConductorsAutonumName(const QString &name)
Diagram::setConductorsAutonumName.
Definition: diagram.cpp:496
QHash< QString, NumerotationContext > conductorAutoNum() const
QETProject::conductorAutoNum.
Definition: qetproject.cpp:494
Diagram * diagram()
Definition: diagramview.h:67
void setCurrrentElementAutonum(QString autoNum)
QETProject::setCurrrentElementAutonum.
Definition: qetproject.cpp:540
void clear()
AutoNumberingDockWidget::clear Remove all combo box values.
void setConductorActive(DiagramView *)
AutoNumberingDockWidget::setConductorActive.
void setProject(QETProject *, ProjectView *)
AutoNumberingDockWidget::setProject.
~AutoNumberingDockWidget() override
AutoNumberingDockWidget::~AutoNumberingDockWidget Destructor.
QHash< QString, NumerotationContext > folioAutoNum() const
QETProject::folioAutoNum.
Definition: qetproject.cpp:577
void setCurrentConductorAutoNum(QString autoNum)
QETProject::setCurrentConductorAutoNum.
Definition: qetproject.cpp:569
void on_m_element_cb_activated(int)
AutoNumberingDockWidget::on_m_element_cb_activated.
void on_m_folio_cb_activated(int)
AutoNumberingDockWidget::on_m_folio_cb_activated.
AutoNumberingDockWidget(QWidget *parent=nullptr)
AutoNumberingDockWidget::AutoNumberingDockWidget Constructor.
void exec()
ProjectPropertiesDialog::exec execute this dialog.
QString elementAutoNumCurrentFormula() const
QETProject::elementAutoNumCurrentFormula.
Definition: qetproject.cpp:524
QString conductorsAutonumName() const
Diagram::conductorsAutonumName.
Definition: diagram.cpp:488
QIcon tr
Definition: qeticons.cpp:204
DiagramView * currentDiagram() const
ProjectView::currentDiagram.
void conductorAutoNumChanged()
AutoNumberingDockWidget::conductorAutoNumChanged Add new or remove conductor auto num from combobox...
void folioAutoNumChanged()
AutoNumberingDockWidget::folioAutoNumChanged Add new or remove folio auto num from combobox...
QString elementCurrentAutoNum() const
QETProject::elementCurrentAutoNum.
Definition: qetproject.cpp:532
void setContext()
AutoNumberingDockWidget::setContext Add all itens to comboboxes.
void setAutoPageNum(QString autonum)
void setCurrentPage(ProjectPropertiesDialog::Page)
ProjectPropertiesDialog::setCurrentPage Change the current displayed page by p.
void loadCndFolioSeq()
Diagram::loadCndFolioSeq This class loads all conductor folio sequential variables related to the cur...
Definition: diagram.cpp:1415
void elementAutoNumChanged()
AutoNumberingDockWidget::elementAutoNumChanged Add new or remove element auto num from combobox...
void loadElmtFolioSeq()
Diagram::loadElmtFolioSeq This class loads all folio sequential variables related to the current auto...
Definition: diagram.cpp:1357
Ui::AutoNumberingDockWidget * ui
QString folio
Folio information (displayed by the default template)
QHash< QString, NumerotationContext > elementAutoNum() const
QETProject::elementAutoNum.
Definition: qetproject.cpp:502
BorderTitleBlock border_and_titleblock
Diagram dimensions and title block.
Definition: diagram.h:74
void setActive()
AutoNumberingDockWidget::setActive Set current used autonumberings.
void on_m_conductor_cb_activated(int)
AutoNumberingDockWidget::on_m_conductor_cb_activated.