mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Merge pull request #560 from Palakis/enhancement/various-todos
Requests: Scene collection and profile name checking
This commit is contained in:
commit
56a17a9131
@ -51,6 +51,25 @@ obs_bounds_type getBoundsTypeFromName(QString name) {
|
||||
return boundTypeNames.key(name);
|
||||
}
|
||||
|
||||
bool Utils::StringInStringList(char** strings, const char* string) {
|
||||
if (!strings) {
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t index = 0;
|
||||
while (strings[index] != NULL) {
|
||||
char* value = strings[index];
|
||||
|
||||
if (strcmp(value, string) == 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
obs_data_array_t* Utils::StringListToArray(char** strings, const char* key) {
|
||||
obs_data_array_t* list = obs_data_array_create();
|
||||
|
||||
|
@ -35,6 +35,7 @@ typedef void(*PauseRecordingFunction)(bool);
|
||||
typedef bool(*RecordingPausedFunction)();
|
||||
|
||||
namespace Utils {
|
||||
bool StringInStringList(char** strings, const char* string);
|
||||
obs_data_array_t* StringListToArray(char** strings, const char* key);
|
||||
obs_data_array_t* GetSceneItems(obs_source_t* source);
|
||||
obs_data_t* GetSceneItemData(obs_sceneitem_t* item);
|
||||
|
@ -17,13 +17,22 @@ RpcResponse WSRequestHandler::SetCurrentProfile(const RpcRequest& request) {
|
||||
return request.failed("missing request parameters");
|
||||
}
|
||||
|
||||
QString profileName = obs_data_get_string(request.parameters(), "profile-name");
|
||||
if (profileName.isEmpty()) {
|
||||
const char* profileName = obs_data_get_string(request.parameters(), "profile-name");
|
||||
if (!profileName) {
|
||||
return request.failed("invalid request parameters");
|
||||
}
|
||||
|
||||
// TODO : check if profile exists
|
||||
obs_frontend_set_current_profile(profileName.toUtf8());
|
||||
char** profiles = obs_frontend_get_profiles();
|
||||
bool profileExists = Utils::StringInStringList(profiles, profileName);
|
||||
bfree(profiles);
|
||||
if (!profileExists) {
|
||||
return request.failed("profile does not exist");
|
||||
}
|
||||
|
||||
obs_queue_task(OBS_TASK_UI, [](void* param) {
|
||||
obs_frontend_set_current_profile(reinterpret_cast<const char*>(param));
|
||||
}, (void*)profileName, true);
|
||||
|
||||
return request.success();
|
||||
}
|
||||
|
||||
|
@ -17,13 +17,22 @@ RpcResponse WSRequestHandler::SetCurrentSceneCollection(const RpcRequest& reques
|
||||
return request.failed("missing request parameters");
|
||||
}
|
||||
|
||||
QString sceneCollection = obs_data_get_string(request.parameters(), "sc-name");
|
||||
if (sceneCollection.isEmpty()) {
|
||||
const char* sceneCollection = obs_data_get_string(request.parameters(), "sc-name");
|
||||
if (!sceneCollection) {
|
||||
return request.failed("invalid request parameters");
|
||||
}
|
||||
|
||||
// TODO : Check if specified collection exists and if changing is allowed
|
||||
obs_frontend_set_current_scene_collection(sceneCollection.toUtf8());
|
||||
char** collections = obs_frontend_get_scene_collections();
|
||||
bool collectionExists = Utils::StringInStringList(collections, sceneCollection);
|
||||
bfree(collections);
|
||||
if (!collectionExists) {
|
||||
return request.failed("scene collection does not exist");
|
||||
}
|
||||
|
||||
obs_queue_task(OBS_TASK_UI, [](void* param) {
|
||||
obs_frontend_set_current_scene_collection(reinterpret_cast<const char*>(param));
|
||||
}, (void*)sceneCollection, true);
|
||||
|
||||
return request.success();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user