feat(color): Confirm before duplicate or saving model as template (#2931)
* fix(color): Confirm before duplicating model * fix(color): Confirm before saveAsTemplate
This commit is contained in:
@@ -409,28 +409,32 @@ void ModelsPageBody::selectModel(ModelCell *model)
|
||||
}
|
||||
}
|
||||
|
||||
void ModelsPageBody::duplicateModel(ModelCell* model)
|
||||
void ModelsPageBody::duplicateModel(ModelCell *model)
|
||||
{
|
||||
storageFlushCurrentModel();
|
||||
storageCheck(true);
|
||||
new ConfirmDialog(
|
||||
parent, STR_DUPLICATE_MODEL,
|
||||
std::string(model->modelName, sizeof(model->modelName)).c_str(), [=] {
|
||||
storageFlushCurrentModel();
|
||||
storageCheck(true);
|
||||
|
||||
char duplicatedFilename[LEN_MODEL_FILENAME + 1];
|
||||
memcpy(duplicatedFilename, model->modelFilename,
|
||||
sizeof(duplicatedFilename));
|
||||
if (findNextFileIndex(duplicatedFilename, LEN_MODEL_FILENAME,
|
||||
MODELS_PATH)) {
|
||||
sdCopyFile(model->modelFilename, MODELS_PATH, duplicatedFilename,
|
||||
MODELS_PATH);
|
||||
// Make a new model which is a copy of the selected one, set the same
|
||||
// labels
|
||||
auto new_model = modelslist.addModel(duplicatedFilename, true, model);
|
||||
for (const auto &lbl : modelslabels.getLabelsByModel(model)) {
|
||||
modelslabels.addLabelToModel(lbl, new_model);
|
||||
}
|
||||
update();
|
||||
} else {
|
||||
TRACE("ModelsListError: Invalid File");
|
||||
}
|
||||
char duplicatedFilename[LEN_MODEL_FILENAME + 1];
|
||||
memcpy(duplicatedFilename, model->modelFilename,
|
||||
sizeof(duplicatedFilename));
|
||||
if (findNextFileIndex(duplicatedFilename, LEN_MODEL_FILENAME,
|
||||
MODELS_PATH)) {
|
||||
sdCopyFile(model->modelFilename, MODELS_PATH, duplicatedFilename,
|
||||
MODELS_PATH);
|
||||
// Make a new model which is a copy of the selected one, set the same
|
||||
// labels
|
||||
auto new_model = modelslist.addModel(duplicatedFilename, true, model);
|
||||
for (const auto &lbl : modelslabels.getLabelsByModel(model)) {
|
||||
modelslabels.addLabelToModel(lbl, new_model);
|
||||
}
|
||||
update();
|
||||
} else {
|
||||
TRACE("ModelsListError: Invalid File");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void ModelsPageBody::deleteModel(ModelCell *model)
|
||||
@@ -447,22 +451,29 @@ void ModelsPageBody::deleteModel(ModelCell *model)
|
||||
|
||||
void ModelsPageBody::saveAsTemplate(ModelCell *model)
|
||||
{
|
||||
storageDirty(EE_MODEL);
|
||||
storageCheck(true);
|
||||
constexpr size_t size = sizeof(model->modelName) + sizeof(YAML_EXT);
|
||||
char modelName[size];
|
||||
snprintf(modelName, size, "%s%s", model->modelName, YAML_EXT);
|
||||
char templatePath[FF_MAX_LFN];
|
||||
snprintf(templatePath, FF_MAX_LFN, "%s%c%s", PERS_TEMPL_PATH, '/', modelName);
|
||||
sdCheckAndCreateDirectory(TEMPLATES_PATH);
|
||||
sdCheckAndCreateDirectory(PERS_TEMPL_PATH);
|
||||
if (isFileAvailable(templatePath)) {
|
||||
new ConfirmDialog(parent, STR_FILE_EXISTS, STR_ASK_OVERWRITE, [=] {
|
||||
sdCopyFile(model->modelFilename, MODELS_PATH, modelName, PERS_TEMPL_PATH);
|
||||
});
|
||||
} else {
|
||||
sdCopyFile(model->modelFilename, MODELS_PATH, modelName, PERS_TEMPL_PATH);
|
||||
}
|
||||
new ConfirmDialog(
|
||||
parent, STR_SAVE_TEMPLATE,
|
||||
std::string(model->modelName, sizeof(model->modelName)).c_str(), [=] {
|
||||
storageDirty(EE_MODEL);
|
||||
storageCheck(true);
|
||||
constexpr size_t size = sizeof(model->modelName) + sizeof(YAML_EXT);
|
||||
char modelName[size];
|
||||
snprintf(modelName, size, "%s%s", model->modelName, YAML_EXT);
|
||||
char templatePath[FF_MAX_LFN];
|
||||
snprintf(templatePath, FF_MAX_LFN, "%s%c%s", PERS_TEMPL_PATH, '/',
|
||||
modelName);
|
||||
sdCheckAndCreateDirectory(TEMPLATES_PATH);
|
||||
sdCheckAndCreateDirectory(PERS_TEMPL_PATH);
|
||||
if (isFileAvailable(templatePath)) {
|
||||
new ConfirmDialog(parent, STR_FILE_EXISTS, STR_ASK_OVERWRITE, [=] {
|
||||
sdCopyFile(model->modelFilename, MODELS_PATH, modelName,
|
||||
PERS_TEMPL_PATH);
|
||||
});
|
||||
} else {
|
||||
sdCopyFile(model->modelFilename, MODELS_PATH, modelName,
|
||||
PERS_TEMPL_PATH);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void ModelsPageBody::editLabels(ModelCell* model)
|
||||
|
||||
Reference in New Issue
Block a user