static PyMethodDef form_methods[] = {/* adm */ {"show_form", (PyCFunction)form_show_form, METH_OLDARGS}, {"hide_form", (PyCFunction)form_hide_form, METH_NOARGS}, {"redraw_form", (PyCFunction)form_redraw_form, METH_NOARGS}, {"set_form_position", (PyCFunction)form_set_form_position, METH_OLDARGS}, {"set_form_size", (PyCFunction)form_set_form_size, METH_OLDARGS}, {"scale_form", (PyCFunction)form_scale_form, METH_OLDARGS}, {"freeze_form", (PyCFunction)form_freeze_form, METH_NOARGS}, {"unfreeze_form", (PyCFunction)form_unfreeze_form, METH_NOARGS}, {"activate_form", (PyCFunction)form_activate_form, METH_NOARGS}, {"deactivate_form", (PyCFunction)form_deactivate_form, METH_NOARGS}, {"bgn_group", (PyCFunction)form_bgn_group, METH_OLDARGS}, {"end_group", (PyCFunction)form_end_group, METH_OLDARGS}, {"find_first", (PyCFunction)form_find_first, METH_OLDARGS}, {"find_last", (PyCFunction)form_find_last, METH_OLDARGS}, {"set_object_focus", (PyCFunction)form_set_object_focus, METH_OLDARGS}, /* basic objects */ {"add_button", (PyCFunction)form_add_button, METH_OLDARGS},/* {"add_bitmap", (method)form_add_bitmap, METH_OLDARGS}, */ {"add_lightbutton", (PyCFunction)form_add_lightbutton, METH_OLDARGS}, {"add_roundbutton", (PyCFunction)form_add_roundbutton, METH_OLDARGS}, {"add_menu", (PyCFunction)form_add_menu, METH_OLDARGS}, {"add_slider", (PyCFunction)form_add_slider, METH_OLDARGS}, {"add_positioner", (PyCFunction)form_add_positioner, METH_OLDARGS}, {"add_valslider", (PyCFunction)form_add_valslider, METH_OLDARGS}, {"add_dial", (PyCFunction)form_add_dial, METH_OLDARGS}, {"add_counter", (PyCFunction)form_add_counter, METH_OLDARGS}, {"add_box", (PyCFunction)form_add_box, METH_OLDARGS}, {"add_clock", (PyCFunction)form_add_clock, METH_OLDARGS}, {"add_choice", (PyCFunction)form_add_choice, METH_OLDARGS}, {"add_browser", (PyCFunction)form_add_browser, METH_OLDARGS}, {"add_input", (PyCFunction)form_add_input, METH_OLDARGS}, {"add_timer", (PyCFunction)form_add_timer, METH_OLDARGS}, {"add_text", (PyCFunction)form_add_text, METH_OLDARGS}, {NULL, NULL} /* sentinel */}; static voidform_dealloc(formobject *f){ releaseobjects(f->ob_form); if (f->ob_form->visible) fl_hide_form(f->ob_form); fl_free_form(f->ob_form); PyObject_Del(f);} #define OFF(x) offsetof(FL_FORM, x) static struct memberlist form_memberlist[] = { {"window", T_LONG, OFF(window), RO}, {"w", T_FLOAT, OFF(w)}, {"h", T_FLOAT, OFF(h)}, {"x", T_FLOAT, OFF(x), RO}, {"y", T_FLOAT, OFF(y), RO}, {"deactivated", T_INT, OFF(deactivated)}, {"visible", T_INT, OFF(visible), RO}, {"frozen", T_INT, OFF(frozen), RO}, {"doublebuf", T_INT, OFF(doublebuf)}, {NULL} /* Sentinel */}; #undef OFF static PyObject *form_getattr(formobject *f, char *name){ PyObject *meth; meth = Py_FindMethod(form_methods, (PyObject *)f, name); if (meth != NULL) return meth; PyErr_Clear(); return PyMember_Get((char *)f->ob_form, form_memberlist, name);} static intform_setattr(formobject *f, char *name, PyObject *v){ if (v == NULL) { PyErr_SetString(PyExc_TypeError, "can't delete form attributes"); return -1; } return PyMember_Set((char *)f->ob_form, form_memberlist, name, v);} static PyObject *form_repr(formobject *f){ char buf[100]; PyOS_snprintf(buf, sizeof(buf), "<FORMS_form at %p, window=%ld>", f, f->ob_form->window); return PyString_FromString(buf);} static PyTypeObject Formtype = { PyObject_HEAD_INIT(&PyType_Type) 0, /*ob_size*/ "fl.FORMS_form", /*tp_name*/ sizeof(formobject), /*tp_size*/ 0, /*tp_itemsize*/ /* methods */ (destructor)form_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ (getattrfunc)form_getattr, /*tp_getattr*/ (setattrfunc)form_setattr, /*tp_setattr*/ 0, /*tp_compare*/ (reprfunc)form_repr, /*tp_repr*/}; static PyObject *newformobject(FL_FORM *form){ formobject *f; f = PyObject_New(formobject, &Formtype); if (f == NULL) return NULL; f->ob_form = form; return (PyObject *)f;} /* The "fl" module */ static PyObject *forms_make_form(PyObject *dummy, PyObject *args){ int type; float w, h; FL_FORM *form; if (!PyArg_Parse(args, "(iff)", &type, &w, &h)) return NULL; form = fl_bgn_form(type, w, h); if (form == NULL) { /* XXX Actually, cannot happen! */ PyErr_NoMemory(); return NULL; } fl_end_form(); return newformobject(form);} static PyObject *forms_activate_all_forms(PyObject *f, PyObject *args){ fl_activate_all_forms(); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_deactivate_all_forms(PyObject *f, PyObject *args){ fl_deactivate_all_forms(); Py_INCREF(Py_None); return Py_None;} static PyObject *my_event_callback = NULL; static PyObject *forms_set_event_call_back(PyObject *dummy, PyObject *args){ if (args == Py_None) args = NULL; my_event_callback = args; Py_XINCREF(args); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_do_or_check_forms(PyObject *dummy, FL_OBJECT *(*func)(void)){ FL_OBJECT *generic; genericobject *g; PyObject *arg, *res; for (;;) { Py_BEGIN_ALLOW_THREADS generic = (*func)(); Py_END_ALLOW_THREADS if (generic == NULL) { Py_INCREF(Py_None); return Py_None; } if (generic == FL_EVENT) { int dev; short val; if (my_event_callback == NULL) return PyInt_FromLong(-1L); dev = fl_qread(&val); arg = Py_BuildValue("(ih)", dev, val); if (arg == NULL) return NULL; res = PyEval_CallObject(my_event_callback, arg); Py_XDECREF(res); Py_DECREF(arg); if (res == NULL) return NULL; /* Callback raised exception */ continue; } g = findgeneric(generic); if (g == NULL) { /* Object not known to us (some dialogs cause this) */ continue; /* Ignore it */ } if (g->ob_callback == NULL) { Py_INCREF(g); return ((PyObject *) g); } arg = PyTuple_Pack(2, (PyObject *)g, g->ob_callback_arg); if (arg == NULL) return NULL; res = PyEval_CallObject(g->ob_callback, arg); Py_XDECREF(res); Py_DECREF(arg); if (res == NULL) return NULL; /* Callback raised exception */ }} static PyObject *forms_do_forms(PyObject *dummy){ return forms_do_or_check_forms(dummy, fl_do_forms);} static PyObject *forms_check_forms(PyObject *dummy){ return forms_do_or_check_forms(dummy, fl_check_forms);} static PyObject *forms_do_only_forms(PyObject *dummy){ return forms_do_or_check_forms(dummy, fl_do_only_forms);} static PyObject *forms_check_only_forms(PyObject *dummy){ return forms_do_or_check_forms(dummy, fl_check_only_forms);} #ifdef UNUSEDstatic PyObject *fl_call(void (*func)(void)){ (*func)(); Py_INCREF(Py_None); return Py_None;}#endif static PyObject *forms_set_graphics_mode(PyObject *dummy, PyObject *args){ int rgbmode, doublebuf; if (!PyArg_Parse(args, "(ii)", &rgbmode, &doublebuf)) return NULL; fl_set_graphics_mode(rgbmode,doublebuf); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_get_rgbmode(PyObject *dummy, PyObject *args){ extern int fl_rgbmode; if (args != NULL) { PyErr_BadArgument(); return NULL; } return PyInt_FromLong((long)fl_rgbmode);} static PyObject *forms_show_errors(PyObject *dummy, PyObject *args){ int show; if (!PyArg_Parse(args, "i", &show)) return NULL; fl_show_errors(show); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_set_font_name(PyObject *dummy, PyObject *args){ int numb; char *name; if (!PyArg_Parse(args, "(is)", &numb, &name)) return NULL; fl_set_font_name(numb, name); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_qdevice(PyObject *self, PyObject *args){ short arg1; if (!PyArg_Parse(args, "h", &arg1)) return NULL; fl_qdevice(arg1); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_unqdevice(PyObject *self, PyObject *args){ short arg1; if (!PyArg_Parse(args, "h", &arg1)) return NULL; fl_unqdevice(arg1); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_isqueued(PyObject *self, PyObject *args){ long retval; short arg1; if (!PyArg_Parse(args, "h", &arg1)) return NULL; retval = fl_isqueued(arg1); return PyInt_FromLong(retval);} static PyObject *forms_qtest(PyObject *self, PyObject *args){ long retval; retval = fl_qtest(); return PyInt_FromLong(retval);} static PyObject *forms_qread(PyObject *self, PyObject *args){ int dev; short val; Py_BEGIN_ALLOW_THREADS dev = fl_qread(&val); Py_END_ALLOW_THREADS return Py_BuildValue("(ih)", dev, val);} static PyObject *forms_qreset(PyObject *self){ fl_qreset(); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_qenter(PyObject *self, PyObject *args){ short arg1, arg2; if (!PyArg_Parse(args, "(hh)", &arg1, &arg2)) return NULL; fl_qenter(arg1, arg2); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_color(PyObject *self, PyObject *args){ int arg; if (!PyArg_Parse(args, "i", &arg)) return NULL; fl_color((short) arg); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_mapcolor(PyObject *self, PyObject *args){ int arg0, arg1, arg2, arg3; if (!PyArg_Parse(args, "(iiii)", &arg0, &arg1, &arg2, &arg3)) return NULL; fl_mapcolor(arg0, (short) arg1, (short) arg2, (short) arg3); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_getmcolor(PyObject *self, PyObject *args){ int arg; short r, g, b; if (!PyArg_Parse(args, "i", &arg)) return NULL; fl_getmcolor(arg, &r, &g, &b); return Py_BuildValue("(hhh)", r, g, b);} static PyObject *forms_get_mouse(PyObject *self){ float x, y; fl_get_mouse(&x, &y); return Py_BuildValue("(ff)", x, y);} static PyObject *forms_tie(PyObject *self, PyObject *args){ short arg1, arg2, arg3; if (!PyArg_Parse(args, "(hhh)", &arg1, &arg2, &arg3)) return NULL; fl_tie(arg1, arg2, arg3); Py_INCREF(Py_None); return Py_None;} static PyObject *forms_show_message(PyObject *f, PyObject *args){ char *a, *b, *c; if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL; Py_BEGIN_ALLOW_THREADS fl_show_message(a, b, c); Py_END_ALLOW_THREADS Py_INCREF(Py_None); return Py_None;} static PyObject *forms_show_choice(PyObject *f, PyObject *args){ char *m1, *m2, *m3, *b1, *b2, *b3; int nb; char *format; long rv; if (args == NULL || !PyTuple_Check(args)) { PyErr_BadArgument(); return NULL; } nb = PyTuple_Size(args) - 3; if (nb <= 0) { PyErr_SetString(PyExc_TypeError, "need at least one button label"); return NULL; } if (PyInt_Check(PyTuple_GetItem(args, 3))) { PyErr_SetString(PyExc_TypeError, "'number-of-buttons' argument not needed"); return NULL; } switch (nb) { case 1: format = "(ssss)"; break; case 2: format = "(sssss)"; break; case 3: format = "(ssssss)"; break; default: PyErr_SetString(PyExc_TypeError, "too many button labels"); return NULL; } if (!PyArg_Parse(args, format, &m1, &m2, &m3, &b1, &b2, &b3)) return NULL; Py_BEGIN_ALLOW_THREADS rv = fl_show_choice(m1, m2, m3, nb, b1, b2, b3); Py_END_ALLOW_THREADS return PyInt_FromLong(rv);} static PyObject *forms_show_question(PyObject *f, PyObject *args)Lines 1501–2000 of 2139. Previous lines Load more
static PyMethodDef form_methods[] = { /* adm */ {"show_form", (PyCFunction)form_show_form, METH_OLDARGS}, {"hide_form", (PyCFunction)form_hide_form, METH_NOARGS}, {"redraw_form", (PyCFunction)form_redraw_form, METH_NOARGS}, {"set_form_position", (PyCFunction)form_set_form_position, METH_OLDARGS}, {"set_form_size", (PyCFunction)form_set_form_size, METH_OLDARGS}, {"scale_form", (PyCFunction)form_scale_form, METH_OLDARGS}, {"freeze_form", (PyCFunction)form_freeze_form, METH_NOARGS}, {"unfreeze_form", (PyCFunction)form_unfreeze_form, METH_NOARGS}, {"activate_form", (PyCFunction)form_activate_form, METH_NOARGS}, {"deactivate_form", (PyCFunction)form_deactivate_form, METH_NOARGS}, {"bgn_group", (PyCFunction)form_bgn_group, METH_OLDARGS}, {"end_group", (PyCFunction)form_end_group, METH_OLDARGS}, {"find_first", (PyCFunction)form_find_first, METH_OLDARGS}, {"find_last", (PyCFunction)form_find_last, METH_OLDARGS}, {"set_object_focus", (PyCFunction)form_set_object_focus, METH_OLDARGS}, /* basic objects */ {"add_button", (PyCFunction)form_add_button, METH_OLDARGS}, /* {"add_bitmap", (method)form_add_bitmap, METH_OLDARGS}, */ {"add_lightbutton", (PyCFunction)form_add_lightbutton, METH_OLDARGS}, {"add_roundbutton", (PyCFunction)form_add_roundbutton, METH_OLDARGS}, {"add_menu", (PyCFunction)form_add_menu, METH_OLDARGS}, {"add_slider", (PyCFunction)form_add_slider, METH_OLDARGS}, {"add_positioner", (PyCFunction)form_add_positioner, METH_OLDARGS}, {"add_valslider", (PyCFunction)form_add_valslider, METH_OLDARGS}, {"add_dial", (PyCFunction)form_add_dial, METH_OLDARGS}, {"add_counter", (PyCFunction)form_add_counter, METH_OLDARGS}, {"add_box", (PyCFunction)form_add_box, METH_OLDARGS}, {"add_clock", (PyCFunction)form_add_clock, METH_OLDARGS}, {"add_choice", (PyCFunction)form_add_choice, METH_OLDARGS}, {"add_browser", (PyCFunction)form_add_browser, METH_OLDARGS}, {"add_input", (PyCFunction)form_add_input, METH_OLDARGS}, {"add_timer", (PyCFunction)form_add_timer, METH_OLDARGS}, {"add_text", (PyCFunction)form_add_text, METH_OLDARGS}, {NULL, NULL} /* sentinel */ }; static void form_dealloc(formobject *f) { releaseobjects(f->ob_form); if (f->ob_form->visible) fl_hide_form(f->ob_form); fl_free_form(f->ob_form); PyObject_Del(f); } #define OFF(x) offsetof(FL_FORM, x) static struct memberlist form_memberlist[] = { {"window", T_LONG, OFF(window), RO}, {"w", T_FLOAT, OFF(w)}, {"h", T_FLOAT, OFF(h)}, {"x", T_FLOAT, OFF(x), RO}, {"y", T_FLOAT, OFF(y), RO}, {"deactivated", T_INT, OFF(deactivated)}, {"visible", T_INT, OFF(visible), RO}, {"frozen", T_INT, OFF(frozen), RO}, {"doublebuf", T_INT, OFF(doublebuf)}, {NULL} /* Sentinel */ }; #undef OFF static PyObject * form_getattr(formobject *f, char *name) { PyObject *meth; meth = Py_FindMethod(form_methods, (PyObject *)f, name); if (meth != NULL) return meth; PyErr_Clear(); return PyMember_Get((char *)f->ob_form, form_memberlist, name); } static int form_setattr(formobject *f, char *name, PyObject *v) { if (v == NULL) { PyErr_SetString(PyExc_TypeError, "can't delete form attributes"); return -1; } return PyMember_Set((char *)f->ob_form, form_memberlist, name, v); } static PyObject * form_repr(formobject *f) { char buf[100]; PyOS_snprintf(buf, sizeof(buf), "<FORMS_form at %p, window=%ld>", f, f->ob_form->window); return PyString_FromString(buf); } static PyTypeObject Formtype = { PyObject_HEAD_INIT(&PyType_Type) 0, /*ob_size*/ "fl.FORMS_form", /*tp_name*/ sizeof(formobject), /*tp_size*/ 0, /*tp_itemsize*/ /* methods */ (destructor)form_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ (getattrfunc)form_getattr, /*tp_getattr*/ (setattrfunc)form_setattr, /*tp_setattr*/ 0, /*tp_compare*/ (reprfunc)form_repr, /*tp_repr*/ }; static PyObject * newformobject(FL_FORM *form) { formobject *f; f = PyObject_New(formobject, &Formtype); if (f == NULL) return NULL; f->ob_form = form; return (PyObject *)f; } /* The "fl" module */ static PyObject * forms_make_form(PyObject *dummy, PyObject *args) { int type; float w, h; FL_FORM *form; if (!PyArg_Parse(args, "(iff)", &type, &w, &h)) return NULL; form = fl_bgn_form(type, w, h); if (form == NULL) { /* XXX Actually, cannot happen! */ PyErr_NoMemory(); return NULL; } fl_end_form(); return newformobject(form); } static PyObject * forms_activate_all_forms(PyObject *f, PyObject *args) { fl_activate_all_forms(); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_deactivate_all_forms(PyObject *f, PyObject *args) { fl_deactivate_all_forms(); Py_INCREF(Py_None); return Py_None; } static PyObject *my_event_callback = NULL; static PyObject * forms_set_event_call_back(PyObject *dummy, PyObject *args) { if (args == Py_None) args = NULL; my_event_callback = args; Py_XINCREF(args); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_do_or_check_forms(PyObject *dummy, FL_OBJECT *(*func)(void)) { FL_OBJECT *generic; genericobject *g; PyObject *arg, *res; for (;;) { Py_BEGIN_ALLOW_THREADS generic = (*func)(); Py_END_ALLOW_THREADS if (generic == NULL) { Py_INCREF(Py_None); return Py_None; } if (generic == FL_EVENT) { int dev; short val; if (my_event_callback == NULL) return PyInt_FromLong(-1L); dev = fl_qread(&val); arg = Py_BuildValue("(ih)", dev, val); if (arg == NULL) return NULL; res = PyEval_CallObject(my_event_callback, arg); Py_XDECREF(res); Py_DECREF(arg); if (res == NULL) return NULL; /* Callback raised exception */ continue; } g = findgeneric(generic); if (g == NULL) { /* Object not known to us (some dialogs cause this) */ continue; /* Ignore it */ } if (g->ob_callback == NULL) { Py_INCREF(g); return ((PyObject *) g); } arg = PyTuple_Pack(2, (PyObject *)g, g->ob_callback_arg); if (arg == NULL) return NULL; res = PyEval_CallObject(g->ob_callback, arg); Py_XDECREF(res); Py_DECREF(arg); if (res == NULL) return NULL; /* Callback raised exception */ } } static PyObject * forms_do_forms(PyObject *dummy) { return forms_do_or_check_forms(dummy, fl_do_forms); } static PyObject * forms_check_forms(PyObject *dummy) { return forms_do_or_check_forms(dummy, fl_check_forms); } static PyObject * forms_do_only_forms(PyObject *dummy) { return forms_do_or_check_forms(dummy, fl_do_only_forms); } static PyObject * forms_check_only_forms(PyObject *dummy) { return forms_do_or_check_forms(dummy, fl_check_only_forms); } #ifdef UNUSED static PyObject * fl_call(void (*func)(void)) { (*func)(); Py_INCREF(Py_None); return Py_None; } #endif static PyObject * forms_set_graphics_mode(PyObject *dummy, PyObject *args) { int rgbmode, doublebuf; if (!PyArg_Parse(args, "(ii)", &rgbmode, &doublebuf)) return NULL; fl_set_graphics_mode(rgbmode,doublebuf); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_get_rgbmode(PyObject *dummy, PyObject *args) { extern int fl_rgbmode; if (args != NULL) { PyErr_BadArgument(); return NULL; } return PyInt_FromLong((long)fl_rgbmode); } static PyObject * forms_show_errors(PyObject *dummy, PyObject *args) { int show; if (!PyArg_Parse(args, "i", &show)) return NULL; fl_show_errors(show); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_set_font_name(PyObject *dummy, PyObject *args) { int numb; char *name; if (!PyArg_Parse(args, "(is)", &numb, &name)) return NULL; fl_set_font_name(numb, name); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_qdevice(PyObject *self, PyObject *args) { short arg1; if (!PyArg_Parse(args, "h", &arg1)) return NULL; fl_qdevice(arg1); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_unqdevice(PyObject *self, PyObject *args) { short arg1; if (!PyArg_Parse(args, "h", &arg1)) return NULL; fl_unqdevice(arg1); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_isqueued(PyObject *self, PyObject *args) { long retval; short arg1; if (!PyArg_Parse(args, "h", &arg1)) return NULL; retval = fl_isqueued(arg1); return PyInt_FromLong(retval); } static PyObject * forms_qtest(PyObject *self, PyObject *args) { long retval; retval = fl_qtest(); return PyInt_FromLong(retval); } static PyObject * forms_qread(PyObject *self, PyObject *args) { int dev; short val; Py_BEGIN_ALLOW_THREADS dev = fl_qread(&val); Py_END_ALLOW_THREADS return Py_BuildValue("(ih)", dev, val); } static PyObject * forms_qreset(PyObject *self) { fl_qreset(); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_qenter(PyObject *self, PyObject *args) { short arg1, arg2; if (!PyArg_Parse(args, "(hh)", &arg1, &arg2)) return NULL; fl_qenter(arg1, arg2); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_color(PyObject *self, PyObject *args) { int arg; if (!PyArg_Parse(args, "i", &arg)) return NULL; fl_color((short) arg); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_mapcolor(PyObject *self, PyObject *args) { int arg0, arg1, arg2, arg3; if (!PyArg_Parse(args, "(iiii)", &arg0, &arg1, &arg2, &arg3)) return NULL; fl_mapcolor(arg0, (short) arg1, (short) arg2, (short) arg3); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_getmcolor(PyObject *self, PyObject *args) { int arg; short r, g, b; if (!PyArg_Parse(args, "i", &arg)) return NULL; fl_getmcolor(arg, &r, &g, &b); return Py_BuildValue("(hhh)", r, g, b); } static PyObject * forms_get_mouse(PyObject *self) { float x, y; fl_get_mouse(&x, &y); return Py_BuildValue("(ff)", x, y); } static PyObject * forms_tie(PyObject *self, PyObject *args) { short arg1, arg2, arg3; if (!PyArg_Parse(args, "(hhh)", &arg1, &arg2, &arg3)) return NULL; fl_tie(arg1, arg2, arg3); Py_INCREF(Py_None); return Py_None; } static PyObject * forms_show_message(PyObject *f, PyObject *args) { char *a, *b, *c; if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL; Py_BEGIN_ALLOW_THREADS fl_show_message(a, b, c); Py_END_ALLOW_THREADS Py_INCREF(Py_None); return Py_None; } static PyObject * forms_show_choice(PyObject *f, PyObject *args) { char *m1, *m2, *m3, *b1, *b2, *b3; int nb; char *format; long rv; if (args == NULL || !PyTuple_Check(args)) { PyErr_BadArgument(); return NULL; } nb = PyTuple_Size(args) - 3; if (nb <= 0) { PyErr_SetString(PyExc_TypeError, "need at least one button label"); return NULL; } if (PyInt_Check(PyTuple_GetItem(args, 3))) { PyErr_SetString(PyExc_TypeError, "'number-of-buttons' argument not needed"); return NULL; } switch (nb) { case 1: format = "(ssss)"; break; case 2: format = "(sssss)"; break; case 3: format = "(ssssss)"; break; default: PyErr_SetString(PyExc_TypeError, "too many button labels"); return NULL; } if (!PyArg_Parse(args, format, &m1, &m2, &m3, &b1, &b2, &b3)) return NULL; Py_BEGIN_ALLOW_THREADS rv = fl_show_choice(m1, m2, m3, nb, b1, b2, b3); Py_END_ALLOW_THREADS return PyInt_FromLong(rv); } static PyObject * forms_show_question(PyObject *f, PyObject *args)