Skip to content

Commit eefcf3d

Browse files
author
Roberto De Ioris
committed
refactored slate api for new memory management system
1 parent e1965f8 commit eefcf3d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1236
-1227
lines changed

Source/UnrealEnginePython/Private/Slate/UEPyFMenuBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ static PyObject *py_ue_fmenu_builder_end_section(ue_PyFMenuBuilder *self, PyObje
3232
static PyObject *py_ue_fmenu_builder_make_widget(ue_PyFMenuBuilder *self, PyObject * args)
3333
{
3434
ue_PySWidget *ret = (ue_PySWidget *)PyObject_New(ue_PySWidget, &ue_PySWidgetType);
35-
new (&ret->s_widget) TSharedRef<SWidget>(self->menu_builder.MakeWidget());
35+
new (&ret->Widget) TSharedRef<SWidget>(self->menu_builder.MakeWidget());
3636
return (PyObject *)ret;
3737
}
3838

Source/UnrealEnginePython/Private/Slate/UEPyFToolBarBuilder.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,7 @@ static PyObject *py_ue_ftool_bar_builder_end_block_group(ue_PyFToolBarBuilder *s
102102

103103
static PyObject *py_ue_ftool_bar_builder_make_widget(ue_PyFToolBarBuilder *self, PyObject * args)
104104
{
105-
ue_PySWidget *ret = (ue_PySWidget *)PyObject_New(ue_PySWidget, &ue_PySWidgetType);
106-
ue_py_setup_swidget(ret);
107-
ret->s_widget = self->tool_bar_builder.MakeWidget();
108-
return (PyObject *)ret;
105+
return (PyObject *)py_ue_new_swidget<ue_PySWidget>(self->tool_bar_builder.MakeWidget(), &ue_PySWidgetType);
109106
}
110107

111108
static PyMethodDef ue_PyFToolBarBuilder_methods[] = {

Source/UnrealEnginePython/Private/Slate/UEPyIDetailsView.cpp

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,40 +8,40 @@
88
#include "UEPyIDetailsView.h"
99

1010

11-
#define sw_idetails_view StaticCastSharedRef<IDetailsView>(self->s_compound_widget.s_widget.s_widget)
12-
1311
static PyObject *py_ue_idetails_view_set_object(ue_PyIDetailsView *self, PyObject * args, PyObject *kwargs)
1412
{
15-
PyObject *py_in_obj = nullptr;
16-
PyObject *py_force_refresh = nullptr;
13+
ue_py_slate_cast(IDetailsView);
14+
15+
PyObject *py_in_obj = nullptr;
16+
PyObject *py_force_refresh = nullptr;
1717

18-
char *kwlist[] = {
19-
(char *)"uobject",
20-
(char *)"force_refresh",
21-
nullptr
22-
};
18+
char *kwlist[] = {
19+
(char *)"uobject",
20+
(char *)"force_refresh",
21+
nullptr
22+
};
2323

24-
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:set_object", kwlist, &py_in_obj, &py_force_refresh))
25-
{
26-
return nullptr;
27-
}
24+
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:set_object", kwlist, &py_in_obj, &py_force_refresh))
25+
{
26+
return nullptr;
27+
}
2828

29-
UObject *u_object = ue_py_check_type<UObject>(py_in_obj);
30-
if (!u_object)
31-
{
32-
return PyErr_Format(PyExc_Exception, "argument is not a UObject");
33-
}
29+
UObject *u_object = ue_py_check_type<UObject>(py_in_obj);
30+
if (!u_object)
31+
{
32+
return PyErr_Format(PyExc_Exception, "argument is not a UObject");
33+
}
3434

35-
const bool bForceRefresh = py_force_refresh && PyObject_IsTrue(py_force_refresh);
35+
const bool bForceRefresh = py_force_refresh && PyObject_IsTrue(py_force_refresh);
3636

37-
sw_idetails_view->SetObject(u_object, bForceRefresh);
37+
py_IDetailsView->SetObject(u_object, bForceRefresh);
3838

39-
Py_RETURN_NONE;
39+
Py_RETURN_NONE;
4040
}
4141

4242
static PyMethodDef ue_PyIDetailsView_methods[] = {
4343
#pragma warning(suppress: 4191)
44-
{ "set_object", (PyCFunction)py_ue_idetails_view_set_object, METH_VARARGS | METH_KEYWORDS, "" },
44+
{ "set_object", (PyCFunction)py_ue_idetails_view_set_object, METH_VARARGS | METH_KEYWORDS, "" },
4545
{ NULL } /* Sentinel */
4646
};
4747

@@ -73,24 +73,24 @@ PyTypeObject ue_PyIDetailsViewType = {
7373
0, /* tp_weaklistoffset */
7474
0, /* tp_iter */
7575
0, /* tp_iternext */
76-
ue_PyIDetailsView_methods, /* tp_methods */
76+
ue_PyIDetailsView_methods, /* tp_methods */
7777
};
7878

7979
void ue_python_init_idetails_view(PyObject *ue_module)
8080
{
81-
ue_PyIDetailsViewType.tp_base = &ue_PySCompoundWidgetType;
81+
ue_PyIDetailsViewType.tp_base = &ue_PySCompoundWidgetType;
8282

83-
if (PyType_Ready(&ue_PyIDetailsViewType) < 0)
84-
return;
83+
if (PyType_Ready(&ue_PyIDetailsViewType) < 0)
84+
return;
8585

86-
Py_INCREF(&ue_PyIDetailsViewType);
87-
PyModule_AddObject(ue_module, "IDetailsView", (PyObject *)&ue_PyIDetailsViewType);
86+
Py_INCREF(&ue_PyIDetailsViewType);
87+
PyModule_AddObject(ue_module, "IDetailsView", (PyObject *)&ue_PyIDetailsViewType);
8888
}
8989

9090
ue_PyIDetailsView *py_ue_is_idetails_view(PyObject *obj)
9191
{
92-
if (!PyObject_IsInstance(obj, (PyObject *)&ue_PyIDetailsViewType))
93-
return nullptr;
94-
return (ue_PyIDetailsView *)obj;
92+
if (!PyObject_IsInstance(obj, (PyObject *)&ue_PyIDetailsViewType))
93+
return nullptr;
94+
return (ue_PyIDetailsView *)obj;
9595
}
9696
#endif

Source/UnrealEnginePython/Private/Slate/UEPySAssetDropTarget.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33

44
#include "UEPySAssetDropTarget.h"
55

6-
#define sw_asset_drop_target StaticCastSharedRef<SAssetDropTarget>(self->s_drop_target.s_compound_widget.s_widget.s_widget)
7-
86

97
static PyMethodDef ue_PySAssetDropTarget_methods[] = {
108
{ NULL } /* Sentinel */
@@ -41,14 +39,16 @@ PyTypeObject ue_PySAssetDropTargetType = {
4139
ue_PySAssetDropTarget_methods, /* tp_methods */
4240
};
4341

44-
static int ue_py_sasset_drop_target_init(ue_PySAssetDropTarget *self, PyObject *args, PyObject *kwargs) {
42+
static int ue_py_sasset_drop_target_init(ue_PySAssetDropTarget *self, PyObject *args, PyObject *kwargs)
43+
{
4544
ue_py_slate_setup_farguments(SAssetDropTarget);
4645

47-
ue_py_snew(SAssetDropTarget, s_drop_target.s_compound_widget.s_widget);
46+
ue_py_snew(SAssetDropTarget);
4847
return 0;
4948
}
5049

51-
void ue_python_init_sasset_drop_target(PyObject *ue_module) {
50+
void ue_python_init_sasset_drop_target(PyObject *ue_module)
51+
{
5252

5353
ue_PySAssetDropTargetType.tp_init = (initproc)ue_py_sasset_drop_target_init;
5454

Source/UnrealEnginePython/Private/Slate/UEPySBorder.cpp

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,46 +4,41 @@
44
#include "UEPySBorder.h"
55

66

7-
#define sw_border StaticCastSharedRef<SBorder>(self->s_compound_widget.s_widget.s_widget)
8-
97
static PyObject *py_ue_sborder_clear_content(ue_PySBorder *self, PyObject * args)
108
{
11-
12-
sw_border->ClearContent();
9+
ue_py_slate_cast(SBorder);
10+
py_SBorder->ClearContent();
1311

1412
Py_RETURN_NONE;
1513
}
1614

1715
static PyObject *py_ue_sborder_set_content(ue_PySBorder *self, PyObject * args)
1816
{
17+
ue_py_slate_cast(SBorder);
18+
1919
PyObject *py_content;
2020
if (!PyArg_ParseTuple(args, "O:set_content", &py_content))
2121
{
22-
return NULL;
23-
}
24-
25-
ue_PySWidget *py_swidget = py_ue_is_swidget(py_content);
26-
if (!py_swidget)
27-
{
28-
return PyErr_Format(PyExc_Exception, "argument is not a SWidget");
22+
return nullptr;
2923
}
3024

25+
TSharedPtr<SWidget> child = py_ue_is_swidget<SWidget>(py_content);
26+
if (!child.IsValid())
27+
return nullptr;
3128

32-
Py_INCREF(py_swidget);
29+
py_SBorder->SetContent(child.ToSharedRef());
3330

34-
35-
sw_border->SetContent(py_swidget->s_widget->AsShared());
36-
37-
Py_INCREF(self);
38-
return (PyObject *)self;
31+
Py_RETURN_SLATE_SELF;
3932
}
4033

4134
static PyObject *py_ue_sborder_set_padding(ue_PySBorder *self, PyObject * args)
4235
{
36+
ue_py_slate_cast(SBorder);
37+
4338
PyObject *py_padding;
4439
if (!PyArg_ParseTuple(args, "O:set_padding", &py_padding))
4540
{
46-
return NULL;
41+
return nullptr;
4742
}
4843

4944
FMargin *margin = ue_py_check_struct<FMargin>(py_padding);
@@ -59,42 +54,42 @@ static PyObject *py_ue_sborder_set_padding(ue_PySBorder *self, PyObject * args)
5954
Py_DECREF(py_float);
6055
}
6156

62-
sw_border->SetPadding(*margin);
57+
py_SBorder->SetPadding(*margin);
6358

64-
Py_INCREF(self);
65-
return (PyObject *)self;
59+
Py_RETURN_SLATE_SELF;
6660
}
6761

6862
static PyObject *py_ue_sborder_set_h_align(ue_PySBorder *self, PyObject * args)
6963
{
64+
ue_py_slate_cast(SBorder);
7065
int align;
7166
if (!PyArg_ParseTuple(args, "i:set_h_align", &align))
7267
{
73-
return NULL;
68+
return nullptr;
7469
}
7570

76-
sw_border->SetHAlign((EHorizontalAlignment)align);
71+
py_SBorder->SetHAlign((EHorizontalAlignment)align);
7772

78-
Py_INCREF(self);
79-
return (PyObject *)self;
73+
Py_RETURN_SLATE_SELF;
8074
}
8175

8276
static PyObject *py_ue_sborder_set_v_align(ue_PySBorder *self, PyObject * args)
8377
{
78+
ue_py_slate_cast(SBorder);
8479
int align;
8580
if (!PyArg_ParseTuple(args, "i:set_v_align", &align))
8681
{
87-
return NULL;
82+
return nullptr;
8883
}
8984

90-
sw_border->SetVAlign((EVerticalAlignment)align);
85+
py_SBorder->SetVAlign((EVerticalAlignment)align);
9186

92-
Py_INCREF(self);
93-
return (PyObject *)self;
87+
Py_RETURN_SLATE_SELF;
9488
}
9589

9690
static PyObject *py_ue_sborder_set_border_image(ue_PySBorder *self, PyObject * args)
9791
{
92+
ue_py_slate_cast(SBorder);
9893
PyObject *py_brush;
9994
if (!PyArg_ParseTuple(args, "O:set_border_image", &py_brush))
10095
{
@@ -105,10 +100,9 @@ static PyObject *py_ue_sborder_set_border_image(ue_PySBorder *self, PyObject * a
105100
if (!brush)
106101
return PyErr_Format(PyExc_Exception, "argument is not a FSlateBrush");
107102

108-
sw_border->SetBorderImage(brush);
103+
py_SBorder->SetBorderImage(brush);
109104

110-
Py_INCREF(self);
111-
return (PyObject *)self;
105+
Py_RETURN_SLATE_SELF;
112106
}
113107

114108
static PyMethodDef ue_PySBorder_methods[] = {
@@ -165,7 +159,7 @@ static int ue_py_sborder_init(ue_PySBorder *self, PyObject *args, PyObject *kwar
165159
ue_py_slate_farguments_struct("foreground_color", ForegroundColor, FSlateColor);
166160
ue_py_slate_farguments_fvector2d("content_scale", ContentScale);
167161
ue_py_slate_farguments_fvector2d("desired_size_scale", DesiredSizeScale);
168-
ue_py_snew(SBorder, s_compound_widget.s_widget);
162+
ue_py_snew(SBorder);
169163

170164
return 0;
171165
}

Source/UnrealEnginePython/Private/Slate/UEPySBox.cpp

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,22 @@
33

44
#include "UEPySBox.h"
55

6-
7-
#define sw_box StaticCastSharedRef<SBox>(self->s_panel.s_widget.s_widget)
8-
96
static PyObject *py_ue_sbox_set_content(ue_PySBox *self, PyObject * args)
107
{
8+
ue_py_slate_cast(SBox);
119
PyObject *py_content;
1210
if (!PyArg_ParseTuple(args, "O:set_content", &py_content))
1311
{
1412
return NULL;
1513
}
1614

17-
ue_PySWidget *py_swidget = py_ue_is_swidget(py_content);
18-
if (!py_swidget)
19-
{
20-
return PyErr_Format(PyExc_Exception, "argument is not a SWidget");
21-
}
22-
23-
Py_INCREF(py_swidget);
15+
TSharedPtr<SWidget> child = py_ue_is_swidget<SWidget>(py_content);
16+
if (!child.IsValid())
17+
return nullptr;
2418

25-
sw_box->SetContent(py_swidget->s_widget->AsShared());
19+
py_SBox->SetContent(child.ToSharedRef());
2620

27-
Py_INCREF(self);
28-
return (PyObject *)self;
21+
Py_RETURN_SLATE_SELF;
2922
}
3023

3124
static PyMethodDef ue_PySBox_methods[] = {
@@ -81,7 +74,7 @@ static int ue_py_sbox_init(ue_PySBox *self, PyObject *args, PyObject *kwargs)
8174
ue_py_slate_farguments_optional_foptional_size("min_desired_height", MinDesiredHeight);
8275
ue_py_slate_farguments_optional_foptional_size("min_desired_width", MinDesiredWidth);
8376

84-
ue_py_snew(SBox, s_panel.s_widget);
77+
ue_py_snew(SBox);
8578

8679
return 0;
8780
}

Source/UnrealEnginePython/Private/Slate/UEPySBoxPanel.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44
#include "UEPySBoxPanel.h"
55

66

7-
#define sw_box_panel StaticCastSharedRef<SBoxPanel>(self->s_panel.s_widget.s_widget)
8-
9-
static PyObject *py_ue_sbox_panel_clear_children(ue_PySGridPanel *self, PyObject * args)
7+
static PyObject *py_ue_sbox_panel_clear_children(ue_PySBoxPanel *self, PyObject * args)
108
{
9+
ue_py_slate_cast(SBoxPanel);
1110

12-
sw_box_panel->ClearChildren();
11+
py_SBoxPanel->ClearChildren();
1312

1413
Py_RETURN_NONE;
1514
}

0 commit comments

Comments
 (0)