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
 
CreateDatabaseWidgetCreateWidget
 
QString DatabasePath
 
QString Directory
 
bool Removed
 
QStatusBar * StatusBar
 
QFileDialog * SelectFile
 
QStringList FolderPathList
 
QStringList dbPath
 

Detailed Description

Definition at line 18 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 19 of file IncludeFileWidget.cpp.

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

180{
181 BOOST_SCOPE_EXIT(void)
182 {
183 QApplication::restoreOverrideCursor();
184 }
185 BOOST_SCOPE_EXIT_END
186
187 QApplication::setOverrideCursor(Qt::WaitCursor);
188
189 for(int i = 0; i < ui->AddFileLine->count(); ++i) {
190 QString File = ui->AddFileLine->item(i)->text();
191
192 if ( !File.isEmpty() )
193 {
195 for ( QString & PathFile : FolderPathList )
196 {
197 if ( File.startsWith ( PathFile ) )
198 {
199 File = File.replace ( 0, PathFile.size(), "" );
200 break;
201 }
202 }
203
205
206 StatusBar->setPalette ( QApplication::palette ( this ) );
207 StatusBar->showMessage (
208 QString ( "The file %1 was added to the included files" ).arg ( File ) );
209 }
210 }
211
213
214 ui->AddFileLine->clear();
215 ui->AddToIncludeButton->setDisabled ( true );
216}
void add(QString const &db, QString const &fn)

◆ AddNewFileToInclude

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

Definition at line 218 of file IncludeFileWidget.cpp.

219{
220 ui->AddFileLine->clear();
221
222 QString includeFilePath;
223 includeFilePath = File;
224
225 if ( includeFilePath.isEmpty() )
226 {
227 return;
228 }
229
230 QFileInfo includeFile = QFileInfo ( includeFilePath );
231
232 if ( !includeFile.isFile() )
233 {
235 StatusBar->showMessage ( QString ( "The file is NOT accessible. Check before usage" ) );
236 }
237 else
238 {
239 QString fileToInclude;
240
241 if ( Directory.isEmpty() )
242 {
243 fileToInclude = includeFile.absoluteFilePath();
244 }
245 else if ( ( includeFile.absoluteDir().canonicalPath() ).compare (
246 Directory ) == 0 ) fileToInclude =
247 includeFile.absoluteFilePath().remove ( Directory + QString ( '/' ), Qt::CaseSensitive );
248 else
249 {
250 fileToInclude = includeFile.absoluteFilePath();
251 }
252
253 ui->AddFileLine->addItem( fileToInclude );
254 ui->AddToIncludeButton->setDisabled(false);
255 }
256}
static QPalette AlertStatusBarPallete

◆ CheckInclude

void dbe::IncludeFileWidget::CheckInclude ( )
privateslot

Definition at line 311 of file IncludeFileWidget.cpp.

312{
314
315 if ( ui->AddFileLine->count() == 0 )
316 {
318 StatusBar->showMessage ( QString ( "Select existing file!" ) );
319 ui->AddToIncludeButton->setDisabled ( true );
320
321 return;
322 }
323
324 std::vector<int> removedItems;
325 for(int i = 0; i < ui->AddFileLine->count(); ++i) {
326 const QString inc = ui->AddFileLine->item(i)->text();
327
328 if(inc == DatabasePath) {
329 removedItems.push_back(i);
330 } else {
331 for(int j = 0; j < ui->RemoveCombo->count(); ++j) {
332 if(ui->RemoveCombo->itemText(j).compare(inc) == 0) {
333 removedItems.push_back(i);
334 }
335 }
336 }
337 }
338
339 if(removedItems.empty() == false) {
340 QString message = "The following files will not be included because already included:";
341
342 for(int i : removedItems) {
343 QListWidgetItem* item = ui->AddFileLine->takeItem(i);
344 message += "\n- " + item->text();
345 delete item;
346 }
347
348 WARN("File inclusion issue", message.toStdString());
349 }
350
351 ui->AddToIncludeButton->setDisabled((ui->AddFileLine->count() == 0) ? true : false);
352}
#define WARN(...)
Definition messenger.hpp:80

◆ CreateFileToInclude

void dbe::IncludeFileWidget::CreateFileToInclude ( )
privateslot

Definition at line 354 of file IncludeFileWidget.cpp.

355{
356 CreateWidget = new CreateDatabaseWidget ( nullptr, true, Directory );
357 connect ( CreateWidget, SIGNAL ( CanIncludeDatabase ( const QString & ) ), this,
358 SLOT ( AddNewFileToInclude ( const QString & ) ), Qt::UniqueConnection );
359 CreateWidget->show();
360}
void AddNewFileToInclude(const QString &File)

◆ keyPressEvent()

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

Definition at line 101 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 258 of file IncludeFileWidget.cpp.

259{
260 if ( ui->RemoveCombo->currentIndex() != -1 )
261 {
262 BOOST_SCOPE_EXIT(void)
263 {
264 QApplication::restoreOverrideCursor();
265 }
266 BOOST_SCOPE_EXIT_END
267
268 QApplication::setOverrideCursor(Qt::WaitCursor);
269
270 QString File = ui->RemoveCombo->currentText();
271
273 Removed = true;
274 StatusBar->setPalette ( QApplication::palette ( this ) );
275 StatusBar->showMessage (
276 QString ( "The file %1 was removed from the included files" ).arg ( File ) );
278 }
279 else
280 {
282 StatusBar->showMessage (
283 QString ( "The file is NOT selected. Use combo box to select one." ) );
284 }
285}
void remove(QString const &db, QString const &fn)

◆ RemoveFileFromInclude [2/2]

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

Definition at line 287 of file IncludeFileWidget.cpp.

288{
289 if ( ui->RemoveCombo->currentIndex() != -1 )
290 {
291 ui->RemoveButton->setEnabled ( true );
292 StatusBar->setPalette ( QApplication::palette ( this ) );
293 StatusBar->showMessage (
294 QString ( "The file %1 will be removed from the included files of %2" ).arg (
295 QFileInfo ( ui->RemoveCombo->currentText() ).fileName() ).arg (
296 QFileInfo ( DatabasePath ).fileName() ) );
297 }
298}

◆ SelectFileToInclude

void dbe::IncludeFileWidget::SelectFileToInclude ( )
privateslot

Definition at line 144 of file IncludeFileWidget.cpp.

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

◆ SetController()

void dbe::IncludeFileWidget::SetController ( )
private

Definition at line 126 of file IncludeFileWidget.cpp.

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

◆ SetDirectory

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

Definition at line 300 of file IncludeFileWidget.cpp.

301{
302 if(dbPath.contains(Dir, Qt::CaseSensitivity::CaseSensitive) && QDir(Dir).exists()) {
303 Directory = Dir;
304 SelectFile->setDirectory ( Directory );
305 } else {
306 Directory.clear();
307 SelectFile->setDirectory(QDir("."));
308 }
309}

◆ SetRemoveComboBox()

void dbe::IncludeFileWidget::SetRemoveComboBox ( )
private

Definition at line 109 of file IncludeFileWidget.cpp.

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

Member Data Documentation

◆ CreateWidget

CreateDatabaseWidget* dbe::IncludeFileWidget::CreateWidget
private

Definition at line 32 of file IncludeFileWidget.hpp.

◆ DatabasePath

QString dbe::IncludeFileWidget::DatabasePath
private

Definition at line 33 of file IncludeFileWidget.hpp.

◆ dbPath

QStringList dbe::IncludeFileWidget::dbPath
private

Definition at line 39 of file IncludeFileWidget.hpp.

◆ Directory

QString dbe::IncludeFileWidget::Directory
private

Definition at line 34 of file IncludeFileWidget.hpp.

◆ FolderPathList

QStringList dbe::IncludeFileWidget::FolderPathList
private

Definition at line 38 of file IncludeFileWidget.hpp.

◆ Removed

bool dbe::IncludeFileWidget::Removed
private

Definition at line 35 of file IncludeFileWidget.hpp.

◆ SelectFile

QFileDialog* dbe::IncludeFileWidget::SelectFile
private

Definition at line 37 of file IncludeFileWidget.hpp.

◆ StatusBar

QStatusBar* dbe::IncludeFileWidget::StatusBar
private

Definition at line 36 of file IncludeFileWidget.hpp.

◆ ui

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

Definition at line 30 of file IncludeFileWidget.hpp.


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