Browse Source

obs-frontend-api: Add func to add custom docks

jp9000 6 years ago
parent
commit
bcd59b670a

+ 5 - 0
UI/api-interface.cpp

@@ -310,6 +310,11 @@ struct OBSStudioAPI : obs_frontend_callbacks {
 		QObject::connect(action, &QAction::triggered, func);
 	}
 
+	void *obs_frontend_add_dock(void *dock) override
+	{
+		return (void*)main->AddDockWidget((QDockWidget *)dock);
+	}
+
 	void obs_frontend_add_event_callback(obs_frontend_event_cb callback,
 			void *private_data) override
 	{

+ 7 - 0
UI/obs-frontend-api/obs-frontend-api.cpp

@@ -269,6 +269,13 @@ void obs_frontend_add_tools_menu_item(const char *name,
 				private_data);
 }
 
+void *obs_frontend_add_dock(void *dock)
+{
+	return !!callbacks_valid()
+		? c->obs_frontend_add_dock(dock)
+		: nullptr;
+}
+
 void obs_frontend_add_event_callback(obs_frontend_event_cb callback,
 		void *private_data)
 {

+ 3 - 0
UI/obs-frontend-api/obs-frontend-api.h

@@ -111,6 +111,9 @@ EXPORT void *obs_frontend_add_tools_menu_qaction(const char *name);
 EXPORT void obs_frontend_add_tools_menu_item(const char *name,
 		obs_frontend_cb callback, void *private_data);
 
+/* takes QDockWidget and returns QAction */
+EXPORT void *obs_frontend_add_dock(void *dock);
+
 typedef void (*obs_frontend_event_cb)(enum obs_frontend_event event,
 		void *private_data);
 

+ 2 - 0
UI/obs-frontend-api/obs-frontend-internal.hpp

@@ -53,6 +53,8 @@ struct obs_frontend_callbacks {
 	virtual void obs_frontend_add_tools_menu_item(const char *name,
 			obs_frontend_cb callback, void *private_data)=0;
 
+	virtual void *obs_frontend_add_dock(void *dock)=0;
+
 	virtual void obs_frontend_add_event_callback(
 			obs_frontend_event_cb callback, void *private_data)=0;
 	virtual void obs_frontend_remove_event_callback(