2022-12-30 Fred Gleason <fredg@paravelsystems.com>

* Added a 'RDLIBRARY.IS_SINGLETON' field to the database.
	* Added a 'RDLOGEDIT.IS_SINGLETON' field to the database.
	* Incremented the database version to 367.
	* Added 'RDLibraryConf::isSingleton()' and
	'RDLibraryConf::setIsSingleton()' methods.
	* Added 'RDLogeditConf::isSingleton()' and
	'RDLogeditConf::setIsSingleton()' methods.
	* Modified rdcartslots(1), rdcastmanager(1), rdcatch(1),
	rdlogmanager(1) and rdpanel(1) to allow only a single instance to
	run at a time.
	* Modified rdlibrary(1) and rdlogedit(1) to conditionally allow
	only a single instance to run at a time.
	* Added an rdsinglestart(1) utility.
	* Added a 'wmctrl' dependency to the 'rivendell' RPM package.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2022-12-30 15:41:22 -05:00
parent a1f2fa577f
commit 12bdbfc948
73 changed files with 759 additions and 146 deletions

View File

@@ -2,7 +2,7 @@
//
// Test the Rivendell file format converter.
//
// (C) Copyright 2010-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2010-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -43,7 +43,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=static_cast<RDApplication *>(new RDCoreApplication("audio_convert_test","audio_convert_test",AUDIO_CONVERT_TEST_USAGE,this));
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"audio_convert_test: %s\n",(const char *)err_msg.toUtf8());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test the Rivendell file format exporter.
//
// (C) Copyright 2010-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2010-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -45,7 +45,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=static_cast<RDApplication *>(new RDCoreApplication("audio_export_test","audio_export_test",AUDIO_EXPORT_TEST_USAGE,this));
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"audio_export_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test Rivendell file importing.
//
// (C) Copyright 2010-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2010-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -46,7 +46,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=static_cast<RDApplication *>(new RDCoreApplication("audio_import_test","audio_import_test",AUDIO_IMPORT_TEST_USAGE,this));
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"audio_import_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test the Rivendell audio file metadata reader.
//
// (C) Copyright 2018-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2018-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -36,7 +36,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=static_cast<RDApplication *>(new RDCoreApplication("audio_metadata_test","audio_metadata_test",AUDIO_METADATA_TEST_USAGE,this));
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"audio_metadata_test: %s\n",(const char *)err_msg.toUtf8());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Display charset/collation parameters for a DB connection
//
// (C) Copyright 2018-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2018-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -43,7 +43,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=static_cast<RDApplication *>(new RDApplication("db_charset_test","rdvairplayd",DB_CHARSET_TEST_USAGE,this));
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"db_charset_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -40,7 +40,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=new RDApplication("delete_test","delete_test",DELETE_TEST_USAGE,this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"delete_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test Rivendell file downloading.
//
// (C) Copyright 2010-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2010-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -42,7 +42,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=new RDApplication("download_test","download_test",DOWNLOAD_TEST_USAGE,this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"download_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test Rivendell image storage
//
// (C) Copyright 2010-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2010-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -46,7 +46,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=new RDApplication("feed_image_test","feed_image_test",FEED_IMAGE_TEST_USAGE,this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"feed_image_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test the Rivendell multicast receiver routines
//
// (C) Copyright 2018-2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2018-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -41,7 +41,7 @@ MainObject::MainObject(QObject *parent)
//
rda=new RDApplication("metadata_wildcard_test","metadata_wildcard_test",
METADATA_WILDCARD_TEST_USAGE,this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"metadata_wildcard_test: %s\n",(const char *)err_msg.toUtf8());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test harness for RDWaveWidget
//
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2021-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -36,7 +36,7 @@ MainWidget::MainWidget(QWidget *parent)
//
rda=new RDApplication("meterstrip_test","meterstrip_test",METERSTRIP_TEST_USAGE,
this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
QMessageBox::critical(this,"meterstrip_test - "+tr("Error"),err_msg);
exit(RDApplication::ExitNoDb);
}

View File

@@ -30,7 +30,7 @@ MainObject::MainObject(QObject *parent)
QString err_msg;
rda=new RDApplication("notification_test","notification_test",NOTIFICATION_TEST_USAGE,this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"notification_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -41,7 +41,7 @@ MainObject::MainObject(QObject *parent)
// Open the Database
//
rda=new RDApplication("upload_test","upload_test",UPLOAD_TEST_USAGE,this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
fprintf(stderr,"upload_test: %s\n",err_msg.toUtf8().constData());
exit(1);
}

View File

@@ -2,7 +2,7 @@
//
// Test harness for RDWavefactory
//
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -44,7 +44,7 @@ MainWidget::MainWidget(QWidget *parent)
//
rda=new RDApplication("wavefactory_test","wavefactory_test",WAVEFACTORY_TEST_USAGE,
this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
QMessageBox::critical(this,"wavefactory_test - "+tr("Error"),err_msg);
exit(RDApplication::ExitNoDb);
}

View File

@@ -2,7 +2,7 @@
//
// Test harness for RDWaveScene
//
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -43,7 +43,7 @@ MainWidget::MainWidget(QWidget *parent)
//
rda=new RDApplication("wavescene_test","wavescene_test",WAVESCENE_TEST_USAGE,
this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
QMessageBox::critical(this,"wavescene_test - "+tr("Error"),err_msg);
exit(RDApplication::ExitNoDb);
}

View File

@@ -2,7 +2,7 @@
//
// Test harness for RDWaveWidget
//
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2021-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -42,7 +42,7 @@ MainWidget::MainWidget(QWidget *parent)
//
rda=new RDApplication("wavewidget_test","wavewidget_test",WAVEWIDGET_TEST_USAGE,
this);
if(!rda->open(&err_msg)) {
if(!rda->open(&err_msg,NULL,true)) {
QMessageBox::critical(this,"wavewidget_test - "+tr("Error"),err_msg);
exit(RDApplication::ExitNoDb);
}