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

#include <IncludeFileWidget.hpp>

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

Public Member Functions

 ~IncludeFileWidget ()
 IncludeFileWidget (QString FilePath, QWidget *parent=0)

Private Slots

void SelectFileToInclude ()
void AddFileToInclude ()
void AddNewFileToInclude (const QString &File)
void RemoveFileFromInclude ()
void RemoveFileFromInclude (int)
void SetDirectory (const QString &Dir)
void CheckInclude ()
void CreateFileToInclude ()

Private Member Functions

void SetRemoveComboBox ()
void SetController ()
void keyPressEvent (QKeyEvent *event) override

Private Attributes

std::unique_ptr< dbe::Ui::IncludeFileWidget > ui
CreateDatabaseWidget * CreateWidget
QString DatabasePath
QString Directory
bool Removed
QStatusBar * StatusBar
QFileDialog * SelectFile
QStringList FolderPathList
QStringList dbPath

Detailed Description

Definition at line 21 of file IncludeFileWidget.hpp.

Constructor & Destructor Documentation

◆ ~IncludeFileWidget()

dbe::IncludeFileWidget::~IncludeFileWidget ( )
default

◆ IncludeFileWidget()

dbe::IncludeFileWidget::IncludeFileWidget ( QString FilePath,
QWidget * parent = 0 )
explicit

Visual

Definition at line 24 of file IncludeFileWidget.cpp.

25 : QWidget(parent)
26 , ui(new Ui::IncludeFileWidget)
27 , CreateWidget(nullptr)
28 , DatabasePath(FilePath)
29 , Removed(false)
30 , StatusBar(nullptr)
31 , SelectFile(nullptr)
32{
33 ui->setupUi(this);
34
36 ui->AddLabel->setStyleSheet("QLabel{background-color:#8DAA2E; color:#facd64; font:bold14px; border-style:outset; "
37 "border-width:2px; border-radius:10px;"
38 "border-color:beige; font:bold14px; min-width:10em; padding: 6px;}");
39 ui->RemoveLabel->setStyleSheet(
40 "QLabel{background-color:#b5351b; color:#facd64; font:bold14px; border-style:outset;"
41 "border-width:2px; border-radius:10px; border-color:beige; font:bold14px; min-width:10em; padding:6px;}");
42 setWindowTitle(QString("Edit Included Files for Database : %1").arg(QFileInfo(FilePath).fileName()));
43
44 StatusBar = new QStatusBar(ui->StatusFrame);
45 StatusBar->setSizeGripEnabled(false);
46 ui->StatusFrame->setFrameStyle(QFrame::NoFrame);
47 ui->StatusLayout->addWidget(StatusBar);
48
49 StatusBar->setAutoFillBackground(true);
50 StatusBar->showMessage("Select files to include or to remove from include!");
51
53
54 SelectFile = new QFileDialog(this, tr("Open File"), ".", tr("XML files (*.xml)"));
55 SelectFile->setFileMode(QFileDialog::ExistingFiles);
56 SelectFile->setViewMode(QFileDialog::Detail);
57 SelectFile->setAcceptMode(QFileDialog::AcceptOpen);
58
59 QString TDAQ_DB_REPOSITORY = getenv("TDAQ_DB_REPOSITORY");
60 if (TDAQ_DB_REPOSITORY.isEmpty() == false) {
61 QString TDAQ_DB_USER_REPOSITORY = getenv("TDAQ_DB_USER_REPOSITORY");
62 FolderPathList = TDAQ_DB_USER_REPOSITORY.split(":", Qt::SkipEmptyParts);
63
64 FolderPathList.append(dbe::MainWindow::findthis()->find_db_repository_dir());
65 } else {
66 QString DUNEDAQ_DB_PATH = getenv("DUNEDAQ_DB_PATH");
67 FolderPathList = DUNEDAQ_DB_PATH.split(":", Qt::SkipEmptyParts);
68 }
69
70 for (QString& PathName : FolderPathList) {
71 if (!PathName.endsWith("/")) {
72 PathName.append("/");
73 }
74 }
75
76 QList<QUrl> List = SelectFile->sidebarUrls();
77
78 if (!FolderPathList.isEmpty()) {
80
81 for (const QString& Dir : dbPath) {
82 ui->DirectoryCombo->addItem(Dir);
83 QString TDAqDir = QString("file://").append(Dir);
84 QUrl URL = QUrl(TDAqDir);
85 List << URL;
86 }
87 }
88
89 SelectFile->setSidebarUrls(List);
90 SelectFile->setOption(QFileDialog::DontResolveSymlinks, true);
91 ui->AddToIncludeButton->setDisabled(true);
92 ui->RemoveButton->setDisabled(true);
93
94 ui->AddFileLine->setSelectionMode(QAbstractItemView::NoSelection);
95
97}
CreateDatabaseWidget * CreateWidget
std::unique_ptr< dbe::Ui::IncludeFileWidget > ui
static MainWindow * findthis()

Member Function Documentation

◆ AddFileToInclude

void dbe::IncludeFileWidget::AddFileToInclude ( )
privateslot

Need to strip file....

Definition at line 171 of file IncludeFileWidget.cpp.

172{
173 BOOST_SCOPE_EXIT(void)
174 {
175 QApplication::restoreOverrideCursor();
176 }
177 BOOST_SCOPE_EXIT_END
178
179 QApplication::setOverrideCursor(Qt::WaitCursor);
180
181 for (int i = 0; i < ui->AddFileLine->count(); ++i) {
182 QString File = ui->AddFileLine->item(i)->text();
183
184 if (!File.isEmpty()) {
186 for (QString& PathFile : FolderPathList) {
187 if (File.startsWith(PathFile)) {
188 File = File.replace(0, PathFile.size(), "");
189 break;
190 }
191 }
192
194
195 StatusBar->setPalette(QApplication::palette(this));
196 StatusBar->showMessage(QString("The file %1 was added to the included files").arg(File));
197 }
198 }
199
201
202 ui->AddFileLine->clear();
203 ui->AddToIncludeButton->setDisabled(true);
204}
void add(QString const &db, QString const &fn)

◆ AddNewFileToInclude

void dbe::IncludeFileWidget::AddNewFileToInclude ( const QString & File)
privateslot

Definition at line 207 of file IncludeFileWidget.cpp.

208{
209 ui->AddFileLine->clear();
210
211 QString includeFilePath;
212 includeFilePath = File;
213
214 if (includeFilePath.isEmpty()) {
215 return;
216 }
217
218 QFileInfo includeFile = QFileInfo(includeFilePath);
219
220 if (!includeFile.isFile()) {
222 StatusBar->showMessage(QString("The file is NOT accessible. Check before usage"));
223 } else {
224 QString fileToInclude;
225
226 if (Directory.isEmpty()) {
227 fileToInclude = includeFile.absoluteFilePath();
228 } else if ((includeFile.absoluteDir().canonicalPath()).compare(Directory) == 0)
229 fileToInclude = includeFile.absoluteFilePath().remove(Directory + QString('/'), Qt::CaseSensitive);
230 else {
231 fileToInclude = includeFile.absoluteFilePath();
232 }
233
234 ui->AddFileLine->addItem(fileToInclude);
235 ui->AddToIncludeButton->setDisabled(false);
236 }
237}
static QPalette AlertStatusBarPallete

◆ CheckInclude

void dbe::IncludeFileWidget::CheckInclude ( )
privateslot

Definition at line 289 of file IncludeFileWidget.cpp.

290{
292
293 if (ui->AddFileLine->count() == 0) {
295 StatusBar->showMessage(QString("Select existing file!"));
296 ui->AddToIncludeButton->setDisabled(true);
297
298 return;
299 }
300
301 std::vector<int> removedItems;
302 for (int i = 0; i < ui->AddFileLine->count(); ++i) {
303 const QString inc = ui->AddFileLine->item(i)->text();
304
305 if (inc == DatabasePath) {
306 removedItems.push_back(i);
307 } else {
308 for (int j = 0; j < ui->RemoveCombo->count(); ++j) {
309 if (ui->RemoveCombo->itemText(j).compare(inc) == 0) {
310 removedItems.push_back(i);
311 }
312 }
313 }
314 }
315
316 if (removedItems.empty() == false) {
317 QString message = "The following files will not be included because already included:";
318
319 for (int i : removedItems) {
320 QListWidgetItem* item = ui->AddFileLine->takeItem(i);
321 message += "\n- " + item->text();
322 delete item;
323 }
324
325 WARN("File inclusion issue", message.toStdString());
326 }
327
328 ui->AddToIncludeButton->setDisabled((ui->AddFileLine->count() == 0) ? true : false);
329}
#define WARN(...)
Definition messenger.hpp:82
message(message)
Definition __init__.py:84

◆ CreateFileToInclude

void dbe::IncludeFileWidget::CreateFileToInclude ( )
privateslot

Definition at line 332 of file IncludeFileWidget.cpp.

333{
334 CreateWidget = new CreateDatabaseWidget(nullptr, true, Directory);
335 connect(CreateWidget,
336 SIGNAL(CanIncludeDatabase(const QString&)),
337 this,
338 SLOT(AddNewFileToInclude(const QString&)),
339 Qt::UniqueConnection);
340 CreateWidget->show();
341}
CreateDatabaseWidget(QWidget *parent=nullptr, bool Include=false, const QString &CreateDir=QString())
void AddNewFileToInclude(const QString &File)

◆ keyPressEvent()

void dbe::IncludeFileWidget::keyPressEvent ( QKeyEvent * event)
overrideprivate

Definition at line 100 of file IncludeFileWidget.cpp.

101{
102 if (event->key() == Qt::Key_Escape) {
103 close();
104 }
105 QWidget::keyPressEvent(event);
106}

◆ RemoveFileFromInclude [1/2]

void dbe::IncludeFileWidget::RemoveFileFromInclude ( )
privateslot

Definition at line 240 of file IncludeFileWidget.cpp.

241{
242 if (ui->RemoveCombo->currentIndex() != -1) {
243 BOOST_SCOPE_EXIT(void)
244 {
245 QApplication::restoreOverrideCursor();
246 }
247 BOOST_SCOPE_EXIT_END
248
249 QApplication::setOverrideCursor(Qt::WaitCursor);
250
251 QString File = ui->RemoveCombo->currentText();
252
254 Removed = true;
255 StatusBar->setPalette(QApplication::palette(this));
256 StatusBar->showMessage(QString("The file %1 was removed from the included files").arg(File));
258 } else {
260 StatusBar->showMessage(QString("The file is NOT selected. Use combo box to select one."));
261 }
262}
void remove(QString const &db, QString const &fn)

◆ RemoveFileFromInclude [2/2]

void dbe::IncludeFileWidget::RemoveFileFromInclude ( int )
privateslot

Definition at line 265 of file IncludeFileWidget.cpp.

266{
267 if (ui->RemoveCombo->currentIndex() != -1) {
268 ui->RemoveButton->setEnabled(true);
269 StatusBar->setPalette(QApplication::palette(this));
270 StatusBar->showMessage(QString("The file %1 will be removed from the included files of %2")
271 .arg(QFileInfo(ui->RemoveCombo->currentText()).fileName())
272 .arg(QFileInfo(DatabasePath).fileName()));
273 }
274}

◆ SelectFileToInclude

void dbe::IncludeFileWidget::SelectFileToInclude ( )
privateslot

Definition at line 140 of file IncludeFileWidget.cpp.

141{
142 ui->AddFileLine->clear();
143 QStringList Files;
144
145 if (!Directory.isEmpty()) {
146 SelectFile->setDirectory(Directory);
147 }
148
149 if (SelectFile->exec()) {
150 Files = SelectFile->selectedFiles();
151 }
152
153 if (Files.isEmpty()) {
154 return;
155 }
156
157 for (const QString& FileToInclude : Files) {
158 QFileInfo f(FileToInclude);
159
160 if (Directory.isEmpty()) {
161 ui->AddFileLine->addItem(f.absoluteFilePath());
162 } else {
163 ui->AddFileLine->addItem(f.absoluteFilePath().remove(Directory + QString('/'), Qt::CaseSensitive));
164 }
165 }
166
167 CheckInclude();
168}

◆ SetController()

void dbe::IncludeFileWidget::SetController ( )
private

Definition at line 124 of file IncludeFileWidget.cpp.

125{
126 connect(ui->SelectFileButton, SIGNAL(clicked()), this, SLOT(SelectFileToInclude()), Qt::UniqueConnection);
127 connect(ui->CreateFileButton, SIGNAL(clicked()), this, SLOT(CreateFileToInclude()), Qt::UniqueConnection);
128 connect(ui->AddToIncludeButton, SIGNAL(clicked()), this, SLOT(AddFileToInclude()), Qt::UniqueConnection);
129 connect(ui->RemoveButton, SIGNAL(clicked()), this, SLOT(RemoveFileFromInclude()), Qt::UniqueConnection);
130 connect(ui->RemoveCombo, SIGNAL(activated(int)), this, SLOT(RemoveFileFromInclude(int)), Qt::UniqueConnection);
131 connect(ui->DirectoryCombo,
132 SIGNAL(activated(const QString&)),
133 this,
134 SLOT(SetDirectory(const QString&)),
135 Qt::UniqueConnection);
136 connect(ui->ExitButton, SIGNAL(clicked()), this, SLOT(close()));
137}
void SetDirectory(const QString &Dir)

◆ SetDirectory

void dbe::IncludeFileWidget::SetDirectory ( const QString & Dir)
privateslot

Definition at line 277 of file IncludeFileWidget.cpp.

278{
279 if (dbPath.contains(Dir, Qt::CaseSensitivity::CaseSensitive) && QDir(Dir).exists()) {
280 Directory = Dir;
281 SelectFile->setDirectory(Directory);
282 } else {
283 Directory.clear();
284 SelectFile->setDirectory(QDir("."));
285 }
286}
Cannot add TPSet with because another TPSet with these values already exists

◆ SetRemoveComboBox()

void dbe::IncludeFileWidget::SetRemoveComboBox ( )
private

Definition at line 109 of file IncludeFileWidget.cpp.

110{
112
113 if (!IncludeList.isEmpty()) {
114 if (IncludeList.contains(DatabasePath)) {
115 IncludeList.removeOne(DatabasePath);
116 }
117
118 ui->RemoveCombo->clear();
119 ui->RemoveCombo->addItems(IncludeList);
120 }
121}
static QStringList inclusions_singlefile(QString const &)

Member Data Documentation

◆ CreateWidget

CreateDatabaseWidget* dbe::IncludeFileWidget::CreateWidget
private

Definition at line 35 of file IncludeFileWidget.hpp.

◆ DatabasePath

QString dbe::IncludeFileWidget::DatabasePath
private

Definition at line 36 of file IncludeFileWidget.hpp.

◆ dbPath

QStringList dbe::IncludeFileWidget::dbPath
private

Definition at line 42 of file IncludeFileWidget.hpp.

◆ Directory

QString dbe::IncludeFileWidget::Directory
private

Definition at line 37 of file IncludeFileWidget.hpp.

◆ FolderPathList

QStringList dbe::IncludeFileWidget::FolderPathList
private

Definition at line 41 of file IncludeFileWidget.hpp.

◆ Removed

bool dbe::IncludeFileWidget::Removed
private

Definition at line 38 of file IncludeFileWidget.hpp.

◆ SelectFile

QFileDialog* dbe::IncludeFileWidget::SelectFile
private

Definition at line 40 of file IncludeFileWidget.hpp.

◆ StatusBar

QStatusBar* dbe::IncludeFileWidget::StatusBar
private

Definition at line 39 of file IncludeFileWidget.hpp.

◆ ui

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

Definition at line 33 of file IncludeFileWidget.hpp.


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