Work on project file reading

This commit is contained in:
Jack Andersen
2018-07-15 21:41:15 -10:00
parent 26cfa07f77
commit 7a38fd0676
16 changed files with 1108 additions and 351 deletions

View File

@@ -225,10 +225,10 @@ void MainWindow::importAction()
{
auto data = amuse::ContainerRegistry::LoadContainer(QStringToSysString(dir.filePath(fPath)).c_str());
for (auto& p : data)
if (!m_projectModel->importGroupData(SysStringToQString(p.first), std::move(p.second),
ProjectModel::ImportMode(impMode)))
if (!m_projectModel->importGroupData(SysStringToQString(p.first), std::move(p.second)))
return;
}
m_projectModel->extractSamples(ProjectModel::ImportMode(impMode), this);
m_projectModel->saveToFile(this);
return;
}
@@ -254,10 +254,10 @@ void MainWindow::importAction()
/* Handle single container */
auto data = amuse::ContainerRegistry::LoadContainer(QStringToSysString(path).c_str());
for (auto& p : data)
if (!m_projectModel->importGroupData(SysStringToQString(p.first), std::move(p.second),
ProjectModel::ImportMode(impMode)))
if (!m_projectModel->importGroupData(SysStringToQString(p.first), std::move(p.second)))
return;
m_projectModel->extractSamples(ProjectModel::ImportMode(impMode), this);
m_projectModel->saveToFile(this);
}

View File

@@ -17,7 +17,7 @@ ProjectModel::ProjectGroup::ProjectGroup(amuse::IntrusiveAudioGroupData&& data)
m_sdir(amuse::AudioGroupSampleDirectory::CreateAudioGroupSampleDirectory(m_data))
{}
bool ProjectModel::importGroupData(const QString& groupName, amuse::IntrusiveAudioGroupData&& data, ImportMode mode)
bool ProjectModel::importGroupData(const QString& groupName, amuse::IntrusiveAudioGroupData&& data)
{
setIdDatabases();
@@ -28,6 +28,42 @@ bool ProjectModel::importGroupData(const QString& groupName, amuse::IntrusiveAud
return true;
}
bool ProjectModel::extractSamples(ImportMode mode, QWidget* parent)
{
setIdDatabases();
if (!MkPath(m_dir.path(), parent))
return false;
for (auto& g : m_groups)
{
g.second.setIdDatabases();
QDir dir(QFileInfo(m_dir, g.first).filePath());
if (!MkPath(dir.path(), parent))
return false;
amuse::SystemString sysDir = QStringToSysString(dir.path());
switch (mode)
{
case ImportMode::Original:
g.second.m_sdir.extractAllCompressed(sysDir, g.second.m_data.getSamp());
break;
case ImportMode::WAVs:
g.second.m_sdir.extractAllWAV(sysDir, g.second.m_data.getSamp());
break;
case ImportMode::Both:
g.second.m_sdir.extractAllCompressed(sysDir, g.second.m_data.getSamp());
g.second.m_sdir.extractAllWAV(sysDir, g.second.m_data.getSamp());
break;
default:
break;
}
}
return true;
}
bool ProjectModel::saveToFile(QWidget* parent)
{
setIdDatabases();
@@ -42,15 +78,9 @@ bool ProjectModel::saveToFile(QWidget* parent)
return false;
g.second.setIdDatabases();
{
athena::io::FileWriter fo(QStringToSysString(dir.filePath("!project.yaml")));
g.second.m_proj.toYAML(fo);
}
{
athena::io::FileWriter fo(QStringToSysString(dir.filePath("!pool.yaml")));
g.second.m_pool.toYAML(fo);
}
//g.second.m_sdir.sampleEntries()
amuse::SystemString groupPath = QStringToSysString(dir.path());
g.second.m_proj.toYAML(groupPath);
g.second.m_pool.toYAML(groupPath);
}
return true;

View File

@@ -58,7 +58,8 @@ private:
public:
explicit ProjectModel(const QString& path, QObject* parent = Q_NULLPTR);
bool importGroupData(const QString& groupName, amuse::IntrusiveAudioGroupData&& data, ImportMode mode);
bool importGroupData(const QString& groupName, amuse::IntrusiveAudioGroupData&& data);
bool extractSamples(ImportMode mode, QWidget* parent);
bool saveToFile(QWidget* parent);
QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const;