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

#include <SchemaIncludeFileWidget.hpp>

Inheritance diagram for dbse::SchemaIncludeFileWidget:
[legend]
Collaboration diagram for dbse::SchemaIncludeFileWidget:
[legend]

Signals

void files_updated ()
 

Public Member Functions

 ~SchemaIncludeFileWidget ()
 
 SchemaIncludeFileWidget (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 SaveSchema ()
 
void CreateFileToInclude ()
 

Private Member Functions

void SetCurrentIncludeList ()
 
void SetController ()
 

Private Attributes

std::unique_ptr< dbse::Ui::SchemaIncludeFileWidget > ui
 
QString CurrentFile
 
QString Directory
 
bool Removed
 
QStatusBar * StatusBar
 
QFileDialog * SelectFile
 
QStringList FolderPathList
 
QStringList dbPath
 
QStringList RemovedFileList
 

Detailed Description

Definition at line 23 of file SchemaIncludeFileWidget.hpp.

Constructor & Destructor Documentation

◆ ~SchemaIncludeFileWidget()

dbse::SchemaIncludeFileWidget::~SchemaIncludeFileWidget ( )
default

◆ SchemaIncludeFileWidget()

dbse::SchemaIncludeFileWidget::SchemaIncludeFileWidget ( QString FilePath,
QWidget * parent = 0 )
explicit

Visual

Definition at line 27 of file SchemaIncludeFileWidget.cpp.

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

Member Function Documentation

◆ AddFileToInclude

void dbse::SchemaIncludeFileWidget::AddFileToInclude ( )
privateslot

Need to strip file....

Definition at line 202 of file SchemaIncludeFileWidget.cpp.

203{
204 BOOST_SCOPE_EXIT(void)
205 {
206 QApplication::restoreOverrideCursor();
207 }
208 BOOST_SCOPE_EXIT_END
209
210 QApplication::setOverrideCursor(Qt::WaitCursor);
211
212 for(int i = 0; i < ui->AddFileLine->count(); ++i) {
213 QString File = ui->AddFileLine->item(i)->text();
214
215 if ( !File.isEmpty() )
216 {
218 for ( QString & PathFile : FolderPathList )
219 {
220 if ( File.startsWith ( PathFile ) )
221 {
222 File = File.replace ( 0, PathFile.size(), "" );
223 break;
224 }
225 }
226
227 QString message;
228 try {
230 CurrentFile.toStdString(), File.toStdString() );
231 message = QString (
232 "The file %1 was added to the included files" ).arg ( File );
233 }
234 catch (std::exception& exc) {
235 message = QString (
236 "Failed to add %1 to included files, %2" ).arg(File).arg(exc.what());
237 }
238 StatusBar->setPalette ( QApplication::palette ( this ) );
239 StatusBar->showMessage (
240 QString ( "The file %1 was added to the included files" ).arg ( File ) );
241 }
242 }
243
244
245
246 ui->AddFileLine->clear();
247 ui->AddToIncludeButton->setDisabled ( true );
248 ui->SaveButton->setEnabled ( true );
249
251
252 emit files_updated();
253}
static KernelWrapper & GetInstance()
void AddInclude(std::string schemaFile, std::string IncludeFile) const
Unknown serialization Cannot deserialize message

◆ AddNewFileToInclude

void dbse::SchemaIncludeFileWidget::AddNewFileToInclude ( const QString & File)
privateslot

Definition at line 255 of file SchemaIncludeFileWidget.cpp.

256{
257 ui->AddFileLine->clear();
258
259 QString includeFilePath;
260 includeFilePath = File;
261
262 if ( includeFilePath.isEmpty() )
263 {
264 return;
265 }
266
267 QFileInfo includeFile = QFileInfo ( includeFilePath );
268
269 if ( !includeFile.isFile() )
270 {
271 StatusBar->setPalette ( StyleUtility::AlertStatusBarPallete );
272 StatusBar->showMessage ( QString ( "The file is NOT accessible. Check before usage" ) );
273 }
274 else
275 {
276 QString fileToInclude;
277
278 if ( Directory.isEmpty() )
279 {
280 fileToInclude = includeFile.absoluteFilePath();
281 }
282 else if ( ( includeFile.absoluteDir().canonicalPath() ).compare (
283 Directory ) == 0 ) fileToInclude =
284 includeFile.absoluteFilePath().remove ( Directory + QString ( '/' ), Qt::CaseSensitive );
285 else
286 {
287 fileToInclude = includeFile.absoluteFilePath();
288 }
289
290 ui->AddFileLine->addItem( fileToInclude );
291 ui->AddToIncludeButton->setDisabled(false);
292
293 emit files_updated();
294 }
295}

◆ CheckInclude

void dbse::SchemaIncludeFileWidget::CheckInclude ( )
privateslot

Definition at line 371 of file SchemaIncludeFileWidget.cpp.

372{
373
374 if ( ui->AddFileLine->count() == 0 )
375 {
376 StatusBar->setPalette ( StyleUtility::AlertStatusBarPallete );
377 StatusBar->showMessage ( QString ( "Select existing file!" ) );
378 ui->AddToIncludeButton->setDisabled ( true );
379
380 return;
381 }
382
383
384 ui->AddToIncludeButton->setDisabled((ui->AddFileLine->count() == 0) ? true : false);
385}

◆ CreateFileToInclude

void dbse::SchemaIncludeFileWidget::CreateFileToInclude ( )
privateslot

Definition at line 387 of file SchemaIncludeFileWidget.cpp.

388{
389 QString FileName = QFileDialog::getSaveFileName ( this, tr ( "New schema File" ) );
390
391 if ( FileName.isEmpty() )
392 {
393 QMessageBox::warning ( 0, "Schema editor",
394 QString ( "Please provide a name for the schema !" ) );
395 return;
396 }
397
398 if ( !FileName.endsWith ( ".schema.xml" ) )
399 {
400 FileName.append ( ".schema.xml" );
401 }
402
403 QFile FileInfo ( FileName );
404 std::string FileNameStd = FileInfo.fileName().toStdString();
405
406 try
407 {
408 auto save_active = KernelWrapper::GetInstance().GetActiveSchema();
410 KernelWrapper::GetInstance().SaveSchema ( FileNameStd );
413 CurrentFile.toStdString(), FileNameStd );
414 StatusBar->showMessage (
415 QString ( "The file %1 was added to the included files" ).arg ( FileInfo.fileName())
416 );
417 }
418 catch ( oks::exception & Ex )
419 {
420 QMessageBox::warning (
421 0,
422 "Schema editor",
423 QString ( "Could not create file : %1.\n\n%2" ).arg ( QString::fromStdString (
424 FileNameStd ) ).arg (
425 QString ( Ex.what() ) ) );
426 }
427
428 ui->SaveButton->setEnabled ( true );
429
431
432 emit files_updated();
433
434
435}
std::string GetActiveSchema() const
void SetActiveSchema(const std::string &ActiveSchema)
void SaveSchema(const std::string &file) const
void CreateNewSchema(const std::string &SchemaName) const

◆ files_updated

void dbse::SchemaIncludeFileWidget::files_updated ( )
signal

◆ RemoveFileFromInclude [1/2]

void dbse::SchemaIncludeFileWidget::RemoveFileFromInclude ( )
privateslot

Definition at line 297 of file SchemaIncludeFileWidget.cpp.

298{
299 auto selected = ui->CurrentIncludeList->selectedItems();
300 if ( selected.size() != 0 )
301 {
302 BOOST_SCOPE_EXIT(void)
303 {
304 QApplication::restoreOverrideCursor();
305 }
306 BOOST_SCOPE_EXIT_END
307
308 QApplication::setOverrideCursor(Qt::WaitCursor);
309
310 QString removedFiles;
311 QString verb = "was";
312 for ( auto Item : selected) {
313 QString File = Item->text();
314 if (removedFiles.size() >0) {
315 removedFiles.append(", ");
316 verb = "were";
317 }
318 std::cout << "File " << File.toStdString() << " being removed\n";
320 File.toStdString() );
321 removedFiles.append(File);
322 RemovedFileList.append(File);
323 }
324 Removed = true;
325 StatusBar->setPalette ( QApplication::palette ( this ) );
326 StatusBar->showMessage (
327 QString ( "The files %1 %2 removed from the included files" ).arg ( removedFiles ).arg(verb) );
328 ui->SaveButton->setEnabled ( true );
330
331 emit files_updated();
332 }
333 else
334 {
335 StatusBar->setPalette ( StyleUtility::AlertStatusBarPallete );
336 StatusBar->showMessage (
337 QString ( "There is NO file selected. Use file list to select one." ) );
338 }
339}
void RemoveInclude(std::string schemaFile, std::string IncludeFile) const

◆ RemoveFileFromInclude [2/2]

void dbse::SchemaIncludeFileWidget::RemoveFileFromInclude ( int )
privateslot

Definition at line 341 of file SchemaIncludeFileWidget.cpp.

342{
343 auto selected = ui->CurrentIncludeList->selectedItems();
344 if ( selected.size() != 0 )
345 {
346 QString files;
347 for ( auto Item : selected) {
348 if (files.size() >0) {
349 files.append(", ");
350 }
351 files.append(Item->text());
352 }
353 ui->RemoveButton->setEnabled ( true );
354 StatusBar->setPalette ( QApplication::palette ( this ) );
355 StatusBar->showMessage (
356 QString ( "The file(s) %1 will be removed from the included files of %2" ).arg (
357 files ).arg ( QFileInfo ( CurrentFile ).fileName() ) );
358 }
359}

◆ SaveSchema

void dbse::SchemaIncludeFileWidget::SaveSchema ( )
privateslot

Definition at line 155 of file SchemaIncludeFileWidget.cpp.

156{
158
159 StatusBar->showMessage (
160 QString ( "Schema file %1 saved" ).arg ( CurrentFile ) );
161 ui->SaveButton->setEnabled ( false );
162 RemovedFileList.clear();
164
165 emit files_updated();
166}

◆ SelectFileToInclude

void dbse::SchemaIncludeFileWidget::SelectFileToInclude ( )
privateslot

Definition at line 167 of file SchemaIncludeFileWidget.cpp.

168{
169 ui->AddFileLine->clear();
170 QStringList Files;
171
172 if ( !Directory.isEmpty() )
173 {
174 SelectFile->setDirectory ( Directory );
175 }
176
177 if ( SelectFile->exec() )
178 {
179 Files = SelectFile->selectedFiles();
180 }
181
182 if(Files.isEmpty()) {
183 return;
184 }
185
186 for(const QString& FileToInclude : Files) {
187 QFileInfo f(FileToInclude);
188
189 if ( Directory.isEmpty() )
190 {
191 ui->AddFileLine->addItem(f.absoluteFilePath());
192 }
193 else
194 {
195 ui->AddFileLine->addItem(f.absoluteFilePath().remove ( Directory + QString ( '/' ), Qt::CaseSensitive ));
196 }
197 }
198
199 CheckInclude();
200}

◆ SetController()

void dbse::SchemaIncludeFileWidget::SetController ( )
private

Definition at line 139 of file SchemaIncludeFileWidget.cpp.

140{
141 connect ( ui->SelectFileButton, SIGNAL ( clicked() ), this, SLOT ( SelectFileToInclude() ),
142 Qt::UniqueConnection );
143 connect ( ui->CreateFileButton, SIGNAL ( clicked() ), this, SLOT ( CreateFileToInclude() ),
144 Qt::UniqueConnection );
145 connect ( ui->AddToIncludeButton, SIGNAL ( clicked() ), this, SLOT ( AddFileToInclude() ),
146 Qt::UniqueConnection );
147 connect ( ui->RemoveButton, SIGNAL ( clicked() ), this, SLOT ( RemoveFileFromInclude() ),
148 Qt::UniqueConnection );
149 connect ( ui->DirectoryCombo, SIGNAL ( activated ( const QString & ) ), this,
150 SLOT ( SetDirectory ( const QString & ) ), Qt::UniqueConnection );
151 connect ( ui->SaveButton, SIGNAL ( clicked() ), this, SLOT ( SaveSchema() ) );
152 connect ( ui->ExitButton, SIGNAL ( clicked() ), this, SLOT ( close() ) );
153}

◆ SetCurrentIncludeList()

void dbse::SchemaIncludeFileWidget::SetCurrentIncludeList ( )
private

Need to strip file....

Definition at line 101 of file SchemaIncludeFileWidget.cpp.

102{
103 std::set<std::string> includes;
105 includes );
106 QStringList IncludeList;
107 for (auto file: includes) {
108 std::cout << "Include file = <" << file << ">\n";
109 QString File = QString::fromStdString ( file );
110 if ( !File.isEmpty() )
111 {
113 for ( QString & PathFile : FolderPathList )
114 {
115 if ( File.startsWith ( PathFile ) )
116 {
117 File = File.replace ( 0, PathFile.size(), "" );
118 break;
119 }
120 }
121 if (!RemovedFileList.contains(File)) {
122 IncludeList.append ( File );
123 }
124 }
125 }
126 if ( !IncludeList.isEmpty() )
127 {
128 if ( IncludeList.contains ( CurrentFile ) )
129 {
130 IncludeList.removeOne ( CurrentFile );
131 }
132
133 ui->CurrentIncludeList->clear();
134 ui->CurrentIncludeList->addItems ( IncludeList );
135 }
136}
void GetIncludedList(const std::string &FileName, std::set< std::string > &IncludedFiles)

◆ SetDirectory

void dbse::SchemaIncludeFileWidget::SetDirectory ( const QString & Dir)
privateslot

Definition at line 361 of file SchemaIncludeFileWidget.cpp.

362{
363 if(dbPath.contains(Dir, Qt::CaseSensitivity::CaseSensitive) && QDir(Dir).exists()) {
364 SelectFile->setDirectory ( Dir );
365 } else {
366 Directory.clear();
367 SelectFile->setDirectory(QDir("."));
368 }
369}
Cannot add TPSet with because another TPSet with these values already exists

Member Data Documentation

◆ CurrentFile

QString dbse::SchemaIncludeFileWidget::CurrentFile
private

Definition at line 39 of file SchemaIncludeFileWidget.hpp.

◆ dbPath

QStringList dbse::SchemaIncludeFileWidget::dbPath
private

Definition at line 45 of file SchemaIncludeFileWidget.hpp.

◆ Directory

QString dbse::SchemaIncludeFileWidget::Directory
private

Definition at line 40 of file SchemaIncludeFileWidget.hpp.

◆ FolderPathList

QStringList dbse::SchemaIncludeFileWidget::FolderPathList
private

Definition at line 44 of file SchemaIncludeFileWidget.hpp.

◆ Removed

bool dbse::SchemaIncludeFileWidget::Removed
private

Definition at line 41 of file SchemaIncludeFileWidget.hpp.

◆ RemovedFileList

QStringList dbse::SchemaIncludeFileWidget::RemovedFileList
private

Definition at line 46 of file SchemaIncludeFileWidget.hpp.

◆ SelectFile

QFileDialog* dbse::SchemaIncludeFileWidget::SelectFile
private

Definition at line 43 of file SchemaIncludeFileWidget.hpp.

◆ StatusBar

QStatusBar* dbse::SchemaIncludeFileWidget::StatusBar
private

Definition at line 42 of file SchemaIncludeFileWidget.hpp.

◆ ui

std::unique_ptr<dbse::Ui::SchemaIncludeFileWidget> dbse::SchemaIncludeFileWidget::ui
private

Definition at line 36 of file SchemaIncludeFileWidget.hpp.


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