Skip to content

Commit aa23b34

Browse files
author
Roberto De Ioris
committed
added FTabManager wrapper
1 parent 9cab3f8 commit aa23b34

File tree

5 files changed

+88
-1
lines changed

5 files changed

+88
-1
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include "UnrealEnginePythonPrivatePCH.h"
2+
3+
4+
#include "UEPyFTabManager.h"
5+
6+
static PyMethodDef ue_PyFTabManager_methods[] = {
7+
{ NULL } /* Sentinel */
8+
};
9+
10+
11+
static PyObject *ue_PyFTabManager_str(ue_PyFTabManager *self)
12+
{
13+
return PyUnicode_FromFormat("<unreal_engine.FTabManager %p srefs %d>",
14+
&self->tab_manager.Get(), self->tab_manager.GetSharedReferenceCount());
15+
}
16+
17+
static PyTypeObject ue_PyFTabManagerType = {
18+
PyVarObject_HEAD_INIT(NULL, 0)
19+
"unreal_engine.FTabManager", /* tp_name */
20+
sizeof(ue_PyFTabManager), /* tp_basicsize */
21+
0, /* tp_itemsize */
22+
0, /* tp_dealloc */
23+
0, /* tp_print */
24+
0, /* tp_getattr */
25+
0, /* tp_setattr */
26+
0, /* tp_reserved */
27+
0, /* tp_repr */
28+
0, /* tp_as_number */
29+
0, /* tp_as_sequence */
30+
0, /* tp_as_mapping */
31+
0, /* tp_hash */
32+
0, /* tp_call */
33+
(reprfunc)ue_PyFTabManager_str, /* tp_str */
34+
0, /* tp_getattro */
35+
0, /* tp_setattro */
36+
0, /* tp_as_buffer */
37+
Py_TPFLAGS_DEFAULT, /* tp_flags */
38+
"Unreal Engine FTabManager", /* tp_doc */
39+
0, /* tp_traverse */
40+
0, /* tp_clear */
41+
0, /* tp_richcompare */
42+
0, /* tp_weaklistoffset */
43+
0, /* tp_iter */
44+
0, /* tp_iternext */
45+
ue_PyFTabManager_methods, /* tp_methods */
46+
};
47+
48+
49+
void ue_python_init_ftab_manager(PyObject *ue_module) {
50+
ue_PyFTabManagerType.tp_new = PyType_GenericNew;
51+
52+
if (PyType_Ready(&ue_PyFTabManagerType) < 0)
53+
return;
54+
55+
Py_INCREF(&ue_PyFTabManagerType);
56+
PyModule_AddObject(ue_module, "FTabManager", (PyObject *)&ue_PyFTabManagerType);
57+
}
58+
59+
PyObject *py_ue_new_ftab_manager(TSharedRef<FTabManager> tab_manager) {
60+
ue_PyFTabManager *ret = (ue_PyFTabManager *)PyObject_New(ue_PyFTabManager, &ue_PyFTabManagerType);
61+
new(&ret->tab_manager) TSharedRef<FTabManager>(tab_manager);
62+
return (PyObject *)ret;
63+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#pragma once
2+
3+
#include "UnrealEnginePython.h"
4+
5+
#include "Runtime/Slate/Public/Framework/Docking/TabManager.h"
6+
7+
typedef struct {
8+
PyObject_HEAD
9+
/* Type-specific fields go here. */
10+
TSharedRef<FTabManager> tab_manager;
11+
} ue_PyFTabManager;
12+
13+
PyObject *py_ue_new_ftab_manager(TSharedRef<FTabManager>);
14+
15+
void ue_python_init_ftab_manager(PyObject *);

Source/UnrealEnginePython/Private/Slate/UEPySDockTab.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,17 @@ static PyObject *py_ue_sdock_tab_request_close_tab(ue_PySButton *self, PyObject
2626
Py_RETURN_NONE;
2727
}
2828

29+
static PyObject *py_ue_sdock_tab_new_tab_manager(ue_PySButton *self, PyObject * args) {
30+
31+
TSharedRef<FTabManager> tab_manager = FGlobalTabmanager::Get()->NewTabManager(sw_dock_tab);
32+
33+
return py_ue_new_ftab_manager(tab_manager);
34+
}
35+
2936
static PyMethodDef ue_PySDockTab_methods[] = {
3037
{ "set_label", (PyCFunction)py_ue_sdock_tab_set_label, METH_VARARGS, "" },
3138
{ "request_close_tab", (PyCFunction)py_ue_sdock_tab_request_close_tab, METH_VARARGS, "" },
39+
{ "new_tab_manager", (PyCFunction)py_ue_sdock_tab_new_tab_manager, METH_VARARGS, "" },
3240
{ NULL } /* Sentinel */
3341
};
3442

Source/UnrealEnginePython/Private/Slate/UEPySlate.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ void ue_python_init_slate(PyObject *module) {
608608
#endif
609609
#endif
610610

611+
ue_python_init_ftab_manager(module);
611612
ue_python_init_ftab_spawner_entry(module);
612613
ue_python_init_fmenu_builder(module);
613614
ue_python_init_fslate_style_set(module);

Source/UnrealEnginePython/Private/Slate/UEPySlate.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
#include "UEPySProgressBar.h"
5757

5858

59-
59+
#include "UEPyFTabManager.h"
6060
#include "UEPyFTabSpawnerEntry.h"
6161
#include "UEPyFMenuBuilder.h"
6262
#include "UEPyFSlateStyleSet.h"

0 commit comments

Comments
 (0)