1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-14 16:46:28 +01:00

Register factory functions with DirManager to interpret XML tags...

... Removes direct dependency on ODManager.h and some BlockFile subclasses,
but does not yet break any dependency cycles
This commit is contained in:
Paul Licameli
2019-05-14 14:49:47 -04:00
parent 81d4c217e6
commit ca0fb190e6
8 changed files with 113 additions and 53 deletions

View File

@@ -17,6 +17,7 @@
#include <sndfile.h>
#include "LegacyBlockFile.h"
#include "../DirManager.h"
#include "../FileFormats.h"
#include "../xml/XMLTagHandler.h"
@@ -147,3 +148,36 @@ BlockFilePtr LegacyAliasBlockFile::BuildFromXML(const FilePath &projDir, const w
void LegacyAliasBlockFile::Recover(){
WriteSummary();
}
static const auto sFactory = []( DirManager &dm, const wxChar **attrs ){
// Support Audacity version 1.1.1 project files
int i=0;
bool alias = false;
while(attrs[i]) {
if (!wxStricmp(attrs[i], wxT("alias"))) {
if (wxAtoi(attrs[i+1])==1)
alias = true;
}
i++;
if (attrs[i])
i++;
}
if (alias)
return LegacyAliasBlockFile::BuildFromXML(
dm.GetProjectDataDir(), attrs);
else
return LegacyBlockFile::BuildFromXML(dm.GetProjectDataDir(), attrs,
dm.GetLoadingBlockLength(),
dm.GetLoadingFormat());
};
static DirManager::RegisteredBlockFileDeserializer sRegistration1 {
"blockfile", sFactory
};
static DirManager::RegisteredBlockFileDeserializer sRegistration2 {
"legacyblockfile", sFactory
};