UI: Add obs_frontend_open_sceneitem_edit_transform()

This commit is contained in:
Exeldro 2023-01-30 12:34:59 +01:00 committed by Jim
parent 2ff210acfd
commit 46da073aa5
9 changed files with 47 additions and 8 deletions

View File

@ -630,6 +630,14 @@ struct OBSStudioAPI : obs_frontend_callbacks {
Q_ARG(OBSSource, OBSSource(source))); Q_ARG(OBSSource, OBSSource(source)));
} }
void obs_frontend_open_sceneitem_edit_transform(
obs_sceneitem_t *item) override
{
QMetaObject::invokeMethod(main, "OpenEditTransform",
Q_ARG(OBSSceneItem,
OBSSceneItem(item)));
}
char *obs_frontend_get_current_record_output_path(void) override char *obs_frontend_get_current_record_output_path(void) override
{ {
const char *recordOutputPath = main->GetCurrentOutputPath(); const char *recordOutputPath = main->GetCurrentOutputPath();

View File

@ -559,6 +559,12 @@ void obs_frontend_open_source_interaction(obs_source_t *source)
c->obs_frontend_open_source_interaction(source); c->obs_frontend_open_source_interaction(source);
} }
void obs_frontend_open_sceneitem_edit_transform(obs_sceneitem_t *item)
{
if (callbacks_valid())
c->obs_frontend_open_sceneitem_edit_transform(item);
}
char *obs_frontend_get_current_record_output_path(void) char *obs_frontend_get_current_record_output_path(void)
{ {
return !!callbacks_valid() return !!callbacks_valid()

View File

@ -226,6 +226,7 @@ EXPORT void obs_frontend_reset_video(void);
EXPORT void obs_frontend_open_source_properties(obs_source_t *source); EXPORT void obs_frontend_open_source_properties(obs_source_t *source);
EXPORT void obs_frontend_open_source_filters(obs_source_t *source); EXPORT void obs_frontend_open_source_filters(obs_source_t *source);
EXPORT void obs_frontend_open_source_interaction(obs_source_t *source); EXPORT void obs_frontend_open_source_interaction(obs_source_t *source);
EXPORT void obs_frontend_open_sceneitem_edit_transform(obs_sceneitem_t *item);
EXPORT char *obs_frontend_get_current_record_output_path(void); EXPORT char *obs_frontend_get_current_record_output_path(void);
EXPORT const char *obs_frontend_get_locale_string(const char *string); EXPORT const char *obs_frontend_get_locale_string(const char *string);

View File

@ -141,6 +141,8 @@ struct obs_frontend_callbacks {
virtual void obs_frontend_open_source_filters(obs_source_t *source) = 0; virtual void obs_frontend_open_source_filters(obs_source_t *source) = 0;
virtual void virtual void
obs_frontend_open_source_interaction(obs_source_t *source) = 0; obs_frontend_open_source_interaction(obs_source_t *source) = 0;
virtual void
obs_frontend_open_sceneitem_edit_transform(obs_sceneitem_t *item) = 0;
virtual char *obs_frontend_get_current_record_output_path(void) = 0; virtual char *obs_frontend_get_current_record_output_path(void) = 0;
virtual const char * virtual const char *

View File

@ -6391,6 +6391,15 @@ void OBSBasic::OpenInteraction(OBSSource source)
CreateInteractionWindow(source); CreateInteractionWindow(source);
} }
void OBSBasic::OpenEditTransform(OBSSceneItem item)
{
if (!item)
item = GetCurrentSceneItem();
if (!item)
return;
CreateEditTransformWindow(item);
}
void OBSBasic::OpenSceneFilters() void OBSBasic::OpenSceneFilters()
{ {
OBSScene scene = GetCurrentScene(); OBSScene scene = GetCurrentScene();
@ -8057,14 +8066,18 @@ void OBSBasic::UpdateEditMenu()
} }
void OBSBasic::on_actionEditTransform_triggered() void OBSBasic::on_actionEditTransform_triggered()
{
const auto item = GetCurrentSceneItem();
if (!item)
return;
CreateEditTransformWindow(item);
}
void OBSBasic::CreateEditTransformWindow(obs_sceneitem_t *item)
{ {
if (transformWindow) if (transformWindow)
transformWindow->close(); transformWindow->close();
transformWindow = new OBSBasicTransform(item, this);
if (!GetCurrentSceneItem())
return;
transformWindow = new OBSBasicTransform(this);
connect(ui->scenes, &QListWidget::currentItemChanged, transformWindow, connect(ui->scenes, &QListWidget::currentItemChanged, transformWindow,
&OBSBasicTransform::OnSceneChanged); &OBSBasicTransform::OnSceneChanged);
transformWindow->show(); transformWindow->show();

View File

@ -945,6 +945,7 @@ public:
void CreateInteractionWindow(obs_source_t *source); void CreateInteractionWindow(obs_source_t *source);
void CreatePropertiesWindow(obs_source_t *source); void CreatePropertiesWindow(obs_source_t *source);
void CreateFiltersWindow(obs_source_t *source); void CreateFiltersWindow(obs_source_t *source);
void CreateEditTransformWindow(obs_sceneitem_t *item);
QAction *AddDockWidget(QDockWidget *dock); QAction *AddDockWidget(QDockWidget *dock);
@ -1157,6 +1158,7 @@ private slots:
void OpenFilters(OBSSource source = nullptr); void OpenFilters(OBSSource source = nullptr);
void OpenProperties(OBSSource source = nullptr); void OpenProperties(OBSSource source = nullptr);
void OpenInteraction(OBSSource source = nullptr); void OpenInteraction(OBSSource source = nullptr);
void OpenEditTransform(OBSSceneItem item = nullptr);
void EnablePreviewDisplay(bool enable); void EnablePreviewDisplay(bool enable);
void TogglePreview(); void TogglePreview();

View File

@ -40,7 +40,7 @@ void OBSBasicTransform::HookWidget(QWidget *widget, const char *signal,
#define ISCROLL_CHANGED SIGNAL(valueChanged(int)) #define ISCROLL_CHANGED SIGNAL(valueChanged(int))
#define DSCROLL_CHANGED SIGNAL(valueChanged(double)) #define DSCROLL_CHANGED SIGNAL(valueChanged(double))
OBSBasicTransform::OBSBasicTransform(OBSBasic *parent) OBSBasicTransform::OBSBasicTransform(OBSSceneItem item, OBSBasic *parent)
: QDialog(parent), ui(new Ui::OBSBasicTransform), main(parent) : QDialog(parent), ui(new Ui::OBSBasicTransform), main(parent)
{ {
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
@ -69,7 +69,6 @@ OBSBasicTransform::OBSBasicTransform(OBSBasic *parent)
installEventFilter(CreateShortcutFilter()); installEventFilter(CreateShortcutFilter());
OBSSceneItem item = FindASelectedItem(main->GetCurrentScene());
OBSScene scene = obs_sceneitem_get_scene(item); OBSScene scene = obs_sceneitem_get_scene(item);
SetScene(scene); SetScene(scene);
SetItem(item); SetItem(item);

View File

@ -48,7 +48,7 @@ private slots:
void on_resetButton_clicked(); void on_resetButton_clicked();
public: public:
OBSBasicTransform(OBSBasic *parent); OBSBasicTransform(OBSSceneItem item, OBSBasic *parent);
~OBSBasicTransform(); ~OBSBasicTransform();
public slots: public slots:

View File

@ -794,6 +794,14 @@ Functions
--------------------------------------- ---------------------------------------
.. function:: void *obs_frontend_open_sceneitem_edit_transform(obs_sceneitem_t *item)
Opens the edit transform window of the specified sceneitem.
:param item: The sceneitem to open the edit transform window of
---------------------------------------
.. function:: char *obs_frontend_get_current_record_output_path(void) .. function:: char *obs_frontend_get_current_record_output_path(void)
:return: A new pointer to the current record output path. Free :return: A new pointer to the current record output path. Free