DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
table.cpp File Reference
#include "dbe/table.hpp"
#include "dbe/Conversion.hpp"
#include "dbe/Exceptions.hpp"
#include "dbe/StyleUtility.hpp"
#include "dbe/confaccessor.hpp"
#include "dbe/config_api_set.hpp"
#include "dbe/dbcontroller.hpp"
#include "dbe/messenger.hpp"
#include "dbe/treenode.hpp"
#include <QBrush>
#include <QFont>
#include <QMimeData>
#include <bitset>
Include dependency graph for table.cpp:

Go to the source code of this file.

Functions

 MODEL_COMMON_INTERFACE_CREATE_THAT_OBJ_IMPL (dbe::models::table)
 MODEL_COMMON_INTERFACE_DELETE_THAT_OBJ_IMPL (dbe::models::table)
 MODEL_COMMON_INTERFACE_RENAME_THAT_OBJ_IMPL (dbe::models::table)
 MODEL_COMMON_INTERFACE_UPDATE_THAT_OBJ_IMPL (dbe::models::table)
 MODEL_COMMON_INTERFACE_LOOKUP_IMPL (dbe::models::table)
 MODEL_REMOVE_ROWS_DEF (dbe::models::table)

Function Documentation

◆ MODEL_COMMON_INTERFACE_CREATE_THAT_OBJ_IMPL()

MODEL_COMMON_INTERFACE_CREATE_THAT_OBJ_IMPL ( dbe::models::table )

Definition at line 492 of file table.cpp.

493{
494 Q_UNUSED(index);
495 if (treenode* handlerclass = confaccessor::gethandler()->getnode(obj.class_name())) {
496 if (obj.class_name() == this_class_name.toStdString() or
497 config::api::info::onclass::derived(this_class_name.toStdString(), obj.class_name())) {
498
499 dbe::treenode const* handlernode = dbe::datahandler::findchild(handlerclass, QString::fromStdString(obj.UID()));
500
501 if (handlernode == nullptr) {
502 handlernode = new ObjectNode(obj, false, handlerclass);
503 }
504
505 emit layoutAboutToBeChanged();
506
507 // We assume that the objects are sorted and we want to insert a new element
508
509 tref const handlerobj = handlernode->GetObject();
510 auto sit = this_structure.begin();
511 auto it = this_objects.begin();
512
513 for (; it != this_objects.end() and sit != this_structure.end() and it->UID() < handlerobj.UID(); ++it, ++sit) {
514 }
515
516 this_structure.insert(++sit, createrow(handlernode));
517
518 this_objects.insert(++it, handlerobj);
519
520 // Normally we would have to call changePersistentIndex.
521 // Because an objectnode is created which had no index
522 // before this creation had occured there is no need to call it.
523 emit layoutChanged();
524 }
525 }
526}
static treenode * findchild(treenode *top, QString const &name)
virtual tref GetObject() const
Definition treenode.cpp:76
inner::configobject::tref tref
Definition tref.hpp:36

◆ MODEL_COMMON_INTERFACE_DELETE_THAT_OBJ_IMPL()

MODEL_COMMON_INTERFACE_DELETE_THAT_OBJ_IMPL ( dbe::models::table )

Definition at line 528 of file table.cpp.

529{
530 if (index.isValid()) {
531 try {
532 this->removeRows(index.row(), 1, index.parent());
533 } catch (daq::dbe::ObjectChangeWasNotSuccessful const& err) {
534 WARN("Object cannot be deleted", dbe::config::errors::parse(err).c_str());
535 }
536 }
537}
#define WARN(...)
Definition messenger.hpp:82
std::string const parse(ers::Issue const &)

◆ MODEL_COMMON_INTERFACE_LOOKUP_IMPL()

MODEL_COMMON_INTERFACE_LOOKUP_IMPL ( dbe::models::table )

Definition at line 591 of file table.cpp.

592{
593 for (int row = 0; row < this_objects.size(); ++row) {
594 dref ListElement = this_objects.at(row);
595
596 if (ListElement.UID() == obj.UID()) {
597 return this->index(row, 0);
598 }
599 }
600
601 return QModelIndex();
602}
config_object_description dref

◆ MODEL_COMMON_INTERFACE_RENAME_THAT_OBJ_IMPL()

MODEL_COMMON_INTERFACE_RENAME_THAT_OBJ_IMPL ( dbe::models::table )

Definition at line 539 of file table.cpp.

540{
541 if (index.isValid()) {
542 type_datum* element = getnode(index);
543 element->resetdata(QStringList(QString::fromStdString(obj.ref().UID())));
544 this_objects[index.row()] = obj.ref();
545 emit dataChanged(index, index);
546 }
547}

◆ MODEL_COMMON_INTERFACE_UPDATE_THAT_OBJ_IMPL()

MODEL_COMMON_INTERFACE_UPDATE_THAT_OBJ_IMPL ( dbe::models::table )

Definition at line 549 of file table.cpp.

550{
551 if (treenode* handlerclass = confaccessor::gethandler()->getnode(obj.class_name())) {
552 if (obj.class_name() == this_class_name.toStdString() or
553 config::api::info::onclass::derived(this_class_name.toStdString(), obj.class_name())) {
554 dbe::treenode const* handlernode = dbe::datahandler::findchild(handlerclass, QString::fromStdString(obj.UID()));
555
556 tref handlerobj = handlernode->GetObject();
557
558 auto sit = this_structure.begin();
559 auto it = this_objects.begin();
560
561 // find the object to be updated by looping through both objects and nodes
562
563 for (; it != this_objects.end() and sit != this_structure.end() and it->UID() != handlerobj.UID(); ++it, ++sit)
564
565 ;
566
567 // delete all table nodes in the list ( remove elements of the row )
568 for (TableNode* x : *sit) {
569 delete x;
570 }
571
572 // Recreate the row
573 *sit = createrow(handlernode);
574
575 int row = index.row() == 0 ? 0 : index.row() - 1;
576
577 int column = index.column() == 0 ? 0 : index.column() - 1;
578
579 emit dataChanged(createIndex(row, column), createIndex(row + 1, column + 1));
580 }
581 }
582}

◆ MODEL_REMOVE_ROWS_DEF()

MODEL_REMOVE_ROWS_DEF ( dbe::models::table )

Definition at line 607 of file table.cpp.

608{
609 beginRemoveRows(parent, row, row + count - 1);
610
611 for (; count != 0; --count) {
612 this_structure.removeOne(this_structure.at(row + count - 1));
613 this_objects.removeAt(row + count - 1);
614 }
615
616 endRemoveRows();
617 return true;
618}