31 CurrentFile ( FilePath ),
33 StatusBar ( nullptr ),
34 SelectFile ( nullptr )
46 QString (
"Edit Included Files for schema file : %1" ).arg ( QFileInfo (
47 FilePath ).fileName() ) );
50 ui->StatusFrame->setFrameStyle ( QFrame::NoFrame );
53 StatusBar->setAutoFillBackground (
true );
54 StatusBar->showMessage (
"Select files to include or to remove from include!" );
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 );
61 QString DUNEDAQ_DB_PATH = getenv (
"DUNEDAQ_DB_PATH" );
62 FolderPathList = DUNEDAQ_DB_PATH.split ( QLatin1Char(
':'), Qt::SkipEmptyParts );
67 if ( !PathName.endsWith (
"/" ) )
69 PathName.append (
"/" );
79 for (
const QString & Dir :
dbPath )
81 ui->DirectoryCombo->addItem ( Dir );
82 QString TDAqDir = QString (
"file://" ).append ( Dir );
83 QUrl URL = QUrl ( TDAqDir );
89 SelectFile->setOption(QFileDialog::DontResolveSymlinks,
true);
90 ui->AddToIncludeButton->setDisabled (
true );
92 ui->SaveButton->setDisabled (
true );
94 ui->AddFileLine->setSelectionMode(QAbstractItemView::NoSelection);
103 std::set<std::string> 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() )
113 for ( QString & PathFile : FolderPathList )
115 if ( File.startsWith ( PathFile ) )
117 File = File.replace ( 0, PathFile.size(),
"" );
121 if (!RemovedFileList.contains(File)) {
122 IncludeList.append ( File );
126 if ( !IncludeList.isEmpty() )
128 if ( IncludeList.contains ( CurrentFile ) )
130 IncludeList.removeOne ( CurrentFile );
133 ui->CurrentIncludeList->clear();
134 ui->CurrentIncludeList->addItems ( IncludeList );
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() ) );
169 ui->AddFileLine->clear();
172 if ( !Directory.isEmpty() )
174 SelectFile->setDirectory ( Directory );
177 if ( SelectFile->exec() )
179 Files = SelectFile->selectedFiles();
182 if(Files.isEmpty()) {
186 for(
const QString& FileToInclude : Files) {
187 QFileInfo f(FileToInclude);
189 if ( Directory.isEmpty() )
191 ui->AddFileLine->addItem(f.absoluteFilePath());
195 ui->AddFileLine->addItem(f.absoluteFilePath().remove ( Directory + QString (
'/' ), Qt::CaseSensitive ));
204 BOOST_SCOPE_EXIT(
void)
206 QApplication::restoreOverrideCursor();
210 QApplication::setOverrideCursor(Qt::WaitCursor);
212 for(
int i = 0; i < ui->AddFileLine->count(); ++i) {
213 QString File = ui->AddFileLine->item(i)->text();
215 if ( !File.isEmpty() )
218 for ( QString & PathFile : FolderPathList )
220 if ( File.startsWith ( PathFile ) )
222 File = File.replace ( 0, PathFile.size(),
"" );
230 CurrentFile.toStdString(), File.toStdString() );
232 "The file %1 was added to the included files" ).arg ( File );
234 catch (std::exception& exc) {
236 "Failed to add %1 to included files, %2" ).arg(File).arg(exc.what());
238 StatusBar->setPalette ( QApplication::palette (
this ) );
239 StatusBar->showMessage (
240 QString (
"The file %1 was added to the included files" ).arg ( File ) );
246 ui->AddFileLine->clear();
247 ui->AddToIncludeButton->setDisabled (
true );
248 ui->SaveButton->setEnabled (
true );
250 SetCurrentIncludeList();
252 emit files_updated();
257 ui->AddFileLine->clear();
259 QString includeFilePath;
260 includeFilePath = File;
262 if ( includeFilePath.isEmpty() )
267 QFileInfo includeFile = QFileInfo ( includeFilePath );
269 if ( !includeFile.isFile() )
271 StatusBar->setPalette ( StyleUtility::AlertStatusBarPallete );
272 StatusBar->showMessage ( QString (
"The file is NOT accessible. Check before usage" ) );
276 QString fileToInclude;
278 if ( Directory.isEmpty() )
280 fileToInclude = includeFile.absoluteFilePath();
282 else if ( ( includeFile.absoluteDir().canonicalPath() ).compare (
283 Directory ) == 0 ) fileToInclude =
284 includeFile.absoluteFilePath().remove ( Directory + QString (
'/' ), Qt::CaseSensitive );
287 fileToInclude = includeFile.absoluteFilePath();
290 ui->AddFileLine->addItem( fileToInclude );
291 ui->AddToIncludeButton->setDisabled(
false);
293 emit files_updated();
299 auto selected = ui->CurrentIncludeList->selectedItems();
300 if ( selected.size() != 0 )
302 BOOST_SCOPE_EXIT(
void)
304 QApplication::restoreOverrideCursor();
308 QApplication::setOverrideCursor(Qt::WaitCursor);
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(
", ");
318 std::cout <<
"File " << File.toStdString() <<
" being removed\n";
320 File.toStdString() );
321 removedFiles.append(File);
322 RemovedFileList.append(File);
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 );
329 SetCurrentIncludeList();
331 emit files_updated();
335 StatusBar->setPalette ( StyleUtility::AlertStatusBarPallete );
336 StatusBar->showMessage (
337 QString (
"There is NO file selected. Use file list to select one." ) );
389 QString FileName = QFileDialog::getSaveFileName (
this, tr (
"New schema File" ) );
391 if ( FileName.isEmpty() )
393 QMessageBox::warning ( 0,
"Schema editor",
394 QString (
"Please provide a name for the schema !" ) );
398 if ( !FileName.endsWith (
".schema.xml" ) )
400 FileName.append (
".schema.xml" );
403 QFile FileInfo ( FileName );
404 std::string FileNameStd = FileInfo.fileName().toStdString();
413 CurrentFile.toStdString(), FileNameStd );
414 StatusBar->showMessage (
415 QString (
"The file %1 was added to the included files" ).arg ( FileInfo.fileName())
420 QMessageBox::warning (
423 QString (
"Could not create file : %1.\n\n%2" ).arg ( QString::fromStdString (
424 FileNameStd ) ).arg (
425 QString ( Ex.
what() ) ) );
428 ui->SaveButton->setEnabled (
true );
430 SetCurrentIncludeList();
432 emit files_updated();