DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dbe::BatchChangeWidget Class Reference

#include <BatchChangeWidget.hpp>

Inheritance diagram for dbe::BatchChangeWidget:
[legend]
Collaboration diagram for dbe::BatchChangeWidget:
[legend]

Signals

void sig_batch_change_start ()
 
void sig_batch_change_stop (const QList< QPair< QString, QString > > &)
 

Public Member Functions

 ~BatchChangeWidget ()
 
 BatchChangeWidget (QWidget *parent=nullptr)
 
 BatchChangeWidget (bool ObjectsFromTable, QString ClassName, std::vector< dref > &Objects, QWidget *parent=nullptr)
 

Private Slots

void FillInfo (const QString &Name)
 
void MakeChanges ()
 
void FindMatching ()
 
void EnableCheckBox (QString RelationshipName)
 
void UpdateRelationshipFilter (int)
 
void UpdateRelationshipNewValues (int)
 

Private Member Functions

void SetController ()
 
void filter (std::vector< dref > &Objects, const QString &ClassName)
 

Private Attributes

std::unique_ptr< dbe::Ui::BatchChangeWidget > ui
 
std::vector< drefTableObjects
 
bool UseTable
 
bool ClassChanged
 
QString TableClass
 
std::unique_ptr< QTableWidget > m_filter_table
 

Detailed Description

Definition at line 20 of file BatchChangeWidget.hpp.

Constructor & Destructor Documentation

◆ ~BatchChangeWidget()

dbe::BatchChangeWidget::~BatchChangeWidget ( )
default

◆ BatchChangeWidget() [1/2]

dbe::BatchChangeWidget::BatchChangeWidget ( QWidget * parent = nullptr)

Definition at line 19 of file BatchChangeWidget.cpp.

20 :
21 QWidget ( parent ),
22 ui ( new Ui::BatchChangeWidget ),
23 UseTable ( false ),
24 ClassChanged ( true ),
25 TableClass ( "" ),
26 m_filter_table ( nullptr )
27{
28 ui->setupUi ( this );
29 ui->TitleLabel->setStyleSheet (
30 "QLabel { background-color:green; color:beige; font:bold14px; border-style:outset; border-width:2px;"
31 "border-radius:10px; border-color:beige; font:bold14px; min-width:10em; padding:6px}" );
32 ui->FirstStepLabel->setStyleSheet ( "QLabel { color:#DB5816; font: bold 14px;}" );
33 ui->SecondStepLabel->setStyleSheet ( "QLabel { color:#DE8A14; font: bold 14px;}" );
34 ui->ThirdStepLabel->setStyleSheet ( "QLabel { color:#8DAA2E; font: bold 14px;}" );
35 setWindowTitle ( "Batch Change" );
36
37 QStringList ListOfClasses ( dbe::config::api::info::onclass::allnames<QStringList>() );
38 ui->ClassCombo->addItems ( ListOfClasses );
39 ui->ClassCombo->setEditable ( true );
40 ui->ClassCombo->setEditText ( "Type/Select Classes" );
41
42 ui->AttributeBox->setEnabled ( false );
43 ui->RelationshipBox->setEnabled ( false );
44 ui->NewAttributeGroupBox->setEnabled ( false );
45 ui->NewRelationshipGroupBox->setEnabled ( false );
46 ui->MatchButton->setEnabled ( false );
47 ui->FilterUid->setText ( "*" );
48 ui->AttributeValueFilter->setText ( "*" );
49
51}
std::unique_ptr< dbe::Ui::BatchChangeWidget > ui
std::unique_ptr< QTableWidget > m_filter_table

◆ BatchChangeWidget() [2/2]

dbe::BatchChangeWidget::BatchChangeWidget ( bool ObjectsFromTable,
QString ClassName,
std::vector< dref > & Objects,
QWidget * parent = nullptr )

Definition at line 53 of file BatchChangeWidget.cpp.

55 :
56 BatchChangeWidget ( parent )
57{
58 ClassChanged = false;
59
60 TableObjects = Objects;
61 UseTable = ObjectsFromTable;
62 TableClass = ClassName;
63
64 ui->ClassCombo->setCurrentIndex ( ui->ClassCombo->findText ( TableClass ) );
65 ui->SubclassesCheckBox->setEnabled ( false );
67
68 if ( UseTable )
69 {
70 setWindowTitle ( "Batch change - Table" );
71 ui->FilterGroupBox->hide();
72 ui->Label1->hide();
73 ui->Label2->hide();
74 ui->FirstStepLabel->hide();
75 ui->SecondStepLabel->hide();
76 ui->ThirdStepLabel->hide();
77 ui->Line1->hide();
78 ui->Line2->hide();
79 ui->TitleLabel->setText ( "Batch Change of multiple objects - Table" );
80 resize ( 540, 280 );
81 }
82}
BatchChangeWidget(QWidget *parent=nullptr)
void FillInfo(const QString &Name)
std::vector< dref > TableObjects

Member Function Documentation

◆ EnableCheckBox

void dbe::BatchChangeWidget::EnableCheckBox ( QString RelationshipName)
privateslot

Definition at line 521 of file BatchChangeWidget.cpp.

522{
523 QString ClassName = ui->ClassCombo->currentText();
525 ClassName.toStdString(), false );
526 std::vector<dunedaq::conffwk::relationship_t> RelationshipList = ClassInfo.p_relationships;
527
528 for ( dunedaq::conffwk::relationship_t & i : RelationshipList )
529 {
530 if ( i.p_name == RelationshipName.toStdString() )
531 {
532 if ( ( i.p_cardinality == dunedaq::conffwk::zero_or_many ) || ( i.p_cardinality
534 {
535 ui->AddCheckBox->setEnabled ( true );
536 }
537 else
538 {
539 ui->AddCheckBox->setEnabled ( false );
540 }
541
542 break;
543 }
544 }
545}
static dunedaq::conffwk::class_t definition(std::string const &cn, bool direct_only)
const std::vector< relationship_t > p_relationships
Definition Schema.hpp:164

◆ FillInfo

void dbe::BatchChangeWidget::FillInfo ( const QString & Name)
privateslot

Definition at line 223 of file BatchChangeWidget.cpp.

224{
225 ui->AttributeBox->setEnabled ( false );
226 ui->RelationshipBox->setEnabled ( false );
227 ui->NewAttributeGroupBox->setEnabled ( false );
228 ui->NewRelationshipGroupBox->setEnabled ( false );
229
231 Name.toStdString(),
232 false );
233 const std::vector<dunedaq::conffwk::attribute_t> AttributeList = ClassInfo.p_attributes;
234 const std::vector<dunedaq::conffwk::relationship_t> RelationshipList = ClassInfo
236
237 QStringList ValueList;
238
239 for ( dunedaq::conffwk::attribute_t Attribute : AttributeList )
240 {
241 ValueList.append ( QString ( Attribute.p_name.c_str() ) );
242 }
243
244 ui->AttributeComboBox->clear();
245 ui->NewAttributeComboBox->clear();
246 ui->AttributeComboBox->addItems ( ValueList );
247 ui->NewAttributeComboBox->addItems ( ValueList );
248
249 if ( !AttributeList.empty() && !UseTable )
250 {
251 ui->AttributeBox->setEnabled ( true );
252 ui->NewAttributeGroupBox->setEnabled ( true );
253 ui->MatchButton->setEnabled ( true );
254 }
255
256 if ( !AttributeList.empty() && UseTable )
257 {
258 ui->NewAttributeGroupBox->setEnabled ( true );
259 }
260
261 ValueList.clear();
262
263 for ( dunedaq::conffwk::relationship_t Relationship : RelationshipList )
264 {
265 ValueList.append ( QString ( Relationship.p_name.c_str() ) );
266 }
267
268 ui->RelationshipComboBox->clear();
269 ui->NewRelationshipComboBox->clear();
270 ui->RelationshipComboBox->addItems ( ValueList );
271 ui->NewRelationshipComboBox->addItems ( ValueList );
272
273 if ( !RelationshipList.empty() && !UseTable )
274 {
275 ui->RelationshipBox->setEnabled ( true );
276 ui->NewRelationshipGroupBox->setEnabled ( true );
277 ui->MatchButton->setEnabled ( true );
278 }
279
280 if ( !RelationshipList.empty() && UseTable )
281 {
282 ui->NewRelationshipGroupBox->setEnabled ( true );
283 }
284
285 if ( !UseTable )
286 {
289 ui->RelationshipValueFilter->setCurrentIndex ( 0 );
290 ui->RelationshipEdit->setCurrentIndex ( -1 );
291 }
292 else
293 {
295 ui->RelationshipEdit->setCurrentIndex ( -1 );
296 }
297
298 if ( ClassChanged )
299 {
300 UseTable = false;
301 }
302
303 ClassChanged = true;
304}
const std::vector< attribute_t > p_attributes
Definition Schema.hpp:163

◆ filter()

void dbe::BatchChangeWidget::filter ( std::vector< dref > & Objects,
const QString & ClassName )
private

Filtering Attributes

Definition at line 115 of file BatchChangeWidget.cpp.

116{
117
119 cname.toStdString(), false );
120 std::vector<dunedaq::conffwk::attribute_t> const & attributes = cinfo.p_attributes;
121 std::vector<dunedaq::conffwk::relationship_t> const & relations = cinfo.p_relationships;
122
123 // Filtering UID
124 std::vector<dref> filtered;
125
126 if ( !ui->FilterUid->text().isEmpty() )
127 {
128 QRegExp uidfilter ( ui->FilterUid->text() );
129 uidfilter.setPatternSyntax ( QRegExp::Wildcard );
130
131 for ( dbe::dref const & it : objs )
132 {
133
134 if ( uidfilter.exactMatch ( QString::fromStdString ( it.ref().UID() ) ) )
135 {
136 filtered.push_back ( it );
137 }
138 }
139
140 objs = filtered;
141 filtered.clear();
142 }
143
145 QRegExp attribute_filter ( ui->AttributeValueFilter->text() );
146 attribute_filter.setPatternSyntax ( QRegExp::Wildcard );
147
148 std::string selected_attribute_name = ui->AttributeComboBox->currentText().toStdString();
149
150 std::vector<dunedaq::conffwk::attribute_t>::const_iterator attrdef = std::find_if (
151 std::begin ( attributes ), std::end ( attributes ),
152 [&selected_attribute_name] ( dunedaq::conffwk::attribute_t const & attr )
153 {
154 return attr.p_name == selected_attribute_name;
155 } );
156
157 if ( attrdef != std::end ( attributes ) )
158 {
159 for ( dbe::dref const & it : objs )
160 {
161 QStringList values
163
164 for ( QString & v : values )
165 if ( attribute_filter.exactMatch ( v ) )
166 {
167 filtered.push_back ( it );
168 break;
169 }
170 }
171
172 }
173
174 objs = filtered;
175 filtered.clear();
176
177 // Filter on Relationship
178
179 std::string selected_relation_name =
180 ui->RelationshipComboBox->currentText().toStdString();
181
182 std::vector<dunedaq::conffwk::relationship_t>::const_iterator relationdef = std::find_if (
183 std::begin ( relations ), std::end ( relations ),
184 [&selected_relation_name] ( dunedaq::conffwk::relationship_t const & rel )
185 {
186 return rel.p_name == selected_relation_name;
187 } );
188
189 if ( relationdef != std::end ( relations ) )
190 {
191 QRegExp relation_filter ( ui->RelationshipValueFilter->currentText() );
192 relation_filter.setPatternSyntax ( QRegExp::Wildcard );
193
194 for ( dbe::dref const & it : objs )
195 {
196 QStringList ValueList
197 {
198 dbegraph::linked::through::relation<QStringList> (
199 it.ref(), *relationdef ) };
200
201 if ( ValueList.isEmpty() and ( ui->RelationshipValueFilter->currentText() == "*"
202 or ui->RelationshipValueFilter->currentText() == "" ) )
203 {
204 filtered.push_back ( it );
205 }
206 else
207 {
208 for ( QString const & v : ValueList )
209 if ( relation_filter.exactMatch ( v ) )
210 {
211 filtered.push_back ( it );
212 break;
213 }
214 }
215 }
216
217 }
218
219 objs = filtered;
220 filtered.clear();
221}
static T list(dbe::inner::configobject::tref obj, dunedaq::conffwk::attribute_t const &attr)
std::vector< T > attributes(tref const &item)
std::vector< T > relations(tref const &item)

◆ FindMatching

void dbe::BatchChangeWidget::FindMatching ( )
privateslot

Definition at line 417 of file BatchChangeWidget.cpp.

418{
419 QString ClassName = ui->ClassCombo->currentText();
420 bool SubClasses = ui->SubclassesCheckBox->isChecked();
421
422 std::vector<tref> const & tmprefs = dbe::config::api::info::onclass::objects (
423 ClassName.toStdString(), SubClasses );
424
425 std::vector<dref> candidates;
426 std::copy ( tmprefs.begin(), tmprefs.end(), std::back_inserter ( candidates ) );
427
428 if ( !candidates.empty() )
429 {
430 filter ( candidates, ClassName );
431 }
432
433 if ( candidates.empty() )
434 {
435 QMessageBox::information ( this, tr ( "Message" ), tr ( "No objects match filter!" ) );
436 }
437 else
438 {
439 int NumberOfColumns = 1;
440 bool AttributeEnabled = false;
441 bool RelationshipEnabled = false;
442
443 if ( ui->AttributeComboBox->isEnabled() )
444 {
445 AttributeEnabled = true;
446 NumberOfColumns++;
447 }
448
449 if ( ui->RelationshipComboBox->isEnabled() )
450 {
451 RelationshipEnabled = true;
452 NumberOfColumns++;
453 }
454
455 m_filter_table = std::unique_ptr<QTableWidget> ( new QTableWidget() );
456 m_filter_table->setWindowTitle ( tr ( "Objects matching filter" ) );
457 m_filter_table->setColumnCount ( NumberOfColumns );
458 m_filter_table->setRowCount ( candidates.size() );
459
460 for ( size_t i = 0; i < candidates.size(); i++ )
461 {
462 QTableWidgetItem * AttributeValue;
463 QTableWidgetItem * RelationshipValue;
464
465 QTableWidgetItem * ObjectUid = new QTableWidgetItem (
466 tr ( "%1@%2" ).arg ( candidates.at ( i ).UID().c_str() ).arg (
467 candidates.at ( i ).class_name().c_str() ) );
468 m_filter_table->setItem ( i, 0, ObjectUid );
469
470 if ( AttributeEnabled )
471 {
473 ui->AttributeComboBox->currentText(), ClassName );
474
475 QStringList AttributeValueList
476 {
477 dbe::config::api::get::attribute::list<QStringList> ( candidates.at ( i ).ref(),
478 Attribute ) };
479
480 AttributeValue = new QTableWidgetItem ( AttributeValueList.join ( " " ) );
481 m_filter_table->setItem ( i, 1, AttributeValue );
482 }
483
484 if ( RelationshipEnabled )
485 {
487 ui->RelationshipComboBox->currentText(), ClassName );
488
489 QStringList RelationshipList
490 {
491 dbegraph::linked::through::relation<QStringList> (
492 candidates.at ( i ).ref(), Relationship ) };
493
494 RelationshipValue = new QTableWidgetItem ( RelationshipList.join ( " " ) );
495 m_filter_table->setItem ( i, 2, RelationshipValue );
496 }
497 }
498
499 QStringList Headers;
500 Headers << "Object Id";
501
502 if ( AttributeEnabled )
503 {
504 Headers << ui->AttributeComboBox->currentText();
505 }
506
507 if ( RelationshipEnabled )
508 {
509 Headers << ui->RelationshipComboBox->currentText();
510 }
511
512 m_filter_table->setHorizontalHeaderLabels ( Headers );
513
514 QHeaderView * HeaderView = m_filter_table->horizontalHeader();
515 HeaderView->setStretchLastSection ( true );
516 m_filter_table->resize ( 500, 300 );
517 m_filter_table->show();
518 }
519}
void filter(std::vector< dref > &Objects, const QString &ClassName)
static std::vector< dbe::inner::configobject::tref > objects(std::string const &cname, bool const keep_inherited=true)
dunedaq::conffwk::relationship_t match(T const &, T const &)
dunedaq::conffwk::attribute_t attributematch(QString const &, QString const &)

◆ MakeChanges

void dbe::BatchChangeWidget::MakeChanges ( )
privateslot

Definition at line 306 of file BatchChangeWidget.cpp.

307{
308 std::vector<dref> Objects;
309
310 BOOST_SCOPE_EXIT(&Objects, this_)
311 {
312 QList<QPair<QString, QString>> objs;
313 for(const auto& o : Objects) {
314 objs.append(QPair<QString, QString>(QString::fromStdString(o.class_name()),
315 QString::fromStdString(o.UID())));
316 }
317
318 this_->emit sig_batch_change_stop(objs);
319
320
321 QApplication::restoreOverrideCursor();
322 this_->ui->ChangeButton->setEnabled(true);
323 confaccessor::ref().blockSignals(false);
324 }
325 BOOST_SCOPE_EXIT_END
326
327 ui->ChangeButton->setEnabled(false);
328 QApplication::setOverrideCursor(Qt::WaitCursor);
329 confaccessor::ref().blockSignals(true);
330
331 bool SubClasses = ui->SubclassesCheckBox->isChecked();
332 QString ClassName = ui->ClassCombo->currentText();
333
334 std::unique_ptr<dbe::interface::messenger::batch_guard> batchmode (
336
338
339 if ( not UseTable )
340 {
341 std::vector<tref> const & tmprefs = dbe::config::api::info::onclass::objects (
342 ClassName.toStdString(), SubClasses );
343
344 std::copy ( tmprefs.begin(), tmprefs.end(), std::back_inserter ( Objects ) );
345
346 if ( not Objects.empty() )
347 {
348 filter ( Objects, ClassName );
349 }
350 }
351 else
352 {
353 Objects = TableObjects;
354 }
355
356 if ( Objects.empty() ) QMessageBox::information ( this, tr ( "Message" ),
357 tr ( "No objects match filter!" ) );
358 else
359 {
361 ClassName.toStdString(), false );
362 const std::vector<dunedaq::conffwk::attribute_t> AttributeList = ClassInfo.p_attributes;
363 const std::vector<dunedaq::conffwk::relationship_t> RelationshipList = ClassInfo
365 dunedaq::conffwk::attribute_t AttributeChange;
366 dunedaq::conffwk::relationship_t RelationshipChange;
367
368 for ( dunedaq::conffwk::attribute_t i : AttributeList )
369 if ( i.p_name == ui->NewAttributeComboBox->currentText().toStdString() )
370 {
371 AttributeChange = i;
372 break;
373 }
374
375 for ( dunedaq::conffwk::relationship_t i : RelationshipList )
376 if ( i.p_name == ui->NewRelationshipComboBox->currentText().toStdString() )
377 {
378 RelationshipChange = i;
379 break;
380 }
381
382 QStringList AttributeChangeList;
383
384 if ( !ui->AttributeEdit->text().isEmpty() ) AttributeChangeList
385 << ui->AttributeEdit->text();
386
387 for ( auto objects_iter = Objects.begin(); objects_iter != Objects.end(); ++objects_iter )
388 {
389 tref Object = objects_iter->ref();
390
391 QStringList RelationshipChangeList;
392
393 if ( ui->ChangeAtrributeCheckBox->isChecked() )
394 {
395 if ( !AttributeChangeList.isEmpty() )
396 {
397 dbe::config::api::set::attribute ( Object, AttributeChange, AttributeChangeList );
398 }
399 }
400
401 if ( ui->ChangeRelationshipCheckBox->isChecked() )
402 {
403 if ( ui->AddCheckBox->isChecked() )
404 {
405 RelationshipChangeList =
406 dbegraph::linked::through::relation<QStringList> (
407 Object, RelationshipChange );
408 }
409
410 RelationshipChangeList << ui->RelationshipEdit->currentText();
411 dbe::config::api::set::relation ( Object, RelationshipChange, RelationshipChangeList );
412 }
413 }
414 }
415}
void sig_batch_change_stop(const QList< QPair< QString, QString > > &)
static confaccessor & ref()
dunedaq::conffwk::ConfigObject & ref(bool check_null=true) const
static std::unique_ptr< batch_guard > batchmode()
void relation(dbe::inner::configobject::tref src, dunedaq::conffwk::relationship_t const &edge, QStringList const &targets)
void attribute(dbe::inner::configobject::tref objectref, dunedaq::conffwk::attribute_t const &attribute_info, QStringList const &attribute_values)
inner::configobject::tref tref
Definition tref.hpp:30

◆ SetController()

void dbe::BatchChangeWidget::SetController ( )
private

Definition at line 84 of file BatchChangeWidget.cpp.

85{
86 connect ( ui->ClassCombo, SIGNAL ( activated ( QString ) ), this,
87 SLOT ( FillInfo ( const QString & ) ) );
88
89 connect ( ui->ChangeButton, SIGNAL ( clicked() ), this, SLOT ( MakeChanges() ) );
90
91 connect ( ui->MatchButton, SIGNAL ( clicked() ), this, SLOT ( FindMatching() ) );
92
93 connect ( ui->NewRelationshipComboBox, SIGNAL ( activated ( QString ) ), this,
94 SLOT ( EnableCheckBox ( QString ) ) );
95 connect ( ui->CancelButton, SIGNAL ( clicked() ), this, SLOT ( close() ) );
96
97 connect ( ui->RelationshipComboBox, SIGNAL ( activated ( int ) ), this,
98 SLOT ( UpdateRelationshipFilter ( int ) ) );
99
100 connect ( ui->NewRelationshipComboBox, SIGNAL ( activated ( int ) ), this,
101 SLOT ( UpdateRelationshipNewValues ( int ) ) );
102
103 MainWindow * mainwin = MainWindow::findthis();
104
105 if ( mainwin != nullptr )
106 {
107 connect ( this, SIGNAL ( sig_batch_change_start() ), mainwin,
108 SLOT ( slot_batch_change_start() ), Qt::UniqueConnection );
109 connect ( this, SIGNAL ( sig_batch_change_stop(const QList<QPair<QString, QString>>&) ), mainwin,
110 SLOT ( slot_batch_change_stop(const QList<QPair<QString, QString>>&) ),
111 Qt::UniqueConnection );
112 }
113}
void EnableCheckBox(QString RelationshipName)
static MainWindow * findthis()

◆ sig_batch_change_start

void dbe::BatchChangeWidget::sig_batch_change_start ( )
signal

◆ sig_batch_change_stop

void dbe::BatchChangeWidget::sig_batch_change_stop ( const QList< QPair< QString, QString > > & )
signal

◆ UpdateRelationshipFilter

void dbe::BatchChangeWidget::UpdateRelationshipFilter ( int )
privateslot

Definition at line 547 of file BatchChangeWidget.cpp.

548{
549 ui->RelationshipValueFilter->clear();
550 ui->RelationshipValueFilter->addItem ( "*" );
551
552 QString ClassName = ui->ClassCombo->currentText();
553 QString RelationshipName = ui->RelationshipComboBox->currentText();
554
556 ClassName.toStdString(), false );
557 std::vector<dunedaq::conffwk::relationship_t> RelationshipList = ClassInfo.p_relationships;
558
559 if ( RelationshipList.size() != 0 )
560 {
561 dunedaq::conffwk::relationship_t ChosenRelationship;
562
563 for ( dunedaq::conffwk::relationship_t & i : RelationshipList )
564 {
565 if ( i.p_name == RelationshipName.toStdString() )
566 {
567 ChosenRelationship = i;
568 break;
569 }
570 }
571
572 std::vector<tref> const & Objects = dbe::config::api::info::onclass::objects (
573 ChosenRelationship.p_type );
574
575 QStringList ObjectsUid;
576
577 for ( tref const & Object : Objects )
578 {
579 ObjectsUid.append ( Object.UID().c_str() );
580 }
581
582 ui->RelationshipValueFilter->addItems ( ObjectsUid );
583 }
584}

◆ UpdateRelationshipNewValues

void dbe::BatchChangeWidget::UpdateRelationshipNewValues ( int )
privateslot

Definition at line 586 of file BatchChangeWidget.cpp.

587{
588 ui->RelationshipEdit->clear();
589
590 QString ClassName = ui->ClassCombo->currentText();
591 QString RelationshipName = ui->NewRelationshipComboBox->currentText();
592
594 ClassName.toStdString(), false );
595 std::vector<dunedaq::conffwk::relationship_t> RelationshipList = ClassInfo.p_relationships;
596
597 if ( RelationshipList.size() != 0 )
598 {
599 dunedaq::conffwk::relationship_t ChosenRelationship;
600
601 for ( dunedaq::conffwk::relationship_t & i : RelationshipList )
602 {
603 if ( i.p_name == RelationshipName.toStdString() )
604 {
605 ChosenRelationship = i;
606 break;
607 }
608 }
609
610 std::vector<tref> const & Objects = dbe::config::api::info::onclass::objects (
611 ChosenRelationship.p_type );
612
613 QStringList ObjectsUid;
614
615 for ( tref const & Object : Objects )
616 {
617 ObjectsUid.append ( Object.UID().c_str() );
618 }
619
620 ui->RelationshipEdit->addItems ( ObjectsUid );
621 }
622}

Member Data Documentation

◆ ClassChanged

bool dbe::BatchChangeWidget::ClassChanged
private

Definition at line 36 of file BatchChangeWidget.hpp.

◆ m_filter_table

std::unique_ptr<QTableWidget> dbe::BatchChangeWidget::m_filter_table
private

Definition at line 39 of file BatchChangeWidget.hpp.

◆ TableClass

QString dbe::BatchChangeWidget::TableClass
private

Definition at line 38 of file BatchChangeWidget.hpp.

◆ TableObjects

std::vector<dref> dbe::BatchChangeWidget::TableObjects
private

Definition at line 34 of file BatchChangeWidget.hpp.

◆ ui

std::unique_ptr<dbe::Ui::BatchChangeWidget> dbe::BatchChangeWidget::ui
private

Definition at line 33 of file BatchChangeWidget.hpp.

◆ UseTable

bool dbe::BatchChangeWidget::UseTable
private

Definition at line 36 of file BatchChangeWidget.hpp.


The documentation for this class was generated from the following files: