mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
RequestHandler: Add GetGroupList
This commit is contained in:
parent
6291cb1532
commit
4a2654d095
@ -55,6 +55,7 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
|
||||
|
||||
// Scenes
|
||||
{"GetSceneList", &RequestHandler::GetSceneList},
|
||||
{"GetGroupList", &RequestHandler::GetGroupList},
|
||||
{"GetCurrentProgramScene", &RequestHandler::GetCurrentProgramScene},
|
||||
{"SetCurrentProgramScene", &RequestHandler::SetCurrentProgramScene},
|
||||
{"GetCurrentPreviewScene", &RequestHandler::GetCurrentPreviewScene},
|
||||
|
@ -77,6 +77,7 @@ class RequestHandler {
|
||||
|
||||
// Scenes
|
||||
RequestResult GetSceneList(const Request&);
|
||||
RequestResult GetGroupList(const Request&);
|
||||
RequestResult GetCurrentProgramScene(const Request&);
|
||||
RequestResult SetCurrentProgramScene(const Request&);
|
||||
RequestResult GetCurrentPreviewScene(const Request&);
|
||||
|
@ -24,7 +24,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
*
|
||||
* @responseField currentProgramSceneName | String | Current program scene
|
||||
* @responseField currentPreviewSceneName | String | Current preview scene. `null` if not in studio mode
|
||||
* @responseField scenes | Array<Object> | Array of scenes in OBS
|
||||
* @responseField scenes | Array<Object> | Array of scenes
|
||||
*
|
||||
* @requestType GetSceneList
|
||||
* @complexity 2
|
||||
@ -54,6 +54,29 @@ RequestResult RequestHandler::GetSceneList(const Request&)
|
||||
return RequestResult::Success(responseData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of all groups in OBS.
|
||||
*
|
||||
* Groups in OBS are actually scenes, but renamed and modified. In obs-websocket, we treat them as scenes where we can.
|
||||
*
|
||||
* @responseField groups | Array<String> | Array of group names
|
||||
*
|
||||
* @requestType GetGroupList
|
||||
* @complexity 2
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.0.0
|
||||
* @api requests
|
||||
* @category scenes
|
||||
*/
|
||||
RequestResult RequestHandler::GetGroupList(const Request&)
|
||||
{
|
||||
json responseData;
|
||||
|
||||
responseData["groups"] = Utils::Obs::ArrayHelper::GetGroupList();
|
||||
|
||||
return RequestResult::Success(responseData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current program scene.
|
||||
*
|
||||
|
@ -183,6 +183,7 @@ namespace Utils {
|
||||
std::vector<obs_hotkey_t *> GetHotkeyList();
|
||||
std::vector<std::string> GetHotkeyNameList();
|
||||
std::vector<json> GetSceneList();
|
||||
std::vector<std::string> GetGroupList();
|
||||
std::vector<json> GetSceneItemList(obs_scene_t *scene, bool basic = false);
|
||||
std::vector<json> GetInputList(std::string inputKind = "");
|
||||
std::vector<std::string> GetInputKindList(bool unversioned = false, bool includeDisabled = false);
|
||||
|
@ -91,9 +91,6 @@ std::vector<json> Utils::Obs::ArrayHelper::GetSceneList()
|
||||
for (size_t i = 0; i < sceneList.sources.num; i++) {
|
||||
obs_source_t *scene = sceneList.sources.array[i];
|
||||
|
||||
if (obs_source_is_group(scene))
|
||||
continue;
|
||||
|
||||
json sceneJson;
|
||||
sceneJson["sceneName"] = obs_source_get_name(scene);
|
||||
sceneJson["sceneIndex"] = sceneList.sources.num - i - 1;
|
||||
@ -109,6 +106,26 @@ std::vector<json> Utils::Obs::ArrayHelper::GetSceneList()
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::vector<std::string> Utils::Obs::ArrayHelper::GetGroupList()
|
||||
{
|
||||
std::vector<std::string> ret;
|
||||
|
||||
auto cb = [](void *priv_data, obs_source_t *scene) {
|
||||
auto ret = static_cast<std::vector<std::string>*>(priv_data);
|
||||
|
||||
if (!obs_source_is_group(scene))
|
||||
return true;
|
||||
|
||||
ret->emplace_back(obs_source_get_name(scene));
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
obs_enum_scenes(cb, &ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::vector<json> Utils::Obs::ArrayHelper::GetSceneItemList(obs_scene_t *scene, bool basic)
|
||||
{
|
||||
std::pair<std::vector<json>, bool> enumData;
|
||||
|
Loading…
Reference in New Issue
Block a user