Skip to content

Commit b3f2c38

Browse files
v-einhoffstadt
authored andcommitted
fix: Restored item aliases in node editor and other places #2122
This fixes a regression introduced in #2034. Also, generate_uuid() now does not perform useless item lookup (GetItem()). Overall, the use of ToPyUUID() has been revisited and somewhat cleaned up.
1 parent 4e96afa commit b3f2c38

14 files changed

Lines changed: 113 additions & 111 deletions

src/dearpygui_commands.h

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2685,7 +2685,7 @@ get_frame_rate(PyObject* self, PyObject* args, PyObject* kwargs)
26852685
static PyObject*
26862686
generate_uuid(PyObject* self, PyObject* args, PyObject* kwargs)
26872687
{
2688-
return ToPyUUID(GenerateUUID());
2688+
return ToPyUUID(GenerateUUID(), "");
26892689
}
26902690

26912691
static PyObject*
@@ -2936,10 +2936,7 @@ pop_container_stack(PyObject* self, PyObject* args, PyObject* kwargs)
29362936
mvAppItem* item = containers.top();
29372937
containers.pop();
29382938

2939-
if (item)
2940-
return ToPyUUID(item);
2941-
else
2942-
return GetPyNone();
2939+
return ToPyUUIDOrNone(item);
29432940

29442941
}
29452942

@@ -2963,34 +2960,31 @@ top_container_stack(PyObject* self, PyObject* args, PyObject* kwargs)
29632960
if (!containers.empty())
29642961
item = containers.top();
29652962

2966-
if (item)
2967-
return ToPyUUID(item);
2968-
else
2969-
return GetPyNone();
2963+
return ToPyUUIDOrNone(item);
29702964
}
29712965

29722966
static PyObject*
29732967
last_item(PyObject* self, PyObject* args, PyObject* kwargs)
29742968
{
29752969
mvPySafeLockGuard lk(GContext->mutex);
29762970

2977-
return ToPyUUID(mvItemRegistry::threadContext.lastItemAdded);
2971+
return PyUUIDFromItem(mvItemRegistry::threadContext.lastItemAdded);
29782972
}
29792973

29802974
static PyObject*
29812975
last_container(PyObject* self, PyObject* args, PyObject* kwargs)
29822976
{
29832977
mvPySafeLockGuard lk(GContext->mutex);
29842978

2985-
return ToPyUUID(mvItemRegistry::threadContext.lastContainerAdded);
2979+
return PyUUIDFromItem(mvItemRegistry::threadContext.lastContainerAdded);
29862980
}
29872981

29882982
static PyObject*
29892983
last_root(PyObject* self, PyObject* args, PyObject* kwargs)
29902984
{
29912985
mvPySafeLockGuard lk(GContext->mutex);
29922986

2993-
return ToPyUUID(mvItemRegistry::threadContext.lastRootAdded);
2987+
return PyUUIDFromItem(mvItemRegistry::threadContext.lastRootAdded);
29942988
}
29952989

29962990
static PyObject*
@@ -3110,15 +3104,15 @@ get_active_window(PyObject* self, PyObject* args, PyObject* kwargs)
31103104
{
31113105
mvPySafeLockGuard lk(GContext->mutex);
31123106

3113-
return ToPyUUID(GContext->activeWindow);
3107+
return PyUUIDFromItem(GContext->activeWindow);
31143108
}
31153109

31163110
static PyObject*
31173111
get_focused_item(PyObject* self, PyObject* args, PyObject* kwargs)
31183112
{
31193113
mvPySafeLockGuard lk(GContext->mutex);
31203114

3121-
return ToPyUUID(GContext->focusedItem);
3115+
return PyUUIDFromItem(GContext->focusedItem);
31223116
}
31233117

31243118
static PyObject*
@@ -3497,7 +3491,7 @@ get_alias_id(PyObject* self, PyObject* args, PyObject* kwargs)
34973491

34983492
mvUUID result = GetIdFromAlias((*GContext->itemRegistry), alias);
34993493

3500-
return ToPyUUID(result);
3494+
return ToPyUUID(result, "");
35013495
}
35023496

35033497
static PyObject*
@@ -3633,20 +3627,9 @@ get_item_info(PyObject* self, PyObject* args, PyObject* kwargs)
36333627
PyDict_SetItemString(pdict, "type", mvPyObject(ToPyString(DearPyGui::GetEntityTypeString(appitem->type))));
36343628
PyDict_SetItemString(pdict, "target", mvPyObject(ToPyInt(DearPyGui::GetEntityTargetSlot(appitem->type))));
36353629

3636-
if (appitem->info.parentPtr)
3637-
PyDict_SetItemString(pdict, "parent", mvPyObject(ToPyUUID(appitem->info.parentPtr->uuid)));
3638-
else
3639-
PyDict_SetItemString(pdict, "parent", mvPyObject(GetPyNone()));
3640-
3641-
if (appitem->theme)
3642-
PyDict_SetItemString(pdict, "theme", mvPyObject(ToPyUUID(appitem->theme->uuid)));
3643-
else
3644-
PyDict_SetItemString(pdict, "theme", mvPyObject(GetPyNone()));
3645-
3646-
if (appitem->font)
3647-
PyDict_SetItemString(pdict, "font", mvPyObject(ToPyUUID(appitem->font->uuid)));
3648-
else
3649-
PyDict_SetItemString(pdict, "font", mvPyObject(GetPyNone()));
3630+
PyDict_SetItemString(pdict, "parent", mvPyObject(ToPyUUIDOrNone(appitem->info.parentPtr)));
3631+
PyDict_SetItemString(pdict, "theme", mvPyObject(ToPyUUIDOrNone(appitem->theme.get())));
3632+
PyDict_SetItemString(pdict, "font", mvPyObject(ToPyUUIDOrNone(appitem->font.get())));
36503633

36513634
if (DearPyGui::GetEntityDesciptionFlags(appitem->type) & MV_ITEM_DESC_CONTAINER)
36523635
PyDict_SetItemString(pdict, "container", mvPyObject(ToPyBool(true)));
@@ -3697,7 +3680,7 @@ get_item_configuration(PyObject* self, PyObject* args, PyObject* kwargs)
36973680
mvPyObject py_payload_type = ToPyString(appitem->config.payloadType);
36983681
mvPyObject py_label = ToPyString(appitem->config.specifiedLabel);
36993682
mvPyObject py_use_internal_label = ToPyBool(appitem->config.useInternalLabel);
3700-
mvPyObject py_source = ToPyUUID(appitem->config.source);
3683+
mvPyObject py_source = PyUUIDFromItem(appitem->config.source);
37013684
mvPyObject py_show = ToPyBool(appitem->config.show);
37023685
mvPyObject py_enabled = ToPyBool(appitem->config.enabled);
37033686
mvPyObject py_tracked = ToPyBool(appitem->config.tracked);

src/mvAppItem.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void mvAppItem::submitCallback(mvColor app_data)
111111
}
112112

113113
template<>
114-
void mvAppItem::submitCallback(mvUUID app_data)
114+
void mvAppItem::submitCallback(mvAppItem* app_data)
115115
{
116116
submitCallbackEx([=]() { return ToPyUUID(app_data); });
117117
}

src/mvBasicWidgets.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ DearPyGui::fill_configuration_dict(const mvImageConfig& inConfig, PyObject* outD
664664
PyDict_SetItemString(outDict, "uv_max", mvPyObject(ToPyPair(inConfig.uv_max.x, inConfig.uv_max.y)));
665665
PyDict_SetItemString(outDict, "tint_color", mvPyObject(ToPyColor(inConfig.tintColor)));
666666
PyDict_SetItemString(outDict, "border_color", mvPyObject(ToPyColor(inConfig.borderColor)));
667-
PyDict_SetItemString(outDict, "texture_tag", mvPyObject(ToPyUUID(inConfig.textureUUID)));
667+
PyDict_SetItemString(outDict, "texture_tag", mvPyObject(ToPyUUID(inConfig.texture.get())));
668668
}
669669

670670
void
@@ -677,7 +677,7 @@ DearPyGui::fill_configuration_dict(const mvImageButtonConfig& inConfig, PyObject
677677
PyDict_SetItemString(outDict, "uv_max", mvPyObject(ToPyPair(inConfig.uv_max.x, inConfig.uv_max.y)));
678678
PyDict_SetItemString(outDict, "tint_color", mvPyObject(ToPyColor(inConfig.tintColor)));
679679
PyDict_SetItemString(outDict, "background_color", mvPyObject(ToPyColor(inConfig.backgroundColor)));
680-
PyDict_SetItemString(outDict, "texture_tag", mvPyObject(ToPyUUID(inConfig.textureUUID)));
680+
PyDict_SetItemString(outDict, "texture_tag", mvPyObject(ToPyUUID(inConfig.texture.get())));
681681
PyDict_SetItemString(outDict, "frame_padding", mvPyObject(ToPyInt(inConfig.framePadding)));
682682
}
683683

@@ -1469,14 +1469,14 @@ DearPyGui::set_configuration(PyObject* inDict, mvImageConfig& outConfig)
14691469
if (PyObject* item = PyDict_GetItemString(inDict, "border_color")) outConfig.borderColor = ToColor(item);
14701470
if (PyObject* item = PyDict_GetItemString(inDict, "texture_tag"))
14711471
{
1472-
outConfig.textureUUID = GetIDFromPyObject(item);
1473-
if (outConfig.textureUUID == MV_ATLAS_UUID)
1472+
mvUUID textureUUID = GetIDFromPyObject(item);
1473+
if (textureUUID == MV_ATLAS_UUID)
14741474
{
1475-
outConfig.texture = std::make_shared<mvStaticTexture>(outConfig.textureUUID);
1475+
outConfig.texture = std::make_shared<mvStaticTexture>(textureUUID);
14761476
}
14771477
else
14781478
{
1479-
outConfig.texture = GetRefItem(*GContext->itemRegistry, outConfig.textureUUID);
1479+
outConfig.texture = GetRefItem(*GContext->itemRegistry, textureUUID);
14801480
if (!outConfig.texture)
14811481
mvThrowPythonError(mvErrorCode::mvTextureNotFound, GetEntityCommand(mvAppItemType::mvImage), "Texture not found.", nullptr);
14821482
}
@@ -1496,14 +1496,14 @@ DearPyGui::set_configuration(PyObject* inDict, mvImageButtonConfig& outConfig)
14961496
if (PyObject* item = PyDict_GetItemString(inDict, "frame_padding")) outConfig.framePadding = ToInt(item);
14971497
if (PyObject* item = PyDict_GetItemString(inDict, "texture_tag"))
14981498
{
1499-
outConfig.textureUUID = GetIDFromPyObject(item);
1500-
if (outConfig.textureUUID == MV_ATLAS_UUID)
1499+
mvUUID textureUUID = GetIDFromPyObject(item);
1500+
if (textureUUID == MV_ATLAS_UUID)
15011501
{
1502-
outConfig.texture = std::make_shared<mvStaticTexture>(outConfig.textureUUID);
1502+
outConfig.texture = std::make_shared<mvStaticTexture>(textureUUID);
15031503
}
15041504
else
15051505
{
1506-
outConfig.texture = GetRefItem(*GContext->itemRegistry, outConfig.textureUUID);
1506+
outConfig.texture = GetRefItem(*GContext->itemRegistry, textureUUID);
15071507
if (!outConfig.texture)
15081508
mvThrowPythonError(mvErrorCode::mvTextureNotFound, GetEntityCommand(mvAppItemType::mvImageButton), "Texture not found.", nullptr);
15091509
}
@@ -1549,14 +1549,14 @@ DearPyGui::set_required_configuration(PyObject* inDict, mvImageConfig& outConfig
15491549
if (!VerifyRequiredArguments(GetParsers()[GetEntityCommand(mvAppItemType::mvImage)], inDict))
15501550
return;
15511551

1552-
outConfig.textureUUID = GetIDFromPyObject(PyTuple_GetItem(inDict, 0));
1553-
if (outConfig.textureUUID == MV_ATLAS_UUID)
1552+
mvUUID textureUUID = GetIDFromPyObject(PyTuple_GetItem(inDict, 0));
1553+
if (textureUUID == MV_ATLAS_UUID)
15541554
{
1555-
outConfig.texture = std::make_shared<mvStaticTexture>(outConfig.textureUUID);
1555+
outConfig.texture = std::make_shared<mvStaticTexture>(textureUUID);
15561556
}
15571557
else
15581558
{
1559-
outConfig.texture = GetRefItem(*GContext->itemRegistry, outConfig.textureUUID);
1559+
outConfig.texture = GetRefItem(*GContext->itemRegistry, textureUUID);
15601560
if (!outConfig.texture)
15611561
mvThrowPythonError(mvErrorCode::mvTextureNotFound, GetEntityCommand(mvAppItemType::mvImage), "Texture not found.", nullptr);
15621562
}
@@ -1568,14 +1568,14 @@ DearPyGui::set_required_configuration(PyObject* inDict, mvImageButtonConfig& out
15681568
if (!VerifyRequiredArguments(GetParsers()[GetEntityCommand(mvAppItemType::mvImageButton)], inDict))
15691569
return;
15701570

1571-
outConfig.textureUUID = GetIDFromPyObject(PyTuple_GetItem(inDict, 0));
1572-
if (outConfig.textureUUID == MV_ATLAS_UUID)
1571+
mvUUID textureUUID = GetIDFromPyObject(PyTuple_GetItem(inDict, 0));
1572+
if (textureUUID == MV_ATLAS_UUID)
15731573
{
1574-
outConfig.texture = std::make_shared<mvStaticTexture>(outConfig.textureUUID);
1574+
outConfig.texture = std::make_shared<mvStaticTexture>(textureUUID);
15751575
}
15761576
else
15771577
{
1578-
outConfig.texture = GetRefItem(*GContext->itemRegistry, outConfig.textureUUID);
1578+
outConfig.texture = GetRefItem(*GContext->itemRegistry, textureUUID);
15791579
if (!outConfig.texture)
15801580
mvThrowPythonError(mvErrorCode::mvTextureNotFound, GetEntityCommand(mvAppItemType::mvImageButton), "Texture not found.", nullptr);
15811581
}

src/mvBasicWidgets.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,6 @@ struct mvImageConfig
530530
{
531531
// pointer to existing item or internal
532532
std::shared_ptr<mvAppItem> texture = nullptr;
533-
mvUUID textureUUID = 0;
534533
mvVec2 uv_min = { 0.0f, 0.0f };
535534
mvVec2 uv_max = { 1.0f, 1.0f };
536535
mvColor tintColor = { 1.0f, 1.0f, 1.0f, 1.0f };
@@ -541,7 +540,6 @@ struct mvImageButtonConfig
541540
{
542541
// pointer to existing item or internal
543542
std::shared_ptr<mvAppItem> texture = nullptr;
544-
mvUUID textureUUID = 0;
545543
mvVec2 uv_min = { 0.0f, 0.0f };
546544
mvVec2 uv_max = { 1.0f, 1.0f };
547545
mvColor tintColor = { 1.0f, 1.0f, 1.0f, 1.0f };

src/mvCallbackRegistry.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,7 @@ void mvRunCallback(PyObject* callback, PyObject* user_data, mvUUID sender, const
131131

132132
if (count > 0)
133133
{
134-
PyTuple_SetItem(pArgs, 0, sender_alias.empty()?
135-
ToPyUUID(sender) :
136-
ToPyString(sender_alias));
134+
PyTuple_SetItem(pArgs, 0, ToPyUUID(sender, sender_alias));
137135

138136
if (count > 1)
139137
{

src/mvContainers.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,7 @@ DearPyGui::draw_tab(ImDrawList* drawlist, mvAppItem& item, mvTabConfig& config)
846846
// run call back if it exists
847847
if (parent->getSpecificValue() != item.uuid)
848848
{
849-
parent->submitCallback(item.uuid);
849+
parent->submitCallback(&item);
850850
}
851851

852852
parent->setValue(item.uuid);

src/mvContainers.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ class mvTabBar : public mvAppItem
246246
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }
247247
void getSpecificConfiguration(PyObject* dict) override { DearPyGui::fill_configuration_dict(configData, dict); }
248248
void setDataSource(mvUUID dataSource) override { DearPyGui::set_data_source(*this, uuid, configData); }
249-
PyObject* getPyValue() override{ return ToPyUUID(*configData.value); }
249+
PyObject* getPyValue() override{ return PyUUIDFromItem(*configData.value); }
250250
void setPyValue(PyObject* value) override{ *configData.value = ToUUID(value); }
251251
mvUUID getSpecificValue() { return configData.uiValue; }
252252
void setValue(mvUUID value) { configData.uiValue = value; }

src/mvDrawings.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ void mvDrawImage::handleSpecificRequiredArgs(PyObject* dict)
576576
if (!VerifyRequiredArguments(GetParsers()[GetEntityCommand(type)], dict))
577577
return;
578578

579-
_textureUUID = GetIDFromPyObject(PyTuple_GetItem(dict, 0));
579+
mvUUID _textureUUID = GetIDFromPyObject(PyTuple_GetItem(dict, 0));
580580
if (_textureUUID == MV_ATLAS_UUID)
581581
{
582582
_texture = std::make_shared<mvStaticTexture>(_textureUUID);
@@ -606,7 +606,7 @@ void mvDrawImage::handleSpecificKeywordArgs(PyObject* dict)
606606
if (PyObject* item = PyDict_GetItemString(dict, "color")) _color = ToColor(item);
607607
if (PyObject* item = PyDict_GetItemString(dict, "texture_tag"))
608608
{
609-
_textureUUID = GetIDFromPyObject(item);
609+
mvUUID _textureUUID = GetIDFromPyObject(item);
610610
if (_textureUUID == MV_ATLAS_UUID)
611611
{
612612
_texture = std::make_shared<mvStaticTexture>(_textureUUID);
@@ -633,7 +633,7 @@ void mvDrawImage::getSpecificConfiguration(PyObject* dict)
633633
PyDict_SetItemString(dict, "uv_min", mvPyObject(ToPyPair(_uv_min.x, _uv_min.y)));
634634
PyDict_SetItemString(dict, "uv_max", mvPyObject(ToPyPair(_uv_max.x, _uv_max.y)));
635635
PyDict_SetItemString(dict, "color", mvPyObject(ToPyColor(_color)));
636-
PyDict_SetItemString(dict, "texture_tag", mvPyObject(ToPyUUID(_textureUUID)));
636+
PyDict_SetItemString(dict, "texture_tag", mvPyObject(ToPyUUID(_texture.get())));
637637
}
638638

639639
void mvDrawImageQuad::draw(ImDrawList* drawlist, float x, float y)
@@ -696,7 +696,7 @@ void mvDrawImageQuad::handleSpecificRequiredArgs(PyObject* dict)
696696
if (!VerifyRequiredArguments(GetParsers()[GetEntityCommand(type)], dict))
697697
return;
698698

699-
_textureUUID = GetIDFromPyObject(PyTuple_GetItem(dict, 0));
699+
mvUUID _textureUUID = GetIDFromPyObject(PyTuple_GetItem(dict, 0));
700700
if (_textureUUID == MV_ATLAS_UUID)
701701
{
702702
_texture = std::make_shared<mvStaticTexture>(_textureUUID);
@@ -735,7 +735,7 @@ void mvDrawImageQuad::handleSpecificKeywordArgs(PyObject* dict)
735735
if (PyObject* item = PyDict_GetItemString(dict, "color")) _color = ToColor(item);
736736
if (PyObject* item = PyDict_GetItemString(dict, "texture_tag"))
737737
{
738-
_textureUUID = GetIDFromPyObject(item);
738+
mvUUID _textureUUID = GetIDFromPyObject(item);
739739
if (_textureUUID == MV_ATLAS_UUID)
740740
{
741741
_texture = std::make_shared<mvStaticTexture>(_textureUUID);
@@ -768,7 +768,7 @@ void mvDrawImageQuad::getSpecificConfiguration(PyObject* dict)
768768
PyDict_SetItemString(dict, "uv3", mvPyObject(ToPyPair(_uv3.x, _uv3.y)));
769769
PyDict_SetItemString(dict, "uv4", mvPyObject(ToPyPair(_uv4.x, _uv4.y)));
770770
PyDict_SetItemString(dict, "color", mvPyObject(ToPyColor(_color)));
771-
PyDict_SetItemString(dict, "texture_tag", mvPyObject(ToPyUUID(_textureUUID)));
771+
PyDict_SetItemString(dict, "texture_tag", mvPyObject(ToPyUUID(_texture.get())));
772772
}
773773

774774
mvDrawLayer::~mvDrawLayer()

src/mvDrawings.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ class mvDrawImage : public mvAppItem
206206
private:
207207

208208

209-
mvUUID _textureUUID = 0;
210209
mvVec4 _pmax = { 0.0f, 0.0f, 0.0f, 1.0f };
211210
mvVec4 _pmin = { 0.0f, 0.0f, 0.0f, 1.0f };
212211
mvVec2 _uv_min = { 0.0f, 0.0f };
@@ -234,7 +233,6 @@ class mvDrawImageQuad : public mvAppItem
234233
private:
235234

236235

237-
mvUUID _textureUUID = 0;
238236
mvVec4 _p1 = { 0.0f, 0.0f, 0.0f, 1.0f };
239237
mvVec4 _p2 = { 0.0f, 0.0f, 0.0f, 1.0f };
240238
mvVec4 _p3 = { 0.0f, 0.0f, 0.0f, 1.0f };

0 commit comments

Comments
 (0)