UI: Create an API for opening projector windows

This commit is contained in:
Chris Angelico 2019-06-01 13:13:24 +10:00 committed by jp9000
parent 412a75601e
commit 7c540acc11
5 changed files with 38 additions and 0 deletions

View File

@ -371,6 +371,31 @@ struct OBSStudioAPI : obs_frontend_callbacks {
return App()->GlobalConfig();
}
void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry,
const char *name) override
{
SavedProjectorInfo proj = {
ProjectorType::Preview,
monitor,
geometry ? geometry : "",
name ? name : "",
};
if (type) {
if (astrcmpi(type, "Source") == 0)
proj.type = ProjectorType::Source;
else if (astrcmpi(type, "Scene") == 0)
proj.type = ProjectorType::Scene;
else if (astrcmpi(type, "StudioProgram") == 0)
proj.type = ProjectorType::StudioProgram;
else if (astrcmpi(type, "Multiview") == 0)
proj.type = ProjectorType::Multiview;
}
QMetaObject::invokeMethod(main, "OpenSavedProjector",
WaitConnection(),
Q_ARG(SavedProjectorInfo *, &proj));
}
void obs_frontend_save(void) override { main->SaveProject(); }
void obs_frontend_defer_save_begin(void) override

View File

@ -327,6 +327,13 @@ config_t *obs_frontend_get_global_config(void)
: nullptr;
}
void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry, const char *name)
{
if (callbacks_valid())
c->obs_frontend_open_projector(type, monitor, geometry, name);
}
void obs_frontend_save(void)
{
if (callbacks_valid())

View File

@ -165,6 +165,8 @@ EXPORT void obs_frontend_replay_buffer_save(void);
EXPORT void obs_frontend_replay_buffer_stop(void);
EXPORT bool obs_frontend_replay_buffer_active(void);
EXPORT void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry, const char *name);
EXPORT void obs_frontend_save(void);
EXPORT void obs_frontend_defer_save_begin(void);
EXPORT void obs_frontend_defer_save_end(void);

View File

@ -72,6 +72,9 @@ struct obs_frontend_callbacks {
virtual config_t *obs_frontend_get_profile_config(void) = 0;
virtual config_t *obs_frontend_get_global_config(void) = 0;
virtual void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry,
const char *name) = 0;
virtual void obs_frontend_save(void) = 0;
virtual void obs_frontend_defer_save_begin(void) = 0;
virtual void obs_frontend_defer_save_end(void) = 0;

View File

@ -242,6 +242,7 @@ OBSBasic::OBSBasic(QWidget *parent)
qRegisterMetaType<OBSSceneItem>("OBSSceneItem");
qRegisterMetaType<OBSSource>("OBSSource");
qRegisterMetaType<obs_hotkey_id>("obs_hotkey_id");
qRegisterMetaType<SavedProjectorInfo *>("SavedProjectorInfo *");
qRegisterMetaTypeStreamOperators<std::vector<std::shared_ptr<OBSSignal>>>(
"std::vector<std::shared_ptr<OBSSignal>>");