asset directories, part 9
This commit is contained in:
parent
92cf966a36
commit
b1e2d76ce6
|
@ -523,9 +523,6 @@ class DivEngine {
|
||||||
// remove an asset
|
// remove an asset
|
||||||
void removeAsset(std::vector<DivAssetDir>& dir, int entry);
|
void removeAsset(std::vector<DivAssetDir>& dir, int entry);
|
||||||
|
|
||||||
// check whether an asset directory is complete
|
|
||||||
void checkAssetDir(std::vector<DivAssetDir>& dir, size_t entries);
|
|
||||||
|
|
||||||
// read/write asset dir
|
// read/write asset dir
|
||||||
void putAssetDirData(SafeWriter* w, std::vector<DivAssetDir>& dir);
|
void putAssetDirData(SafeWriter* w, std::vector<DivAssetDir>& dir);
|
||||||
DivDataErrors readAssetDirData(SafeReader& reader, std::vector<DivAssetDir>& dir);
|
DivDataErrors readAssetDirData(SafeReader& reader, std::vector<DivAssetDir>& dir);
|
||||||
|
@ -607,6 +604,8 @@ class DivEngine {
|
||||||
// convert old flags
|
// convert old flags
|
||||||
static void convertOldFlags(unsigned int oldFlags, DivConfig& newFlags, DivSystem sys);
|
static void convertOldFlags(unsigned int oldFlags, DivConfig& newFlags, DivSystem sys);
|
||||||
|
|
||||||
|
// check whether an asset directory is complete (UNSAFE)
|
||||||
|
void checkAssetDir(std::vector<DivAssetDir>& dir, size_t entries);
|
||||||
|
|
||||||
// benchmark (returns time in seconds)
|
// benchmark (returns time in seconds)
|
||||||
double benchmarkPlayback();
|
double benchmarkPlayback();
|
||||||
|
|
|
@ -591,11 +591,22 @@ void FurnaceGUI::drawInsList(bool asChild) {
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
insListItem(-1,-1,-1);
|
insListItem(-1,-1,-1);
|
||||||
int dirIndex=0;
|
int dirIndex=0;
|
||||||
|
int dirToDelete=-1;
|
||||||
for (DivAssetDir& i: e->song.insDir) {
|
for (DivAssetDir& i: e->song.insDir) {
|
||||||
String nodeName=fmt::sprintf("%s %s##_AD%d",i.name.empty()?ICON_FA_FOLDER_O:ICON_FA_FOLDER,i.name.empty()?"<uncategorized>":i.name,i.name.empty()?-1:dirIndex);
|
String nodeName=fmt::sprintf("%s %s##_AD%d",i.name.empty()?ICON_FA_FOLDER_O:ICON_FA_FOLDER,i.name.empty()?"<uncategorized>":i.name,i.name.empty()?-1:dirIndex);
|
||||||
|
String popupID=fmt::sprintf("DirRightMenu%d",dirIndex);
|
||||||
bool treeNode=ImGui::TreeNodeEx(nodeName.c_str(),ImGuiTreeNodeFlags_SpanAvailWidth|(i.name.empty()?ImGuiTreeNodeFlags_DefaultOpen:0));
|
bool treeNode=ImGui::TreeNodeEx(nodeName.c_str(),ImGuiTreeNodeFlags_SpanAvailWidth|(i.name.empty()?ImGuiTreeNodeFlags_DefaultOpen:0));
|
||||||
DRAG_SOURCE(dirIndex,-1);
|
DRAG_SOURCE(dirIndex,-1);
|
||||||
DRAG_TARGET(dirIndex,-1,e->song.insDir);
|
DRAG_TARGET(dirIndex,-1,e->song.insDir);
|
||||||
|
if (ImGui::BeginPopupContextItem(popupID.c_str())) {
|
||||||
|
if (ImGui::MenuItem("rename...")) {
|
||||||
|
ImGui::OpenPopup("NewInsFolder");
|
||||||
|
}
|
||||||
|
if (ImGui::MenuItem("delete")) {
|
||||||
|
dirToDelete=dirIndex;
|
||||||
|
}
|
||||||
|
ImGui::EndPopup();
|
||||||
|
}
|
||||||
if (treeNode) {
|
if (treeNode) {
|
||||||
int assetIndex=0;
|
int assetIndex=0;
|
||||||
for (int j: i.entries) {
|
for (int j: i.entries) {
|
||||||
|
@ -606,6 +617,12 @@ void FurnaceGUI::drawInsList(bool asChild) {
|
||||||
}
|
}
|
||||||
dirIndex++;
|
dirIndex++;
|
||||||
}
|
}
|
||||||
|
if (dirToDelete!=-1) {
|
||||||
|
e->lockEngine([this,dirToDelete]() {
|
||||||
|
e->song.insDir.erase(e->song.insDir.begin()+dirToDelete);
|
||||||
|
e->checkAssetDir(e->song.insDir,e->song.ins.size());
|
||||||
|
});
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
int curRow=0;
|
int curRow=0;
|
||||||
for (int i=-1; i<(int)e->song.ins.size(); i++) {
|
for (int i=-1; i<(int)e->song.ins.size(); i++) {
|
||||||
|
|
Loading…
Reference in New Issue