Base/App/Gui: force using Base::Handle for ParameterManager
For reference counting
This commit is contained in:
@@ -1233,7 +1233,7 @@ void Application::AddParameterSet(const char* sName)
|
||||
auto it = mpcPramManager.find(sName);
|
||||
if ( it != mpcPramManager.end() )
|
||||
return;
|
||||
mpcPramManager[sName] = new ParameterManager();
|
||||
mpcPramManager[sName] = ParameterManager::Create();
|
||||
}
|
||||
|
||||
void Application::RemoveParameterSet(const char* sName)
|
||||
@@ -2870,10 +2870,10 @@ void Application::LoadParameters()
|
||||
mConfig["SystemParameter"] = mConfig["UserConfigPath"] + "system.cfg";
|
||||
|
||||
// create standard parameter sets
|
||||
_pcSysParamMngr = new ParameterManager();
|
||||
_pcSysParamMngr = ParameterManager::Create();
|
||||
_pcSysParamMngr->SetSerializer(new ParameterSerializer(mConfig["SystemParameter"]));
|
||||
|
||||
_pcUserParamMngr = new ParameterManager();
|
||||
_pcUserParamMngr = ParameterManager::Create();
|
||||
_pcUserParamMngr->SetSerializer(new ParameterSerializer(mConfig["UserParameter"]));
|
||||
|
||||
try {
|
||||
|
||||
@@ -261,53 +261,44 @@ void ParameterGrp::insertTo(Base::Reference<ParameterGrp> Grp)
|
||||
|
||||
void ParameterGrp::exportTo(const char* FileName)
|
||||
{
|
||||
ParameterManager Mngr;
|
||||
auto Mngr = ParameterManager::Create();
|
||||
|
||||
Mngr.CreateDocument();
|
||||
|
||||
Mngr.ref();
|
||||
Mngr->CreateDocument();
|
||||
|
||||
// copy all into the new document
|
||||
insertTo(&Mngr);
|
||||
insertTo(Base::Reference<ParameterGrp>(Mngr));
|
||||
|
||||
Mngr.SaveDocument(FileName);
|
||||
Mngr.unrefNoDelete();
|
||||
Mngr->SaveDocument(FileName);
|
||||
}
|
||||
|
||||
void ParameterGrp::importFrom(const char* FileName)
|
||||
{
|
||||
ParameterManager Mngr;
|
||||
auto Mngr = ParameterManager::Create();
|
||||
|
||||
if (Mngr.LoadDocument(FileName) != 1)
|
||||
if (Mngr->LoadDocument(FileName) != 1)
|
||||
throw FileException("ParameterGrp::import() cannot load document", FileName);
|
||||
|
||||
ref();
|
||||
Mngr.copyTo(Base::Reference<ParameterGrp>(this));
|
||||
unrefNoDelete();
|
||||
Mngr->copyTo(Base::Reference<ParameterGrp>(this));
|
||||
}
|
||||
|
||||
void ParameterGrp::insert(const char* FileName)
|
||||
{
|
||||
ParameterManager Mngr;
|
||||
auto Mngr = ParameterManager::Create();
|
||||
|
||||
if (Mngr.LoadDocument(FileName) != 1)
|
||||
if (Mngr->LoadDocument(FileName) != 1)
|
||||
throw FileException("ParameterGrp::import() cannot load document", FileName);
|
||||
|
||||
ref();
|
||||
Mngr.insertTo(Base::Reference<ParameterGrp>(this));
|
||||
unrefNoDelete();
|
||||
Mngr->insertTo(Base::Reference<ParameterGrp>(this));
|
||||
}
|
||||
|
||||
void ParameterGrp::revert(const char* FileName)
|
||||
{
|
||||
ParameterManager Mngr;
|
||||
auto Mngr = ParameterManager::Create();
|
||||
|
||||
if (Mngr.LoadDocument(FileName) != 1)
|
||||
if (Mngr->LoadDocument(FileName) != 1)
|
||||
throw FileException("ParameterGrp::revert() cannot load document", FileName);
|
||||
|
||||
Mngr.ref();
|
||||
revert(Base::Reference<ParameterGrp>(&Mngr));
|
||||
Mngr.unrefNoDelete();
|
||||
revert(Base::Reference<ParameterGrp>(Mngr));
|
||||
}
|
||||
|
||||
void ParameterGrp::revert(Base::Reference<ParameterGrp> Grp)
|
||||
@@ -1526,6 +1517,11 @@ ParameterManager::~ParameterManager()
|
||||
delete paramSerializer;
|
||||
}
|
||||
|
||||
Base::Reference<ParameterManager> ParameterManager::Create()
|
||||
{
|
||||
return Base::Reference<ParameterManager>(new ParameterManager());
|
||||
}
|
||||
|
||||
void ParameterManager::Init()
|
||||
{
|
||||
static bool Init = false;
|
||||
|
||||
@@ -356,8 +356,8 @@ protected:
|
||||
class BaseExport ParameterManager : public ParameterGrp
|
||||
{
|
||||
public:
|
||||
ParameterManager();
|
||||
~ParameterManager() override;
|
||||
/// Create a reference counted ParameterManager
|
||||
static Base::Reference<ParameterManager> Create();
|
||||
static void Init();
|
||||
static void Terminate();
|
||||
|
||||
@@ -431,6 +431,9 @@ private:
|
||||
bool gUseFilter ;
|
||||
bool gFormatPrettyPrint ;
|
||||
|
||||
private:
|
||||
ParameterManager();
|
||||
~ParameterManager() override;
|
||||
};
|
||||
|
||||
/** python wrapper function
|
||||
|
||||
@@ -98,10 +98,10 @@ void DlgRevertToBackupConfigImp::accept()
|
||||
auto item = items[0];
|
||||
auto path = item->data(Qt::UserRole).toString().toStdString();
|
||||
if (fs::exists(path)) {
|
||||
ParameterManager newParameters;
|
||||
newParameters.LoadDocument(path.c_str());
|
||||
auto newParameters = ParameterManager::Create();
|
||||
newParameters->LoadDocument(path.c_str());
|
||||
auto baseAppGroup = App::GetApplication().GetUserParameter().GetGroup("BaseApp");
|
||||
newParameters.GetGroup("BaseApp")->copyTo(baseAppGroup);
|
||||
newParameters->GetGroup("BaseApp")->copyTo(baseAppGroup);
|
||||
}
|
||||
else {
|
||||
Base::Console().Error("Preference Pack Internal Error: Invalid backup file location");
|
||||
|
||||
@@ -123,10 +123,10 @@ void PreferencePack::applyConfigChanges() const
|
||||
{
|
||||
auto configFile = _path / (_metadata.name() + ".cfg");
|
||||
if (fs::exists(configFile)) {
|
||||
ParameterManager newParameters;
|
||||
newParameters.LoadDocument(configFile.string().c_str());
|
||||
auto newParameters = ParameterManager::Create();
|
||||
newParameters->LoadDocument(configFile.string().c_str());
|
||||
auto baseAppGroup = App::GetApplication().GetUserParameter().GetGroup("BaseApp");
|
||||
newParameters.GetGroup("BaseApp")->insertTo(baseAppGroup);
|
||||
newParameters->GetGroup("BaseApp")->insertTo(baseAppGroup);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,17 +434,17 @@ void PreferencePackManager::save(const std::string& name, const std::vector<Temp
|
||||
AddPackToMetadata(name);
|
||||
|
||||
// Create the config file
|
||||
ParameterManager outputParameterManager;
|
||||
outputParameterManager.CreateDocument();
|
||||
auto outputParameterManager = ParameterManager::Create();
|
||||
outputParameterManager->CreateDocument();
|
||||
for (const auto& t : templates) {
|
||||
ParameterManager templateParameterManager;
|
||||
templateParameterManager.LoadDocument(t.path.string().c_str());
|
||||
copyTemplateParameters(templateParameterManager, outputParameterManager);
|
||||
auto templateParameterManager = ParameterManager::Create();
|
||||
templateParameterManager->LoadDocument(t.path.string().c_str());
|
||||
copyTemplateParameters(*templateParameterManager, *outputParameterManager);
|
||||
}
|
||||
auto savedPreferencePacksDirectory =
|
||||
fs::path(App::Application::getUserAppDataDir()) / "SavedPreferencePacks";
|
||||
auto cfgFilename = savedPreferencePacksDirectory / name / (name + ".cfg");
|
||||
outputParameterManager.SaveDocument(cfgFilename.string().c_str());
|
||||
outputParameterManager->SaveDocument(cfgFilename.string().c_str());
|
||||
}
|
||||
|
||||
// Needed until we support only C++20 and above and can use std::string's built-in ends_with()
|
||||
@@ -573,4 +573,4 @@ std::vector<boost::filesystem::path> Gui::PreferencePackManager::configBackups()
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user