@@ -135,6 +135,28 @@ void bind_imgui_structs(py::module& m) {
135135
136136 ;
137137
138+
139+ // Table sorting
140+ py::class_<ImGuiTableSortSpecs>(m, " ImGuiTableSortSpecs" )
141+ .def (" Specs" , [](py::object& ob) {
142+ ImGuiTableSortSpecs& o = ob.cast <ImGuiTableSortSpecs&>();
143+ std::vector<ImGuiTableColumnSortSpecs> specs;
144+ for (int i = 0 ; i < o.SpecsCount ; i++) {
145+ specs.push_back (o.Specs [i]);
146+ }
147+ return specs;}
148+ )
149+ .def_readonly (" SpecsCount" , &ImGuiTableSortSpecs::SpecsCount)
150+ .def_readwrite (" SpecsDirty" , &ImGuiTableSortSpecs::SpecsDirty)
151+ ;
152+
153+ py::class_<ImGuiTableColumnSortSpecs>(m, " ImGuiTableColumnSortSpecs" )
154+ .def_readonly (" ColumnUserID" , &ImGuiTableColumnSortSpecs::ColumnUserID)
155+ .def_readonly (" ColumnIndex" , &ImGuiTableColumnSortSpecs::ColumnIndex)
156+ .def_readonly (" SortOrder" , &ImGuiTableColumnSortSpecs::SortOrder)
157+ .def_readonly (" SortDirection" , &ImGuiTableColumnSortSpecs::SortDirection)
158+ ;
159+
138160}
139161
140162void bind_imgui_methods (py::module & m) {
@@ -1379,6 +1401,101 @@ void bind_imgui_methods(py::module& m) {
13791401 py::arg (" flags" ) = 0 );
13801402 m.def (" CloseCurrentPopup" , []() { ImGui::CloseCurrentPopup (); });
13811403
1404+ // Tables
1405+ m.def (
1406+ " BeginTable" ,
1407+ [](const char *str_id, int columns, ImGuiTableFlags flags, Vec2T size, float innerwidth) -> bool {
1408+ return ImGui::BeginTable (str_id, columns, flags, to_vec2 (size), innerwidth);
1409+ },
1410+ py::arg (" str" ),
1411+ py::arg (" columns" ),
1412+ py::arg (" flags" ) = 0 ,
1413+ py::arg (" size" ) = std::make_tuple (0 .f , 0 .f ),
1414+ py::arg (" inner_width" ) = 0 .f
1415+ );
1416+ m.def ( " EndTable" , []() { ImGui::EndTable (); } );
1417+ m.def (
1418+ " TableNextRow" ,
1419+ [](ImGuiTableRowFlags flags, float min_row_height) {
1420+ ImGui::TableNextRow (flags, min_row_height);
1421+ },
1422+ py::arg (" flags" ) = 0 ,
1423+ py::arg (" min_row_height" ) = 0 .f
1424+ );
1425+ m.def (
1426+ " TableNextColumn" ,
1427+ []() -> bool {
1428+ return ImGui::TableNextColumn ();
1429+ }
1430+ );
1431+ m.def (
1432+ " TableSetColumnIndex" ,
1433+ [](int column_n) -> bool {
1434+ return ImGui::TableSetColumnIndex (column_n);
1435+ },
1436+ py::arg (" column_n" )
1437+ );
1438+
1439+ // Table headers and columns
1440+ m.def (
1441+ " TableSetupColumn" ,
1442+ [](const char * label, ImGuiTableColumnFlags flags, float init_width_or_height, ImGuiID user_id) {
1443+ ImGui::TableSetupColumn (label, flags, init_width_or_height, user_id);
1444+ },
1445+ py::arg (" label" ),
1446+ py::arg (" flags" ) = 0 ,
1447+ py::arg (" init_width_or_height" ) = 0 .f ,
1448+ py::arg (" user_id" ) = 0u
1449+ );
1450+ m.def (
1451+ " TableSetupScrollFreeze" ,
1452+ [](int cols, int rows) {
1453+ ImGui::TableSetupScrollFreeze (cols, rows);
1454+ },
1455+ py::arg (" cols" ),
1456+ py::arg (" rows" )
1457+ );
1458+ m.def (
1459+ " TableHeader" ,
1460+ [](const char * label) {
1461+ ImGui::TableHeader (label);
1462+ },
1463+ py::arg (" label" )
1464+ );
1465+ m.def (" TableHeadersRow" , []() { ImGui::TableHeadersRow (); });
1466+ m.def (" TableAngledHeadersRow" , []() { ImGui::TableAngledHeadersRow (); });
1467+
1468+ // Table miscellaneous functions
1469+
1470+ // warning! this function returns a pointer which is only valid for a short time, within the same frame and before next call to BeginTable() (see imgui docs)
1471+ // you will get undefined behavior if you try to use it later
1472+ m.def (" TableGetSortSpecs" , []() -> ImGuiTableSortSpecs* { return ImGui::TableGetSortSpecs (); }, py::return_value_policy::reference);
1473+ m.def (" TableGetColumnCount" , []() -> int { return ImGui::TableGetColumnCount (); });
1474+ m.def (" TableGetColumnIndex" , []() -> int { return ImGui::TableGetColumnIndex (); });
1475+ m.def (" TableGetRowIndex" , []() -> int { return ImGui::TableGetRowIndex (); });
1476+ m.def (
1477+ " TableGetColumnName" ,
1478+ [](int column_n) { return py::str (ImGui::TableGetColumnName (column_n)); },
1479+ py::arg (" column_n" ) = -1
1480+ );
1481+ /* TableGetColumnFlags not included for the same reasons. */
1482+ m.def (
1483+ " TableSetColumnEnabled" ,
1484+ [](int column_n, bool enable) { return ImGui::TableSetColumnEnabled (column_n, enable); },
1485+ py::arg (" column_n" ),
1486+ py::arg (" v" )
1487+ );
1488+ m.def (" TableGetHoveredColumn" , []() -> int { return ImGui::TableGetHoveredColumn (); });
1489+ m.def (
1490+ " TableSetBgColor" ,
1491+ [](ImGuiTableBgTarget target, ImU32 color, int column_n) {
1492+ return ImGui::TableSetBgColor (target, color, column_n);
1493+ },
1494+ py::arg (" target" ),
1495+ py::arg (" color" ),
1496+ py::arg (" column_n" ) = -1
1497+ );
1498+
13821499 // Columns
13831500 m.def (
13841501 " Columns" ,
@@ -1928,7 +2045,10 @@ void bind_imgui_methods(py::module& m) {
19282045
19292046void bind_imgui_enums (py::module & m) {
19302047
2048+ py::enum_<ImGuiDir>(m, " ImGuiDir" );
19312049 py::enum_<ImGuiKey>(m, " ImGuiKey" );
2050+ py::enum_<ImGuiMouseSource>(m, " ImGuiMouseSource" );
2051+ py::enum_<ImGuiSortDirection>(m, " ImGuiSortDirection" );
19322052
19332053 m.attr (" ImGuiWindowFlags_None" ) = static_cast <int >(ImGuiWindowFlags_None);
19342054 m.attr (" ImGuiWindowFlags_NoTitleBar" ) = static_cast <int >(ImGuiWindowFlags_NoTitleBar);
@@ -2036,6 +2156,76 @@ void bind_imgui_enums(py::module& m) {
20362156 static_cast <int >(ImGuiTabItemFlags_NoCloseWithMiddleMouseButton);
20372157 m.attr (" ImGuiTabItemFlags_NoPushId" ) = static_cast <int >(ImGuiTabItemFlags_NoPushId);
20382158
2159+ m.attr (" ImGuiTableFlags_None" ) = static_cast <int >(ImGuiTableFlags_None);
2160+ m.attr (" ImGuiTableFlags_Resizable" ) = static_cast <int >(ImGuiTableFlags_Resizable);
2161+ m.attr (" ImGuiTableFlags_Reorderable" ) = static_cast <int >(ImGuiTableFlags_Reorderable);
2162+ m.attr (" ImGuiTableFlags_Hideable" ) = static_cast <int >(ImGuiTableFlags_Hideable);
2163+ m.attr (" ImGuiTableFlags_Sortable" ) = static_cast <int >(ImGuiTableFlags_Sortable);
2164+ m.attr (" ImGuiTableFlags_NoSavedSettings" ) = static_cast <int >(ImGuiTableFlags_NoSavedSettings);
2165+ m.attr (" ImGuiTableFlags_ContextMenuInBody" ) = static_cast <int >(ImGuiTableFlags_ContextMenuInBody);
2166+ m.attr (" ImGuiTableFlags_RowBg" ) = static_cast <int >(ImGuiTableFlags_RowBg);
2167+ m.attr (" ImGuiTableFlags_BordersInnerH" ) = static_cast <int >(ImGuiTableFlags_BordersInnerH);
2168+ m.attr (" ImGuiTableFlags_BordersOuterH" ) = static_cast <int >(ImGuiTableFlags_BordersOuterH);
2169+ m.attr (" ImGuiTableFlags_BordersInnerV" ) = static_cast <int >(ImGuiTableFlags_BordersInnerV);
2170+ m.attr (" ImGuiTableFlags_BordersOuterV" ) = static_cast <int >(ImGuiTableFlags_BordersOuterV);
2171+ m.attr (" ImGuiTableFlags_BordersH" ) = static_cast <int >(ImGuiTableFlags_BordersH);
2172+ m.attr (" ImGuiTableFlags_BordersV" ) = static_cast <int >(ImGuiTableFlags_BordersV);
2173+ m.attr (" ImGuiTableFlags_BordersInner" ) = static_cast <int >(ImGuiTableFlags_BordersInner);
2174+ m.attr (" ImGuiTableFlags_BordersOuter" ) = static_cast <int >(ImGuiTableFlags_BordersOuter);
2175+ m.attr (" ImGuiTableFlags_Borders" ) = static_cast <int >(ImGuiTableFlags_Borders);
2176+ m.attr (" ImGuiTableFlags_NoBordersInBody" ) = static_cast <int >(ImGuiTableFlags_NoBordersInBody);
2177+ m.attr (" ImGuiTableFlags_NoBordersInBodyUntilResize" ) = static_cast <int >(ImGuiTableFlags_NoBordersInBodyUntilResize);
2178+ m.attr (" ImGuiTableFlags_SizingFixedFit" ) = static_cast <int >(ImGuiTableFlags_SizingFixedFit);
2179+ m.attr (" ImGuiTableFlags_SizingFixedSame" ) = static_cast <int >(ImGuiTableFlags_SizingFixedSame);
2180+ m.attr (" ImGuiTableFlags_SizingStretchProp" ) = static_cast <int >(ImGuiTableFlags_SizingStretchProp);
2181+ m.attr (" ImGuiTableFlags_SizingStretchSame" ) = static_cast <int >(ImGuiTableFlags_SizingStretchSame);
2182+ m.attr (" ImGuiTableFlags_NoHostExtendX" ) = static_cast <int >(ImGuiTableFlags_NoHostExtendX);
2183+ m.attr (" ImGuiTableFlags_NoHostExtendY" ) = static_cast <int >(ImGuiTableFlags_NoHostExtendY);
2184+ m.attr (" ImGuiTableFlags_NoKeepColumnsVisible" ) = static_cast <int >(ImGuiTableFlags_NoKeepColumnsVisible);
2185+ m.attr (" ImGuiTableFlags_PreciseWidths" ) = static_cast <int >(ImGuiTableFlags_PreciseWidths);
2186+ m.attr (" ImGuiTableFlags_NoClip" ) = static_cast <int >(ImGuiTableFlags_NoClip);
2187+ m.attr (" ImGuiTableFlags_PadOuterX" ) = static_cast <int >(ImGuiTableFlags_PadOuterX);
2188+ m.attr (" ImGuiTableFlags_NoPadOuterX" ) = static_cast <int >(ImGuiTableFlags_NoPadOuterX);
2189+ m.attr (" ImGuiTableFlags_NoPadInnerX" ) = static_cast <int >(ImGuiTableFlags_NoPadInnerX);
2190+ m.attr (" ImGuiTableFlags_ScrollX" ) = static_cast <int >(ImGuiTableFlags_ScrollX);
2191+ m.attr (" ImGuiTableFlags_ScrollY" ) = static_cast <int >(ImGuiTableFlags_ScrollY);
2192+ m.attr (" ImGuiTableFlags_SortMulti" ) = static_cast <int >(ImGuiTableFlags_SortMulti);
2193+ m.attr (" ImGuiTableFlags_SortTristate" ) = static_cast <int >(ImGuiTableFlags_SortTristate);
2194+ m.attr (" ImGuiTableFlags_HighlightHoveredColumn" ) = static_cast <int >(ImGuiTableFlags_HighlightHoveredColumn);
2195+
2196+ m.attr (" ImGuiTableColumnFlags_None" ) = static_cast <int >(ImGuiTableColumnFlags_None);
2197+ m.attr (" ImGuiTableColumnFlags_Disabled" ) = static_cast <int >(ImGuiTableColumnFlags_Disabled);
2198+ m.attr (" ImGuiTableColumnFlags_DefaultHide" ) = static_cast <int >(ImGuiTableColumnFlags_DefaultHide);
2199+ m.attr (" ImGuiTableColumnFlags_DefaultSort" ) = static_cast <int >(ImGuiTableColumnFlags_DefaultSort);
2200+ m.attr (" ImGuiTableColumnFlags_WidthStretch" ) = static_cast <int >(ImGuiTableColumnFlags_WidthStretch);
2201+ m.attr (" ImGuiTableColumnFlags_WidthFixed" ) = static_cast <int >(ImGuiTableColumnFlags_WidthFixed);
2202+ m.attr (" ImGuiTableColumnFlags_NoResize" ) = static_cast <int >(ImGuiTableColumnFlags_NoResize);
2203+ m.attr (" ImGuiTableColumnFlags_NoReorder" ) = static_cast <int >(ImGuiTableColumnFlags_NoReorder);
2204+ m.attr (" ImGuiTableColumnFlags_NoHide" ) = static_cast <int >(ImGuiTableColumnFlags_NoHide);
2205+ m.attr (" ImGuiTableColumnFlags_NoClip" ) = static_cast <int >(ImGuiTableColumnFlags_NoClip);
2206+ m.attr (" ImGuiTableColumnFlags_NoSort" ) = static_cast <int >(ImGuiTableColumnFlags_NoSort);
2207+ m.attr (" ImGuiTableColumnFlags_NoSortAscending" ) = static_cast <int >(ImGuiTableColumnFlags_NoSortAscending);
2208+ m.attr (" ImGuiTableColumnFlags_NoSortDescending" ) = static_cast <int >(ImGuiTableColumnFlags_NoSortDescending);
2209+ m.attr (" ImGuiTableColumnFlags_NoHeaderLabel" ) = static_cast <int >(ImGuiTableColumnFlags_NoHeaderLabel);
2210+ m.attr (" ImGuiTableColumnFlags_NoHeaderWidth" ) = static_cast <int >(ImGuiTableColumnFlags_NoHeaderWidth);
2211+ m.attr (" ImGuiTableColumnFlags_PreferSortAscending" ) = static_cast <int >(ImGuiTableColumnFlags_PreferSortAscending);
2212+ m.attr (" ImGuiTableColumnFlags_PreferSortDescending" ) = static_cast <int >(ImGuiTableColumnFlags_PreferSortDescending);
2213+ m.attr (" ImGuiTableColumnFlags_IndentEnable" ) = static_cast <int >(ImGuiTableColumnFlags_IndentEnable);
2214+ m.attr (" ImGuiTableColumnFlags_IndentDisable" ) = static_cast <int >(ImGuiTableColumnFlags_IndentDisable);
2215+ m.attr (" ImGuiTableColumnFlags_AngledHeader" ) = static_cast <int >(ImGuiTableColumnFlags_AngledHeader);
2216+ m.attr (" ImGuiTableColumnFlags_IsEnabled" ) = static_cast <int >(ImGuiTableColumnFlags_IsEnabled);
2217+ m.attr (" ImGuiTableColumnFlags_IsVisible" ) = static_cast <int >(ImGuiTableColumnFlags_IsVisible);
2218+ m.attr (" ImGuiTableColumnFlags_IsSorted" ) = static_cast <int >(ImGuiTableColumnFlags_IsSorted);
2219+ m.attr (" ImGuiTableColumnFlags_IsHovered" ) = static_cast <int >(ImGuiTableColumnFlags_IsHovered);
2220+
2221+ m.attr (" ImGuiTableRowFlags_None" ) = static_cast <int >(ImGuiTableRowFlags_None);
2222+ m.attr (" ImGuiTableRowFlags_Headers" ) = static_cast <int >(ImGuiTableRowFlags_Headers);
2223+
2224+ m.attr (" ImGuiTableBgTarget_None" ) = static_cast <int >(ImGuiTableBgTarget_None);
2225+ m.attr (" ImGuiTableBgTarget_RowBg0" ) = static_cast <int >(ImGuiTableBgTarget_RowBg0);
2226+ m.attr (" ImGuiTableBgTarget_RowBg1" ) = static_cast <int >(ImGuiTableBgTarget_RowBg1);
2227+ m.attr (" ImGuiTableBgTarget_CellBg" ) = static_cast <int >(ImGuiTableBgTarget_CellBg);
2228+
20392229 m.attr (" ImGuiFocusedFlags_None" ) = static_cast <int >(ImGuiFocusedFlags_None);
20402230 m.attr (" ImGuiFocusedFlags_ChildWindows" ) = static_cast <int >(ImGuiFocusedFlags_ChildWindows);
20412231 m.attr (" ImGuiFocusedFlags_RootWindow" ) = static_cast <int >(ImGuiFocusedFlags_RootWindow);
@@ -2085,6 +2275,10 @@ void bind_imgui_enums(py::module& m) {
20852275 m.attr (" ImGuiDir_Down" ) = static_cast <int >(ImGuiDir_Down);
20862276 m.attr (" ImGuiDir_COUNT" ) = static_cast <int >(ImGuiDir_COUNT);
20872277
2278+ m.attr (" ImGuiSortDirection_None" ) = static_cast <int >(ImGuiSortDirection_None);
2279+ m.attr (" ImGuiSortDirection_Ascending" ) = static_cast <int >(ImGuiSortDirection_Ascending);
2280+ m.attr (" ImGuiSortDirection_Descending" ) = static_cast <int >(ImGuiSortDirection_Descending);
2281+
20882282 m.attr (" ImGuiKey_Tab" ) = static_cast <ImGuiKey>(ImGuiKey_Tab);
20892283 m.attr (" ImGuiKey_None" ) = static_cast <ImGuiKey>(ImGuiKey_None);
20902284 m.attr (" ImGuiKey_Tab" ) = static_cast <ImGuiKey>(ImGuiKey_Tab);
0 commit comments