mirror of
https://github.com/AxioDL/amuse.git
synced 2025-12-10 22:17:56 +00:00
Work on project file reading
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user