Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dearpygui/_dearpygui.pyi

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dearpygui/_dearpygui_RTD.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion dearpygui/_header.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ def start_dearpygui():

if not internal_dpg.is_viewport_ok():
raise RuntimeError("Viewport was not created and shown.")
return

while(internal_dpg.is_dearpygui_running()):
internal_dpg.render_dearpygui_frame()
Expand Down
6 changes: 3 additions & 3 deletions dearpygui/dearpygui.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dearpygui/demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ def _log(sender, app_data, user_data):

with dpg.child_window(height=60, autosize_x=True):
for i in range(10):
dpg.add_text(f"Scolling Text{i}")
dpg.add_text(f"Scrolling Text{i}")

dpg.add_slider_float(label="Slider Float")
dpg.add_input_int(label="Input Int")
Expand Down
2 changes: 2 additions & 0 deletions src/mvAppItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5066,6 +5066,8 @@ DearPyGui::GetEntityParser(mvAppItemType type)
MV_PARSER_ARG_CALLBACK)
);

args.push_back({ mvPyDataType::Bool, "two_way", mvArgType::KEYWORD_ARG, "False", "Trigger on both 'opened' and 'closed' events, i.e. when the 'opened' state is toggled between the two values. If False, some containers will trigger it only on the 'opened' event." });

setup.about = "Adds a togged open handler.";
setup.category = { "Widgets", "Events" };
break;
Expand Down
2 changes: 1 addition & 1 deletion src/mvAppItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ enum ItemDescriptionFlags
enum class mvLibType
{
MV_IMGUI = 0,
OT = 1,
MV_IMPLOT = 1,
MV_IMNODES = 2
};

Expand Down
4 changes: 2 additions & 2 deletions src/mvAppItemState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ ResetAppItemState(mvAppItemState& state)
state.activated = false;
state.deactivated = false;
state.deactivatedAfterEdit = false;
state.toggledOpen = false;
state.toggledOpenPure = state.toggledOpen = false;
state.mvRectSizeResized = false;
state.scrolledX = state.scrolledY = false;
state.isScrollingX = state.isScrollingY = false;
Expand Down Expand Up @@ -57,7 +57,7 @@ UpdateAppItemState(mvAppItemState& state)
state.activated = ImGui::IsItemActivated();
state.deactivated = ImGui::IsItemDeactivated();
state.deactivatedAfterEdit = ImGui::IsItemDeactivatedAfterEdit();
state.toggledOpen = ImGui::IsItemToggledOpen();
state.toggledOpenPure = state.toggledOpen = ImGui::IsItemToggledOpen();
state.rectMin = { ImGui::GetItemRectMin().x, ImGui::GetItemRectMin().y };
state.rectMax = { ImGui::GetItemRectMax().x, ImGui::GetItemRectMax().y };
state.rectSize = { ImGui::GetItemRectSize().x, ImGui::GetItemRectSize().y };
Expand Down
4 changes: 4 additions & 0 deletions src/mvAppItemState.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,10 @@ struct mvAppItemState
b8 deactivated = false;
b8 deactivatedAfterEdit = false;
b8 toggledOpen = false;
// This one is not reset by mvCollapsingHeader and mvTreeNode; also, not all items
// initialize it (but mvCollapsingHeader and mvTreeNode do, and they in fact are
// the only ones that must do it). Used as an extra flag by the two-way toggled open handler.
b8 toggledOpenPure = false;
b8 mvRectSizeResized = false;
b8 scrolledX = false;
b8 scrolledY = false;
Expand Down
18 changes: 17 additions & 1 deletion src/mvItemHandlers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -343,12 +343,28 @@ void mvResizeHandler::customAction(void* data)
void mvToggledOpenHandler::customAction(void* data)
{
mvAppItemState* state = static_cast<mvAppItemState*>(data);
if (state->toggledOpen)
if (state->toggledOpen || twoWay && state->toggledOpenPure)
{
submitHandler(state->parent);
}
}

void mvToggledOpenHandler::handleSpecificKeywordArgs(PyObject* dict)
{
if (dict == nullptr)
return;

if (PyObject* item = PyDict_GetItemString(dict, "two_way")) twoWay = ToBool(item);
}

void mvToggledOpenHandler::getSpecificConfiguration(PyObject* dict)
{
if (dict == nullptr)
return;

PyDict_SetItemString(dict, "two_way", mvPyObject(ToPyBool(twoWay)));
}

void mvVisibleHandler::customAction(void* data)
{
mvAppItemState* state = static_cast<mvAppItemState*>(data);
Expand Down
5 changes: 5 additions & 0 deletions src/mvItemHandlers.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,11 @@ class mvToggledOpenHandler : public mvItemHandler
explicit mvToggledOpenHandler(mvUUID uuid) : mvItemHandler(uuid) {}
void draw(ImDrawList* drawlist, float x, float y) override {}
void customAction(void* data = nullptr) override;
void handleSpecificKeywordArgs(PyObject* dict) override;
void getSpecificConfiguration(PyObject* dict) override;

private:
bool twoWay = false;
};

class mvVisibleHandler : public mvItemHandler
Expand Down
2 changes: 1 addition & 1 deletion src/mvPyUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ PyObject* GetPyNoneOrError ();
PyObject* ToPyUUID (mvUUID uuid, const std::string& alias);

// Returns item UUID or alias, or zero if `item` is null. An valid item can never
// a UUID of zero, so it is a good value to designate a "no item" case (also can
// have a UUID of zero, so it is a good value to designate a "no item" case (also can
// easily be checked with `if (item)` in Python).
PyObject* ToPyUUID (mvAppItem* item);

Expand Down
12 changes: 6 additions & 6 deletions src/mvThemes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ void mvThemeColor::push_theme_color()

ImGui::PushStyleColor(_targetColor, color);
}
else if (_libType == mvLibType::OT)
else if (_libType == mvLibType::MV_IMPLOT)
ImPlot::PushStyleColor(_targetColor, color);
else if (_libType == mvLibType::MV_IMNODES)
ImNodes::PushColorStyle(_targetColor, ImGui::ColorConvertFloat4ToU32(color));
Expand All @@ -145,7 +145,7 @@ void mvThemeColor::pop_theme_color()
{
if (_libType == mvLibType::MV_IMGUI)
ImGui::PopStyleColor();
else if (_libType == mvLibType::OT)
else if (_libType == mvLibType::MV_IMPLOT)
ImPlot::PopStyleColor();
else if (_libType == mvLibType::MV_IMNODES)
ImNodes::PopColorStyle();
Expand Down Expand Up @@ -194,7 +194,7 @@ void mvThemeColor::handleSpecificKeywordArgs(PyObject* dict)
}
}

else if (_libType == mvLibType::OT)
else if (_libType == mvLibType::MV_IMPLOT)
{
if (_targetColor >= ImPlotCol_COUNT || _targetColor < 0)
{
Expand Down Expand Up @@ -548,7 +548,7 @@ void mvThemeStyle::push_theme_style()
else if (var_info->Type == ImGuiDataType_Float && var_info->Count == 1)
ImGui::PushStyleVar(_targetStyle, (*_value)[0]);
}
else if (_libType == mvLibType::OT)
else if (_libType == mvLibType::MV_IMPLOT)
{
const mvGuiStyleVarInfo* var_info = GetPlotStyleVarInfo(_targetStyle);
if (var_info->Type == ImGuiDataType_Float && var_info->Count == 1)
Expand All @@ -572,7 +572,7 @@ void mvThemeStyle::pop_theme_style()
{
if (_libType == mvLibType::MV_IMGUI)
ImGui::PopStyleVar();
else if (_libType == mvLibType::OT)
else if (_libType == mvLibType::MV_IMPLOT)
ImPlot::PopStyleVar();
else if (_libType == mvLibType::MV_IMNODES)
ImNodes::PopStyleVar();
Expand Down Expand Up @@ -624,7 +624,7 @@ void mvThemeStyle::handleSpecificKeywordArgs(PyObject* dict)
}
}

else if (_libType == mvLibType::OT)
else if (_libType == mvLibType::MV_IMPLOT)
{
if (_targetStyle >= ImPlotStyleVar_COUNT || _targetStyle < 0)
{
Expand Down
2 changes: 1 addition & 1 deletion src/mvThemes.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class mvThemeStyle : public mvAppItem
private:

std::shared_ptr<std::array<float, 4>> _value = std::make_shared<std::array<float, 4>>(std::array<float, 4>{0.0f, -1.0f, 0.0f, 0.0f});
ImGuiCol _targetStyle = 0;
ImGuiStyleVar _targetStyle = 0;
mvLibType _libType = mvLibType::MV_IMGUI;


Expand Down
Loading