44
55#include " Runtime/Slate/Public/Framework/Commands/UIAction.h"
66
7- static PyObject *py_ue_ftool_bar_builder_begin_section (ue_PyFToolBarBuilder *self, PyObject * args) {
7+ static PyObject *py_ue_ftool_bar_builder_begin_section (ue_PyFToolBarBuilder *self, PyObject * args)
8+ {
89 char *name;
910 if (!PyArg_ParseTuple (args, " s:begin_section" , &name))
1011 return NULL ;
@@ -15,14 +16,16 @@ static PyObject *py_ue_ftool_bar_builder_begin_section(ue_PyFToolBarBuilder *sel
1516 return Py_None;
1617}
1718
18- static PyObject *py_ue_ftool_bar_builder_end_section (ue_PyFToolBarBuilder *self, PyObject * args) {
19+ static PyObject *py_ue_ftool_bar_builder_end_section (ue_PyFToolBarBuilder *self, PyObject * args)
20+ {
1921 self->tool_bar_builder .EndSection ();
2022
2123 Py_INCREF (Py_None);
2224 return Py_None;
2325}
2426
25- static PyObject *py_ue_ftool_bar_builder_add_tool_bar_button (ue_PyFToolBarBuilder *self, PyObject * args) {
27+ static PyObject *py_ue_ftool_bar_builder_add_tool_bar_button (ue_PyFToolBarBuilder *self, PyObject * args)
28+ {
2629 char *hook;
2730 char *label;
2831 char *tooltip;
@@ -33,25 +36,27 @@ static PyObject *py_ue_ftool_bar_builder_add_tool_bar_button(ue_PyFToolBarBuilde
3336 return NULL ;
3437
3538 ue_PyFSlateIcon *py_slate_icon = py_ue_is_fslate_icon (py_icon);
36- if (!py_slate_icon) {
39+ if (!py_slate_icon)
40+ {
3741 return PyErr_Format (PyExc_Exception, " argument is not a FSlateIcon" );
3842 }
3943
40- if (!PyCalllable_Check_Extended (py_callable)) {
44+ if (!PyCalllable_Check_Extended (py_callable))
45+ {
4146 return PyErr_Format (PyExc_Exception, " argument is not callable" );
4247 }
4348
4449 FExecuteAction handler;
45- UPythonSlateDelegate *py_delegate = NewObject<UPythonSlateDelegate>();
46- py_delegate->SetPyCallable (py_callable);
47- py_delegate->AddToRoot ();
50+ TSharedRef<FPythonSlateDelegate> py_delegate = FUnrealEnginePythonHouseKeeper::Get ()->NewSlateDelegate (self->s_widget , py_callable);
4851
49- if (py_obj) {
52+ if (py_obj)
53+ {
5054 Py_INCREF (py_obj);
51- handler.BindUObject (py_delegate, &UPythonSlateDelegate ::ExecuteAction, py_obj);
55+ handler.BindSP (py_delegate, &FPythonSlateDelegate ::ExecuteAction, py_obj);
5256 }
53- else {
54- handler.BindUObject (py_delegate, &UPythonSlateDelegate::SimpleExecuteAction);
57+ else
58+ {
59+ handler.BindSP (py_delegate, &FPythonSlateDelegate::SimpleExecuteAction);
5560 }
5661
5762 self->tool_bar_builder .AddToolBarButton (FUIAction (handler), FName (hook), FText::FromString (UTF8_TO_TCHAR (label)), FText::FromString (UTF8_TO_TCHAR (tooltip)), py_slate_icon->icon );
@@ -60,7 +65,8 @@ static PyObject *py_ue_ftool_bar_builder_add_tool_bar_button(ue_PyFToolBarBuilde
6065 return Py_None;
6166}
6267
63- static PyObject *py_ue_ftool_bar_builder_add_separator (ue_PyFToolBarBuilder *self, PyObject * args) {
68+ static PyObject *py_ue_ftool_bar_builder_add_separator (ue_PyFToolBarBuilder *self, PyObject * args)
69+ {
6470 char *hook = nullptr ;
6571
6672 if (!PyArg_ParseTuple (args, " |s:add_separator" , &hook))
@@ -78,25 +84,28 @@ static PyObject *py_ue_ftool_bar_builder_add_separator(ue_PyFToolBarBuilder *sel
7884}
7985
8086
81- static PyObject *py_ue_ftool_bar_builder_begin_block_group (ue_PyFToolBarBuilder *self, PyObject * args) {
87+ static PyObject *py_ue_ftool_bar_builder_begin_block_group (ue_PyFToolBarBuilder *self, PyObject * args)
88+ {
8289 self->tool_bar_builder .BeginBlockGroup ();
8390
8491 Py_INCREF (Py_None);
8592 return Py_None;
8693}
8794
88- static PyObject *py_ue_ftool_bar_builder_end_block_group (ue_PyFToolBarBuilder *self, PyObject * args) {
95+ static PyObject *py_ue_ftool_bar_builder_end_block_group (ue_PyFToolBarBuilder *self, PyObject * args)
96+ {
8997 self->tool_bar_builder .EndBlockGroup ();
9098
9199 Py_INCREF (Py_None);
92100 return Py_None;
93101}
94102
95- static PyObject *py_ue_ftool_bar_builder_make_widget (ue_PyFToolBarBuilder *self, PyObject * args) {
96- ue_PySWidget *ret = (ue_PySWidget *)PyObject_New (ue_PySWidget, &ue_PySWidgetType);
103+ static PyObject *py_ue_ftool_bar_builder_make_widget (ue_PyFToolBarBuilder *self, PyObject * args)
104+ {
105+ ue_PySWidget *ret = (ue_PySWidget *)PyObject_New (ue_PySWidget, &ue_PySWidgetType);
97106 ue_py_setup_swidget (ret);
98- ret->s_widget = self->tool_bar_builder .MakeWidget ();
99- return (PyObject *)ret;
107+ ret->s_widget = self->tool_bar_builder .MakeWidget ();
108+ return (PyObject *)ret;
100109}
101110
102111static PyMethodDef ue_PyFToolBarBuilder_methods[] = {
@@ -106,7 +115,7 @@ static PyMethodDef ue_PyFToolBarBuilder_methods[] = {
106115 { " add_separator" , (PyCFunction)py_ue_ftool_bar_builder_add_separator, METH_VARARGS, " " },
107116 { " begin_block_group" , (PyCFunction)py_ue_ftool_bar_builder_begin_block_group, METH_VARARGS, " " },
108117 { " end_block_group" , (PyCFunction)py_ue_ftool_bar_builder_end_block_group, METH_VARARGS, " " },
109- { " make_widget" , (PyCFunction)py_ue_ftool_bar_builder_make_widget, METH_VARARGS, " " },
118+ { " make_widget" , (PyCFunction)py_ue_ftool_bar_builder_make_widget, METH_VARARGS, " " },
110119 { NULL } /* Sentinel */
111120};
112121
@@ -117,7 +126,8 @@ static PyObject *ue_PyFToolBarBuilder_str(ue_PyFToolBarBuilder *self)
117126 &self->tool_bar_builder );
118127}
119128
120- static void ue_py_ftool_bar_builder_dealloc (ue_PyFToolBarBuilder *self) {
129+ static void ue_py_ftool_bar_builder_dealloc (ue_PyFToolBarBuilder *self)
130+ {
121131#if PY_MAJOR_VERSION < 3
122132 self->ob_type ->tp_free ((PyObject*)self);
123133#else
@@ -156,13 +166,15 @@ static PyTypeObject ue_PyFToolBarBuilderType = {
156166 ue_PyFToolBarBuilder_methods, /* tp_methods */
157167};
158168
159- static int ue_py_ftool_bar_builder_init (ue_PyFToolBarBuilder *self, PyObject *args, PyObject *kwargs) {
160- new (&self->tool_bar_builder ) FToolBarBuilder (TSharedPtr<FUICommandList>(), FMultiBoxCustomization::None);
169+ static int ue_py_ftool_bar_builder_init (ue_PyFToolBarBuilder *self, PyObject *args, PyObject *kwargs)
170+ {
171+ new (&self->tool_bar_builder ) FToolBarBuilder (TSharedPtr<FUICommandList>(), FMultiBoxCustomization::None);
161172 return 0 ;
162173}
163174
164175
165- void ue_python_init_ftool_bar_builder (PyObject *ue_module) {
176+ void ue_python_init_ftool_bar_builder (PyObject *ue_module)
177+ {
166178 ue_PyFToolBarBuilderType.tp_new = PyType_GenericNew;
167179
168180 ue_PyFToolBarBuilderType.tp_init = (initproc)ue_py_ftool_bar_builder_init;
@@ -174,7 +186,8 @@ void ue_python_init_ftool_bar_builder(PyObject *ue_module) {
174186 PyModule_AddObject (ue_module, " FToolBarBuilder" , (PyObject *)&ue_PyFToolBarBuilderType);
175187}
176188
177- PyObject *py_ue_new_ftool_bar_builder (FToolBarBuilder tool_bar_builder) {
189+ PyObject *py_ue_new_ftool_bar_builder (FToolBarBuilder tool_bar_builder)
190+ {
178191 ue_PyFToolBarBuilder *ret = (ue_PyFToolBarBuilder *)PyObject_New (ue_PyFToolBarBuilder, &ue_PyFToolBarBuilderType);
179192 new (&ret->tool_bar_builder ) FToolBarBuilder (tool_bar_builder);
180193 return (PyObject *)ret;
0 commit comments