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

#include <FileInfo.hpp>

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

Public Member Functions

 FileInfo (QString filename, QWidget *parent=0)
 ~FileInfo ()=default
void keyPressEvent (QKeyEvent *event) override

Static Public Member Functions

static void show_file_info (const QString &filename)
static void setup_paths ()
static QList< QUrl > get_path_urls ()
static QStringList get_path_list ()
static QString prune_path (QString file)
static bool match_path (const QString &file, const QString &top_file, const QStringList &includes)
static void parse_all_objects ()
static QString check_file_includes (const QString &file)
static QString get_schema_path ()
static QString get_data_path ()
static void set_schema_path (const QString &path)
static void set_data_path (const QString &path)

Private Slots

void accept ()
void reject ()
void file_info_slot ()
void file_info_slot (const QString &fn)
void file_info_slot (QListWidgetItem *)
void edit_object_slot ()
void edit_object_slot (QListWidgetItem *)
void delete_object_slot ()
void rename_object_slot ()
void activate_schema_context_menu (QPoint point)
void activate_data_context_menu (QPoint point)
void activate_object_context_menu (QPoint point)
void add_datafile ()
void add_schemafile ()
void add_includefile (QFileDialog *fd)
void add_missing_datafiles ()
void add_missing_schemafiles ()
void remove_datafile_slot ()
void remove_schemafile_slot ()
void remove_includefile (const QString &file)
void filemodel_updated ()

Private Member Functions

void parse_objects ()
void parse_includes ()
bool check_includes ()

Private Attributes

Ui::FileInfo * m_ui
std::map< QString, const trefm_obj_map
QString m_filename
bool m_readonly {false}
QMenu * m_schema_menu {nullptr}
QMenu * m_data_menu {nullptr}
QMenu * m_object_menu {nullptr}
QUuid const m_uuid
bool m_updating {false}

Static Private Attributes

static std::map< QString, std::map< QString, const tref > > s_obj_map {}
static std::map< QString, std::set< QString > > s_missing_schema_map {}
static std::map< QString, std::set< QString > > s_missing_data_map {}
static QStringList s_path_list {}
static QList< QUrl > s_path_urls {}
static QString s_schema_path {"."}
static QString s_data_path {"."}

Detailed Description

Definition at line 24 of file FileInfo.hpp.

Constructor & Destructor Documentation

◆ FileInfo()

dbe::FileInfo::FileInfo ( QString filename,
QWidget * parent = 0 )

Definition at line 193 of file FileInfo.cpp.

194 : m_ui(new Ui::FileInfo), m_filename(filename), m_uuid(QUuid::createUuid()) {
195
196 QWidget::setAttribute(Qt::WA_DeleteOnClose);
197
198 m_ui->setupUi(this);
199 m_ui->filename->setText(filename);
201 m_ui->rstatus->setText(QString("RW"));
202 m_readonly = false;
203 }
204 else {
205 m_ui->rstatus->setText(QString("RO"));
206 m_readonly = true;
207 }
208
209 setObjectName(filename);
210 setWindowTitle("File: " + filename.section('/',-1));
211
212 setup_paths();
215
216 m_ui->schema_list->setContextMenuPolicy ( Qt::ContextMenuPolicy::CustomContextMenu );
217 m_ui->data_list->setContextMenuPolicy ( Qt::ContextMenuPolicy::CustomContextMenu );
218 m_ui->object_list->setContextMenuPolicy ( Qt::ContextMenuPolicy::CustomContextMenu );
219
220 connect (m_ui->add_schema, SIGNAL(pressed()), this, SLOT (add_schemafile()));
221 connect (m_ui->add_data, SIGNAL(pressed()), this, SLOT (add_datafile()));
222
223 connect (m_ui->add_missing_schema, SIGNAL(pressed()), this, SLOT (add_missing_schemafiles()));
224 connect (m_ui->add_missing, SIGNAL(pressed()), this, SLOT (add_missing_datafiles()));
225
226 connect (m_ui->schema_list, SIGNAL (customContextMenuRequested(QPoint)),
227 this, SLOT (activate_schema_context_menu(QPoint)));
228
229 connect (m_ui->data_list, SIGNAL (customContextMenuRequested(QPoint)),
230 this, SLOT (activate_data_context_menu(QPoint)));
231 connect (m_ui->data_list, SIGNAL (itemActivated(QListWidgetItem*)),
232 this, SLOT (file_info_slot(QListWidgetItem*)) );
233
234 connect (m_ui->object_list, SIGNAL (itemActivated(QListWidgetItem*)),
235 this, SLOT (edit_object_slot(QListWidgetItem*)) );
236 connect (m_ui->object_list, SIGNAL (customContextMenuRequested(QPoint)),
237 this, SLOT (activate_object_context_menu(QPoint)));
238
239 connect (MainWindow::findthis(), SIGNAL(signal_new_file_model()),
240 this, SLOT (filemodel_updated()));
241}
QString m_filename
Definition FileInfo.hpp:78
void add_missing_datafiles()
Definition FileInfo.cpp:426
void activate_data_context_menu(QPoint point)
Definition FileInfo.cpp:504
void parse_includes()
Definition FileInfo.cpp:285
void filemodel_updated()
Definition FileInfo.cpp:243
void add_datafile()
Definition FileInfo.cpp:372
void file_info_slot()
Definition FileInfo.cpp:454
Ui::FileInfo * m_ui
Definition FileInfo.hpp:76
void activate_schema_context_menu(QPoint point)
Definition FileInfo.cpp:483
void edit_object_slot()
Definition FileInfo.cpp:322
void add_schemafile()
Definition FileInfo.cpp:383
void activate_object_context_menu(QPoint point)
Definition FileInfo.cpp:534
static void setup_paths()
Definition FileInfo.cpp:31
void add_missing_schemafiles()
Definition FileInfo.cpp:411
QUuid const m_uuid
Definition FileInfo.hpp:83
void parse_objects()
Definition FileInfo.cpp:252
static MainWindow * findthis()
static bool check_file_rw(const QString &FileName)

◆ ~FileInfo()

dbe::FileInfo::~FileInfo ( )
default

Member Function Documentation

◆ accept

void dbe::FileInfo::accept ( )
privateslot

Definition at line 315 of file FileInfo.cpp.

315 {
316 close();
317}

◆ activate_data_context_menu

void dbe::FileInfo::activate_data_context_menu ( QPoint point)
privateslot

Definition at line 504 of file FileInfo.cpp.

504 {
505 if (m_data_menu == nullptr) {
506 m_data_menu = new QMenu(this);
507
508 auto info = new QAction(tr("Show file info"), this);
509 connect (info, SIGNAL(triggered()), this, SLOT (file_info_slot()));
510 m_data_menu->addAction(info);
511
512 if (!m_readonly) {
513 auto add = new QAction("Add include file", this);
514 connect (add, SIGNAL(triggered()), this, SLOT (add_datafile()));
515 m_data_menu->addAction(add);
516
517 auto remove = new QAction("Remove include file", this);
518 connect (remove, SIGNAL(triggered()), this, SLOT (remove_datafile_slot()));
519 m_data_menu->addAction(remove);
520 }
521 }
522
523 if (m_ui->data_list->currentIndex().isValid()) {
524 m_data_menu->actions().at(0)->setVisible (true);
525 m_data_menu->actions().at(2)->setVisible (true);
526 }
527 else {
528 m_data_menu->actions().at(0)->setVisible (false);
529 m_data_menu->actions().at(2)->setVisible (false);
530 }
531 m_data_menu->exec (m_ui->data_list->mapToGlobal(pos));
532}
QMenu * m_data_menu
Definition FileInfo.hpp:81
void remove_datafile_slot()
Definition FileInfo.cpp:444
void remove(QString const &db, QString const &fn)
void add(QString const &db, QString const &fn)

◆ activate_object_context_menu

void dbe::FileInfo::activate_object_context_menu ( QPoint point)
privateslot

Definition at line 534 of file FileInfo.cpp.

534 {
535 if (m_object_menu == nullptr) {
536 m_object_menu = new QMenu(this);
537
538 auto edit_action = new QAction(tr("&Edit object"), this);
539 connect (edit_action, SIGNAL(triggered()), this, SLOT(edit_object_slot()));
540 m_object_menu->addAction(edit_action);
541
542 auto delete_action = new QAction(tr("&Delete Object"), this );
543 connect (delete_action, SIGNAL(triggered()), this, SLOT(delete_object_slot()));
544 m_object_menu->addAction(delete_action);
545
546 auto rename_action = new QAction(tr("&Rename Object"), this );
547 connect (rename_action, SIGNAL(triggered()), this, SLOT(rename_object_slot()));
548 m_object_menu->addAction(rename_action);
549 }
550
551 if (m_ui->object_list->currentIndex().isValid()) {
552 m_object_menu->exec(m_ui->object_list->mapToGlobal(pos));
553 }
554}
void rename_object_slot()
Definition FileInfo.cpp:357
QMenu * m_object_menu
Definition FileInfo.hpp:82
void delete_object_slot()
Definition FileInfo.cpp:348

◆ activate_schema_context_menu

void dbe::FileInfo::activate_schema_context_menu ( QPoint point)
privateslot

Definition at line 483 of file FileInfo.cpp.

483 {
484 if (m_schema_menu == nullptr) {
485 m_schema_menu = new QMenu(this);
486
487 if (!m_readonly) {
488 auto add = new QAction("Add include file", this);
489 connect (add, SIGNAL(triggered()), this, SLOT (add_schemafile()));
490 m_schema_menu->addAction(add);
491
492 auto remove = new QAction("Remove include file", this);
493 connect (remove, SIGNAL(triggered()), this, SLOT (remove_schemafile_slot()));
494 m_schema_menu->addAction(remove);
495 }
496 }
497
498 if (m_ui->schema_list->currentIndex().isValid()) {
499 m_schema_menu->actions().at(1)->setVisible (true);
500 }
501 m_schema_menu->exec (m_ui->schema_list->mapToGlobal(pos));
502}
QMenu * m_schema_menu
Definition FileInfo.hpp:80
void remove_schemafile_slot()
Definition FileInfo.cpp:441

◆ add_datafile

void dbe::FileInfo::add_datafile ( )
privateslot

Definition at line 372 of file FileInfo.cpp.

372 {
373 if (s_data_path == ".") {
375 }
376 auto fd = new QFileDialog ( this, tr ( "Open Data File" ), s_data_path,
377 tr ( "XML data files (*.data.xml)" ) );
378 add_includefile(fd);
379 if (fd->result() == QDialog::Accepted) {
380 s_data_path = fd->directory().path();
381 }
382}
void add_includefile(QFileDialog *fd)
Definition FileInfo.cpp:394
static QString s_data_path
Definition FileInfo.hpp:94
static QString s_schema_path
Definition FileInfo.hpp:93

◆ add_includefile

void dbe::FileInfo::add_includefile ( QFileDialog * fd)
privateslot

Definition at line 394 of file FileInfo.cpp.

394 {
395 fd->setFileMode ( QFileDialog::ExistingFiles );
396 fd->setViewMode ( QFileDialog::Detail );
397 fd->setAcceptMode ( QFileDialog::AcceptOpen );
398 fd->setSidebarUrls(s_path_urls);
399 if (fd->exec() == QDialog::Accepted) {
400 auto files = fd->selectedFiles();
401 QScopedValueRollback<bool> rb(m_updating,true);
402 for (auto file: files) {
403 file = prune_path(file);
405 }
408 }
409}
static QString prune_path(QString file)
Definition FileInfo.cpp:63
static QList< QUrl > s_path_urls
Definition FileInfo.hpp:92

◆ add_missing_datafiles

void dbe::FileInfo::add_missing_datafiles ( )
privateslot

Definition at line 426 of file FileInfo.cpp.

426 {
427 QScopedValueRollback<bool> rb(m_updating,true);
428 auto short_filename = prune_path(m_filename);
429 if (!s_missing_data_map.contains(short_filename)) {
430 QMessageBox::warning (this, "Warning",
431 QString("Missing data map is corrupt and does not contain %1").arg(short_filename));
432 return;
433 }
434 for (const auto& file : s_missing_data_map.at(prune_path(m_filename))) {
436 }
439}
static std::map< QString, std::set< QString > > s_missing_data_map
Definition FileInfo.hpp:89

◆ add_missing_schemafiles

void dbe::FileInfo::add_missing_schemafiles ( )
privateslot

Definition at line 411 of file FileInfo.cpp.

411 {
412 QScopedValueRollback<bool> rb(m_updating,true);
413 auto short_filename = prune_path(m_filename);
414 if (!s_missing_schema_map.contains(short_filename)) {
415 QMessageBox::warning (this, "Warning",
416 QString("Missing schema map is corrupt and does not contain %1").arg(short_filename));
417 return;
418 }
419 for (const auto& file : s_missing_schema_map.at(short_filename)) {
421 }
424}
static std::map< QString, std::set< QString > > s_missing_schema_map
Definition FileInfo.hpp:88

◆ add_schemafile

void dbe::FileInfo::add_schemafile ( )
privateslot

Definition at line 383 of file FileInfo.cpp.

383 {
384 if (s_schema_path == ".") {
386 }
387 auto fd = new QFileDialog ( this, tr ( "Open Schema File" ), s_schema_path,
388 tr ( "XML schema files (*.schema.xml)" ) );
389 add_includefile(fd);
390 if (fd->result() == QDialog::Accepted) {
391 s_schema_path = fd->directory().path();
392 }
393}

◆ check_file_includes()

QString dbe::FileInfo::check_file_includes ( const QString & file)
static

Definition at line 133 of file FileInfo.cpp.

133 {
134 QString message{};
135
136 auto fname = prune_path(filename);
137 if (!s_missing_schema_map.contains(fname)) {
138 s_missing_schema_map.insert({fname,{}});
139 } else {
140 s_missing_schema_map.at(fname).clear();
141 }
142 if (!s_missing_data_map.contains(fname)) {
143 s_missing_data_map.insert({fname,{}});
144 } else {
145 s_missing_data_map.at(fname).clear();
146 }
148 filename));
149 if (s_obj_map.contains(prune_path(filename))) {
150 for (auto [id, obj] : s_obj_map.at(prune_path(filename))) {
151 dunedaq::conffwk::class_t const & classdef =
153
154 auto schema_file = QString::fromStdString(classdef.p_schema_path);
155 if (!match_path(schema_file, filename, includes)) {
156 message += QString("Object <i>" + id + "</i> is of class <i>"
157 + QString::fromStdString(obj.class_name())
158 + "</i> defined in file <b>" + schema_file
159 + "</b> which is not included<br>");
160 s_missing_schema_map.at(fname).insert(prune_path(schema_file));
161 }
162 std::vector<tref> relobjs;
163 for (auto rel: classdef.p_relationships) {
165 try {
166 relobjs.push_back(dbegraph::linked::through::relation<tref> (obj, rel));
167 }
168 catch ( daq::dbe::config_object_retrieval_result_is_null const & e ) {
169 // nothing needs be done to handle cases that a relation has not been set
170 }
171 }
172 else {
174 }
175
176 for (auto relobj : relobjs) {
177 auto file = QString::fromStdString(relobj.contained_in());
178 if (!(match_path(file, filename, includes))) {
179 message += QString("Object <i>" + id + "</i> has relationship to <i>"
180 + QString::fromStdString(relobj.full_name())
181 + "</i> in file <b>" + file
182 + "</b> which is not included<br>");
183 s_missing_data_map.at(fname).insert(prune_path(file));
184 }
185 }
186 }
187 }
188 }
189 return message;
190}
static bool match_path(const QString &file, const QString &top_file, const QStringList &includes)
Definition FileInfo.cpp:76
static std::map< QString, std::map< QString, const tref > > s_obj_map
Definition FileInfo.hpp:87
static QStringList inclusions_singlefile(QString const &)
static dunedaq::conffwk::class_t definition(std::string const &cn, bool direct_only)
Only Configuration DB opened by rdbconfig or oksconflibs plug in can be message
tref relation< tref >(tref object, dunedaq::conffwk::relationship_t const &r)
T relation(tref item, dunedaq::conffwk::relationship_t const &relation)
bool is_simple(dunedaq::conffwk::relationship_t const &)
const std::vector< relationship_t > p_relationships
Definition Schema.hpp:171
std::string p_schema_path
Definition Schema.hpp:166

◆ check_includes()

bool dbe::FileInfo::check_includes ( )
private

Definition at line 279 of file FileInfo.cpp.

279 {
281 m_ui->message->setText(message);
282 return message.isEmpty();
283}
static QString check_file_includes(const QString &file)
Definition FileInfo.cpp:133

◆ delete_object_slot

void dbe::FileInfo::delete_object_slot ( )
privateslot

Definition at line 348 of file FileInfo.cpp.

348 {
349 auto name = m_ui->object_list->currentItem()->text();
350 auto file = prune_path(m_filename);
351 if (s_obj_map.at(file).contains(name)) {
353 }
355}
bool delobj(inner::configobject::tref obj, QUuid const &src)

◆ edit_object_slot [1/2]

void dbe::FileInfo::edit_object_slot ( )
privateslot

Definition at line 322 of file FileInfo.cpp.

322 {
323 auto item = m_ui->object_list->currentItem();
324 edit_object_slot(item);
325}

◆ edit_object_slot [2/2]

void dbe::FileInfo::edit_object_slot ( QListWidgetItem * item)
privateslot

Definition at line 327 of file FileInfo.cpp.

327 {
328 auto name = item->text();
329 if (s_obj_map.at(prune_path(m_filename)).contains(name)) {
330 for ( QWidget * widget : QApplication::allWidgets() ) {
331 auto oe = dynamic_cast<ObjectEditor*> ( widget );
332 if ( oe != nullptr ) {
333 if (oe->objectName() == name) {
334 oe->raise();
335 oe->setVisible ( true );
336 oe->activateWindow();
337 return;
338 }
339 }
340 }
341
342 auto obj = s_obj_map.at(prune_path(m_filename)).at(name);
343 auto oe = new ObjectEditor(obj);
344 oe->show();
345 }
346}

◆ file_info_slot [1/3]

void dbe::FileInfo::file_info_slot ( )
privateslot

Definition at line 454 of file FileInfo.cpp.

454 {
455 show_file_info(m_ui->data_list->currentItem()->text());
456}
static void show_file_info(const QString &filename)
Definition FileInfo.cpp:466

◆ file_info_slot [2/3]

void dbe::FileInfo::file_info_slot ( const QString & fn)
privateslot

Definition at line 462 of file FileInfo.cpp.

462 {
464}

◆ file_info_slot [3/3]

void dbe::FileInfo::file_info_slot ( QListWidgetItem * item)
privateslot

Definition at line 458 of file FileInfo.cpp.

458 {
459 show_file_info(item->text());
460}

◆ filemodel_updated

void dbe::FileInfo::filemodel_updated ( )
privateslot

Definition at line 243 of file FileInfo.cpp.

243 {
244 if (m_updating) {
245 return;
246 }
249}

◆ get_data_path()

QString dbe::FileInfo::get_data_path ( )
inlinestatic

Definition at line 43 of file FileInfo.hpp.

43{return s_data_path;}

◆ get_path_list()

QStringList dbe::FileInfo::get_path_list ( )
static

Definition at line 109 of file FileInfo.cpp.

109 {
110 if (s_path_list.isEmpty()) {
111 setup_paths();
112 }
113 return s_path_list;
114}
static QStringList s_path_list
Definition FileInfo.hpp:91

◆ get_path_urls()

QList< QUrl > dbe::FileInfo::get_path_urls ( )
static

Definition at line 103 of file FileInfo.cpp.

103 {
104 if (s_path_urls.isEmpty()) {
105 setup_paths();
106 }
107 return s_path_urls;
108}

◆ get_schema_path()

QString dbe::FileInfo::get_schema_path ( )
inlinestatic

Definition at line 42 of file FileInfo.hpp.

42{return s_schema_path;}

◆ keyPressEvent()

void dbe::FileInfo::keyPressEvent ( QKeyEvent * event)
override

Definition at line 308 of file FileInfo.cpp.

308 {
309 if (event->key() == Qt::Key_Escape) {
310 close();
311 }
312 QWidget::keyPressEvent(event);
313}

◆ match_path()

bool dbe::FileInfo::match_path ( const QString & file,
const QString & top_file,
const QStringList & includes )
static

Definition at line 76 of file FileInfo.cpp.

78 {
79 if (top_file.endsWith(file)) {
80 return true;
81 }
82
83 if (s_path_list.isEmpty()) {
85 }
86
87 QStringList candidates{file};
88 for (const auto& element : s_path_list) {
89 if (file.startsWith(element)) {
90 auto short_name = file;
91 candidates.append(short_name.remove(element));
92 }
93 }
94
95 for (auto cand : candidates) {
96 if (includes.contains(cand)) {
97 return true;
98 }
99 }
100 return false;
101}

◆ parse_all_objects()

void dbe::FileInfo::parse_all_objects ( )
static

Definition at line 116 of file FileInfo.cpp.

116 {
117 s_obj_map.clear();
118 for (auto const& class_name :
119 config::api::info::onclass::allnames <std::vector<std::string>>()) {
120 for (auto obj : config::api::info::onclass::objects(class_name, false)) {
121 auto file = prune_path(QString::fromStdString(obj.contained_in()));
122 auto name = QString::fromStdString(obj.full_name());
123 if (!s_obj_map.contains(file)) {
124 s_obj_map.insert({file,{}});
125 s_missing_schema_map.insert({file,{}});
126 s_missing_data_map.insert({file,{}});
127 }
128 s_obj_map.at(file).insert({name, obj});
129 }
130 }
131}
static std::vector< dbe::inner::configobject::tref > objects(std::string const &cname, bool const keep_inherited=true)

◆ parse_includes()

void dbe::FileInfo::parse_includes ( )
private

Definition at line 285 of file FileInfo.cpp.

285 {
287 m_filename));
288 m_ui->schema_list->clear();
289 m_ui->data_list->clear();
290 for (auto inc: includes) {
291 auto item = new QListWidgetItem(inc);
292 if (!confaccessor::check_file_rw(inc)) {
293 item->setForeground(QBrush(StyleUtility::FileReadOnlyForeground));
294 item->setBackground(QBrush(StyleUtility::FileReadOnlyBackground));
295 }
296 if (inc.endsWith(".schema.xml")) {
297 m_ui->schema_list->addItem(item);
298 }
299 if (inc.endsWith(".data.xml")) {
300 m_ui->data_list->addItem(item);
301
302 }
303 }
304 m_ui->schema_list->update();
305 m_ui->data_list->update();
306}
static QColor FileReadOnlyForeground
static QColor FileReadOnlyBackground

◆ parse_objects()

void dbe::FileInfo::parse_objects ( )
private

Definition at line 252 of file FileInfo.cpp.

252 {
254 m_ui->object_list->clear();
255 auto fname = prune_path(m_filename);
256 if (s_obj_map.contains(fname)) {
257 auto& omap = s_obj_map.at(fname);
258 for (auto const& [obj_name, obj_ref] : omap) {
259 auto item = new QListWidgetItem(obj_name);
260 m_ui->object_list->addItem(item);
261 }
262 }
263 m_ui->object_list->update();
264
265 auto status = check_includes();
266 if (!s_missing_schema_map.contains(fname)) {
267 s_missing_schema_map.insert({fname,{}});
268 }
269 if (!s_missing_data_map.contains(fname)) {
270 s_missing_data_map.insert({fname,{}});
271 }
272 m_ui->add_missing_schema->setVisible(!s_missing_schema_map.at(fname).empty());
273 m_ui->add_missing->setVisible(!s_missing_data_map.at(fname).empty());
274
275 m_ui->warningBox->setVisible(!status);
276}
static void parse_all_objects()
Definition FileInfo.cpp:116
bool check_includes()
Definition FileInfo.cpp:279

◆ prune_path()

QString dbe::FileInfo::prune_path ( QString file)
static

Definition at line 63 of file FileInfo.cpp.

63 {
64 if (s_path_list.isEmpty()) {
66 }
67 for (const QString& element : s_path_list) {
68 if (file.startsWith(element)) {
69 file.remove(element);
70 break;
71 }
72 }
73 return file;
74}

◆ reject

void dbe::FileInfo::reject ( )
privateslot

Definition at line 318 of file FileInfo.cpp.

318 {
319 close();
320}

◆ remove_datafile_slot

void dbe::FileInfo::remove_datafile_slot ( )
privateslot

Definition at line 444 of file FileInfo.cpp.

444 {
445 remove_includefile(m_ui->data_list->currentItem()->text());
446}
void remove_includefile(const QString &file)
Definition FileInfo.cpp:447

◆ remove_includefile

void dbe::FileInfo::remove_includefile ( const QString & file)
privateslot

Definition at line 447 of file FileInfo.cpp.

◆ remove_schemafile_slot

void dbe::FileInfo::remove_schemafile_slot ( )
privateslot

Definition at line 441 of file FileInfo.cpp.

441 {
442 remove_includefile(m_ui->schema_list->currentItem()->text());
443}

◆ rename_object_slot

void dbe::FileInfo::rename_object_slot ( )
privateslot

Definition at line 357 of file FileInfo.cpp.

357 {
358 auto name = m_ui->object_list->currentItem()->text();
359 auto file = prune_path(m_filename);
360 if (s_obj_map.at(file).contains(name)) {
361 QInputDialog dia(this);
362 dia.setLabelText("Enter new name for " + name);
363 auto code = dia.exec();
364 if (code == QDialog::Accepted) {
365 std::string new_name = dia.textValue().toStdString();
366 config::api::commands::renobj(s_obj_map.at(file).at(name), new_name, m_uuid);
367 }
368 }
370}
bool renobj(inner::configobject::tref obj, std::string const &newuuid, QUuid const &src)

◆ set_data_path()

void dbe::FileInfo::set_data_path ( const QString & path)
inlinestatic

Definition at line 45 of file FileInfo.hpp.

45{s_data_path=path;}

◆ set_schema_path()

void dbe::FileInfo::set_schema_path ( const QString & path)
inlinestatic

Definition at line 44 of file FileInfo.hpp.

44{s_schema_path=path;}

◆ setup_paths()

void dbe::FileInfo::setup_paths ( )
static

Definition at line 31 of file FileInfo.cpp.

31 {
32 QString DUNEDAQ_DB_PATH = getenv ( "DUNEDAQ_DB_PATH" );
33 s_path_list.clear();
34 s_path_urls.clear();
35 auto path_list = DUNEDAQ_DB_PATH.split (QLatin1Char(':'), Qt::SkipEmptyParts );
36 for ( QString & path : path_list ) {
37 char* rpath = realpath(path.toStdString().c_str(), NULL);
38 path = QString(rpath);
39 free(rpath);
40
41 if (! path.isEmpty()) {
42 if ( !path.endsWith ( "/" ) ) {
43 path.append ( "/" );
44 }
45 s_path_urls.append(QUrl::fromLocalFile(path));
46 s_path_list.append(path);
47 }
48 }
49 auto dbpath = confaccessor::dbfullname();
50 dbpath.truncate(dbpath.lastIndexOf("/")+1);
51 if (!s_path_list.contains(dbpath)) {
52 s_path_urls.append(QUrl::fromLocalFile(dbpath));
53 s_path_list.append(dbpath);
54 }
55 char* rpath_cd = realpath(".", NULL);
56 auto path_cd = QString(rpath_cd);
57 free(rpath_cd);
58 if (!s_path_list.contains(path_cd)) {
59 s_path_urls.append(QUrl::fromLocalFile(path_cd));
60 }
61}
static QString dbfullname()

◆ show_file_info()

void dbe::FileInfo::show_file_info ( const QString & filename)
static

Definition at line 466 of file FileInfo.cpp.

466 {
467 for ( QWidget * widget : QApplication::allWidgets() ) {
468 auto fi = dynamic_cast<FileInfo *> ( widget );
469 if ( fi != nullptr ) {
470 if (fi->objectName() == filename) {
471 fi->raise();
472 fi->setVisible ( true );
473 fi->activateWindow();
474 return;
475 }
476 }
477 }
478
479 auto fi = new FileInfo(filename);
480 fi->show();
481}
FileInfo(QString filename, QWidget *parent=0)
Definition FileInfo.cpp:193

Member Data Documentation

◆ m_data_menu

QMenu* dbe::FileInfo::m_data_menu {nullptr}
private

Definition at line 81 of file FileInfo.hpp.

81{nullptr};

◆ m_filename

QString dbe::FileInfo::m_filename
private

Definition at line 78 of file FileInfo.hpp.

◆ m_obj_map

std::map<QString, const tref> dbe::FileInfo::m_obj_map
private

Definition at line 77 of file FileInfo.hpp.

◆ m_object_menu

QMenu* dbe::FileInfo::m_object_menu {nullptr}
private

Definition at line 82 of file FileInfo.hpp.

82{nullptr};

◆ m_readonly

bool dbe::FileInfo::m_readonly {false}
private

Definition at line 79 of file FileInfo.hpp.

79{false};

◆ m_schema_menu

QMenu* dbe::FileInfo::m_schema_menu {nullptr}
private

Definition at line 80 of file FileInfo.hpp.

80{nullptr};

◆ m_ui

Ui::FileInfo* dbe::FileInfo::m_ui
private

Definition at line 76 of file FileInfo.hpp.

◆ m_updating

bool dbe::FileInfo::m_updating {false}
private

Definition at line 85 of file FileInfo.hpp.

85{false};

◆ m_uuid

QUuid const dbe::FileInfo::m_uuid
private

Definition at line 83 of file FileInfo.hpp.

◆ s_data_path

QString dbe::FileInfo::s_data_path {"."}
staticprivate

Definition at line 94 of file FileInfo.hpp.

◆ s_missing_data_map

std::map< QString, std::set< QString > > dbe::FileInfo::s_missing_data_map {}
staticprivate

Definition at line 89 of file FileInfo.hpp.

◆ s_missing_schema_map

std::map< QString, std::set< QString > > dbe::FileInfo::s_missing_schema_map {}
staticprivate

Definition at line 88 of file FileInfo.hpp.

◆ s_obj_map

std::map< QString, std::map< QString, const tref > > dbe::FileInfo::s_obj_map {}
staticprivate

Definition at line 87 of file FileInfo.hpp.

◆ s_path_list

QStringList dbe::FileInfo::s_path_list {}
staticprivate

Definition at line 91 of file FileInfo.hpp.

◆ s_path_urls

QList< QUrl > dbe::FileInfo::s_path_urls {}
staticprivate

Definition at line 92 of file FileInfo.hpp.

◆ s_schema_path

QString dbe::FileInfo::s_schema_path {"."}
staticprivate

Definition at line 93 of file FileInfo.hpp.


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