@@ -37,6 +37,12 @@ Index of this file:
3737
3838bool pl_parse (const char * formatstring, const char ** keywords, PyObject* args, PyObject* kwargs, const char * message, ...);
3939
40+ typedef struct _plPythonIntConstantPair
41+ {
42+ const char * pcName;
43+ int iValue;
44+ } plPythonIntConstantPair;
45+
4046// -----------------------------------------------------------------------------
4147// [SECTION] includes
4248// -----------------------------------------------------------------------------
@@ -165,8 +171,40 @@ plImPlot_ShowDemoWindow(PyObject* self, PyObject* arg)
165171 Py_RETURN_NONE;
166172}
167173
174+ PyObject*
175+ plImgui_begin (PyObject* self, PyObject* args, PyObject* kwargs)
176+ {
177+
178+ static const char * apcKeywords[] = {
179+ " name" ,
180+ " open" ,
181+ " flags" ,
182+ nullptr ,
183+ };
184+ const char * pcText = nullptr ;
185+ PyObject* ptPointer = nullptr ;
186+ int iFlags = 0 ;
187+ if (!pl_parse (" s|Oi" , (const char **)apcKeywords, args, kwargs, __FUNCTION__,
188+ &pcText, &ptPointer, &iFlags))
189+ return nullptr ;
190+
191+ bool * pbOpen = nullptr ;
192+ if (!Py_IsNone (ptPointer))
193+ pbOpen = (bool *)PyCapsule_GetPointer (ptPointer, " pb" );
194+
195+ return PyBool_FromLong (ImGui::Begin (pcText, pbOpen, iFlags));
196+ }
197+
198+ PyObject*
199+ plImgui_end (PyObject* self)
200+ {
201+ ImGui::End ();
202+ Py_RETURN_NONE;
203+ }
204+
168205
169206#define PL_PYTHON_COMMAND (ARG, FLAGS, DOCS ) {#ARG, (PyCFunction)ARG, FLAGS, DOCS}
207+ #define PL_ADD_INT_CONSTANT (X_ARG ) {#X_ARG, X_ARG}
170208
171209static PyMethodDef gatCommands[] =
172210{
@@ -176,13 +214,43 @@ static PyMethodDef gatCommands[] =
176214 PL_PYTHON_COMMAND (plImgui_render, METH_VARARGS | METH_KEYWORDS, NULL ),
177215 PL_PYTHON_COMMAND (plImgui_cleanup, METH_VARARGS | METH_KEYWORDS, NULL ),
178216 PL_PYTHON_COMMAND (plImGui_ShowDemoWindow, METH_O, NULL ),
217+ PL_PYTHON_COMMAND (plImgui_begin, METH_VARARGS | METH_KEYWORDS, NULL ),
218+ PL_PYTHON_COMMAND (plImgui_end, METH_NOARGS, NULL ),
179219
180220 // implot
181221 PL_PYTHON_COMMAND (plImPlot_ShowDemoWindow, METH_O, NULL ),
182222
183223 {NULL , NULL , 0 , NULL }
184224};
185225
226+ static plPythonIntConstantPair gatImguiIntPairs[] = {
227+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_None),
228+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoTitleBar),
229+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoResize),
230+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoMove),
231+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoScrollbar),
232+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoScrollWithMouse),
233+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoCollapse),
234+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_AlwaysAutoResize),
235+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoBackground),
236+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoSavedSettings),
237+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoMouseInputs),
238+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_MenuBar),
239+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_HorizontalScrollbar),
240+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoFocusOnAppearing),
241+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoBringToFrontOnFocus),
242+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_AlwaysVerticalScrollbar),
243+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_AlwaysHorizontalScrollbar),
244+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoNavInputs),
245+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoNavFocus),
246+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_UnsavedDocument),
247+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoDocking),
248+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoNav),
249+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoDecoration),
250+ PL_ADD_INT_CONSTANT (ImGuiWindowFlags_NoInputs)
251+
252+ };
253+
186254PyMODINIT_FUNC
187255PyInit_imgui (void )
188256{
@@ -205,6 +273,10 @@ PyInit_imgui(void)
205273 {
206274 return NULL ;
207275 }
276+
277+ for (uint32_t i = 0 ; i < PL_ARRAYSIZE (gatImguiIntPairs); i++)
278+ PyModule_AddIntConstant (ptModule, gatImguiIntPairs[i].pcName , gatImguiIntPairs[i].iValue );
279+
208280 return ptModule;
209281}
210282
0 commit comments