static bool GetProfileName(QWidget *parent, std::string &name, std::string &file, const char *title, const char *text, const char *oldName = nullptr) { char path[512]; int ret; for (;;) { bool success = NameDialog::AskForName(parent, title, text, name, QT_UTF8(oldName)); if (!success) { return false; } if (name.empty()) { QMessageBox::information(parent, QTStr("NoNameEntered.Title"), QTStr("NoNameEntered.Text")); continue; } if (ProfileExists(name.c_str())) { QMessageBox::information(parent, QTStr("NameExists.Title"), QTStr("NameExists.Text")); continue; } break; } if (!GetFileSafeName(name.c_str(), file)) { blog(LOG_WARNING, "Failed to create safe file name for '%s'", name.c_str()); return false; } ret = GetConfigPath(path, sizeof(path), "obs-studio/basic/profiles/"); if (ret <= 0) { blog(LOG_WARNING, "Failed to get profiles config path"); return false; } file.insert(0, path); if (!GetClosestUnusedFileName(file, nullptr)) { blog(LOG_WARNING, "Failed to get closest file name for %s", file.c_str()); return false; } file.erase(0, ret); return true; }
static bool GetSceneCollectionName(QWidget *parent, std::string &name, std::string &file, const char *oldName = nullptr) { bool rename = oldName != nullptr; const char *title; const char *text; char path[512]; size_t len; int ret; if (rename) { title = Str("Basic.Main.RenameSceneCollection.Title"); text = Str("Basic.Main.AddSceneCollection.Text"); } else { title = Str("Basic.Main.AddSceneCollection.Title"); text = Str("Basic.Main.AddSceneCollection.Text"); } for (;;) { bool success = NameDialog::AskForName(parent, title, text, name, QT_UTF8(oldName)); if (!success) { return false; } if (name.empty()) { QMessageBox::information(parent, QTStr("NoNameEntered.Title"), QTStr("NoNameEntered.Text")); continue; } if (SceneCollectionExists(name.c_str())) { QMessageBox::information(parent, QTStr("NameExists.Title"), QTStr("NameExists.Text")); continue; } break; } if (!GetFileSafeName(name.c_str(), file)) { blog(LOG_WARNING, "Failed to create safe file name for '%s'", name.c_str()); return false; } ret = GetConfigPath(path, sizeof(path), "obs-studio/basic/scenes/"); if (ret <= 0) { blog(LOG_WARNING, "Failed to get scene collection config path"); return false; } len = file.size(); file.insert(0, path); if (!GetClosestUnusedFileName(file, "json")) { blog(LOG_WARNING, "Failed to get closest file name for %s", file.c_str()); return false; } file.erase(file.size() - 5, 5); file.erase(0, file.size() - len); return true; }