1c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* FL module -- interface to Mark Overmars' FORMS Library. */ 2c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 37ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse/* This code works with FORMS version 2.2 (if you defined 47ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse OBSOLETE_FORMS_CALLS), and 2.3. 5f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum FORMS can be ftp'ed from ftp.cs.ruu.nl (131.211.80.17), directory 6f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum /pub/SGI/FORMS. */ 7ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 8743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen/* A half-hearted attempt has been made to allow programs using this 9743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen * module to exploit parallelism (through the threads module). No provisions 10743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen * have been made for multiple threads to use this module at the same time, 11743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen * though. So, a program with a forms thread and a non-forms thread will work 12743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen * fine but a program with two threads using forms will probably crash (unless 13743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen * the program takes precaution to ensure that only one thread can be in 14743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen * this module at any time). This will have to be fixed some time. 157e47402264cf87b9bbb61fc9ff610af08add7c7bThomas Wouters * (A fix will probably also have to synchronize with the gl module). 16743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen */ 17743db36cd208c6f212a6b534e6bb8ee9256505adJack Jansen 187ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse#include "Python.h" 19c7df79e47da854931474f581618435fff0dd2448Guido van Rossum#include "forms.h" 20c7df79e47da854931474f581618435fff0dd2448Guido van Rossum#include "structmember.h" 21c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 22c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Generic Forms Objects */ 23c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 24c7df79e47da854931474f581618435fff0dd2448Guido van Rossumtypedef struct { 25c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 26c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FL_OBJECT *ob_generic; 27c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMethodDef *ob_methods; 28c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *ob_callback; 29c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *ob_callback_arg; 30c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} genericobject; 31c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 32938ace69a0e112424a2f426a4881d1fd1fc922d2Jeremy Hyltonstatic PyTypeObject GenericObjecttype; 332df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 342df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum#define is_genericobject(g) ((g)->ob_type == &GenericObjecttype) 352df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 362df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum/* List of all objects (XXX this should be a hash table on address...) */ 37c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 387ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject *allgenerics = NULL; 392df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossumstatic int nfreeslots = 0; 402df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 412df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum/* Add an object to the list of known objects */ 42c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 43c7df79e47da854931474f581618435fff0dd2448Guido van Rossumstatic void 446a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampknowgeneric(genericobject *g) 45c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 46c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int i, n; 47c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Create the list if it doesn't already exist */ 48c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (allgenerics == NULL) { 49c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou allgenerics = PyList_New(0); 50c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (allgenerics == NULL) { 51c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_Clear(); 52c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return; /* Too bad, live without allgenerics... */ 53c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 54c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 55c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (nfreeslots > 0) { 56c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Search the list for reusable slots (NULL items) */ 57c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXX This can be made faster! */ 58c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou n = PyList_Size(allgenerics); 59c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou for (i = 0; i < n; i++) { 60c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyList_GetItem(allgenerics, i) == NULL) { 61c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(g); 62c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyList_SetItem(allgenerics, i, (PyObject *)g); 63c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou nfreeslots--; 64c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return; 65c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 66c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 67c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Strange... no free slots found... */ 68c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou nfreeslots = 0; 69c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 70c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* No free entries, append new item to the end */ 71c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyList_Append(allgenerics, (PyObject *)g); 72c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 73c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 742df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum/* Find an object in the list of known objects */ 752df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 76c7df79e47da854931474f581618435fff0dd2448Guido van Rossumstatic genericobject * 776a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampfindgeneric(FL_OBJECT *generic) 78c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 79c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int i, n; 80c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou genericobject *g; 81c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 82c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (allgenerics == NULL) 83c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; /* No objects known yet */ 84c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou n = PyList_Size(allgenerics); 85c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou for (i = 0; i < n; i++) { 86c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g = (genericobject *)PyList_GetItem(allgenerics, i); 87c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g != NULL && g->ob_generic == generic) 88c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return g; 89c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 90c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; /* Unknown object */ 91c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 92c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 93aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum/* Remove an object from the list of known objects */ 94aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 95aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossumstatic void 966a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforgetgeneric(genericobject *g) 97aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 98c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int i, n; 99c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 10098a9722e4a82b5f7dc0411233bbec892a02c7667Serhiy Storchaka Py_CLEAR(g->ob_callback); 10198a9722e4a82b5f7dc0411233bbec892a02c7667Serhiy Storchaka Py_CLEAR(g->ob_callback_arg); 102c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (allgenerics == NULL) 103c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return; /* No objects known yet */ 104c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou n = PyList_Size(allgenerics); 105c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou for (i = 0; i < n; i++) { 106c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g == (genericobject *)PyList_GetItem(allgenerics, i)) { 107c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyList_SetItem(allgenerics, i, (PyObject *)NULL); 108c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou nfreeslots++; 109c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou break; 110c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 111c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 112aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum} 113aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 1142df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum/* Called when a form is about to be freed -- 1152df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum remove all the objects that we know about from it. */ 1162df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 1172df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossumstatic void 1186a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampreleaseobjects(FL_FORM *form) 1192df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum{ 120c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int i, n; 121c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou genericobject *g; 122c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 123c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (allgenerics == NULL) 124c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return; /* No objects known yet */ 125c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou n = PyList_Size(allgenerics); 126c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou for (i = 0; i < n; i++) { 127c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g = (genericobject *)PyList_GetItem(allgenerics, i); 128c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g != NULL && g->ob_generic->form == form) { 129c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_delete_object(g->ob_generic); 130c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* The object is now unreachable for 131c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou do_forms and check_forms, so 132c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou delete it from the list of known objects */ 13398a9722e4a82b5f7dc0411233bbec892a02c7667Serhiy Storchaka Py_CLEAR(g->ob_callback); 13498a9722e4a82b5f7dc0411233bbec892a02c7667Serhiy Storchaka Py_CLEAR(g->ob_callback_arg); 135c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyList_SetItem(allgenerics, i, (PyObject *)NULL); 136c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou nfreeslots++; 137c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 138c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1392df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum} 1402df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 141c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 142c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Methods of generic objects */ 143c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1447ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 1456a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampgeneric_set_call_back(genericobject *g, PyObject *args) 146c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 147c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyTuple_GET_SIZE(args) == 0) { 148c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(g->ob_callback); 149c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(g->ob_callback_arg); 150c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g->ob_callback = NULL; 151c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g->ob_callback_arg = NULL; 152c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 153c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou else { 154ca56dd4767617a2f5e946130de4beb06442a5cd5Martin Panter PyObject *a, *b; 155ca56dd4767617a2f5e946130de4beb06442a5cd5Martin Panter if (!PyArg_UnpackTuple(args, "set_call_back", 2, 2, &a, &b)) 156ca56dd4767617a2f5e946130de4beb06442a5cd5Martin Panter return NULL; 157c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(g->ob_callback); 158c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(g->ob_callback_arg); 159c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g->ob_callback = a; 160c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(g->ob_callback); 161c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g->ob_callback_arg = b; 162c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(g->ob_callback_arg); 163c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 164c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 165c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 166c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 167c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1687ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 16928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_call(genericobject *g, void (*func)(FL_OBJECT *)) 170c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 171c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func)(g->ob_generic); 172c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 173c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 174c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 175c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1767ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 17728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_delete_object(genericobject *g) 1782df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum{ 179c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *res; 180c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou res = generic_call(g, fl_delete_object); 181c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (res != NULL) 182c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou forgetgeneric(g); 183c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return res; 1842df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum} 1852df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 1867ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_show_object(genericobject *g) 188c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 189c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call(g, fl_show_object); 190c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 191c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1927ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 19328faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_hide_object(genericobject *g) 194c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 195c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call(g, fl_hide_object); 196c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 197c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1987ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 19928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_redraw_object(genericobject *g) 200c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 201c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call(g, fl_redraw_object); 202c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 203c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 2047ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse#ifdef OBSOLETE_FORMS_CALLS 205c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 2067ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse /* (un)freeze_object() are obsolete in FORMS 2.2 and unsupported 2077ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse in 2.3. Since there's no foolproof way to tell which version we're 2087ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse using, we omit them unconditionally. */ 209c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 2107ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 21128faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_freeze_object(genericobject *g) 212c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 213c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call(g, fl_freeze_object); 214c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 215c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 2167ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 21728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_unfreeze_object(genericobject *g) 218c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 219c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call(g, fl_unfreeze_object); 220c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 221c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 2227ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse#endif /* OBSOLETE_FORMS_CALLS */ 2237ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse 2247ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 22528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_activate_object(genericobject *g) 226f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum{ 227c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call(g, fl_activate_object); 228f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum} 229f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 2307ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 23128faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzgeneric_deactivate_object(genericobject *g) 232f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum{ 233c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call(g, fl_deactivate_object); 234f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum} 235f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 2367ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 2376a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampgeneric_set_object_shortcut(genericobject *g, PyObject *args) 238f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum{ 239c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *str; 240c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(args, "s:set_object_shortcut", &str)) 241c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 242c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_set_object_shortcut(g->ob_generic, str); 243c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 244c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 2457ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse} 2467ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse 2477ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef generic_methods[] = { 248c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_call_back", (PyCFunction)generic_set_call_back, METH_VARARGS}, 249c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"delete_object", (PyCFunction)generic_delete_object, METH_NOARGS}, 250c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_object", (PyCFunction)generic_show_object, METH_NOARGS}, 251c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"hide_object", (PyCFunction)generic_hide_object, METH_NOARGS}, 252c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"redraw_object", (PyCFunction)generic_redraw_object, METH_NOARGS}, 2537ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse#ifdef OBSOLETE_FORMS_CALLS 254c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"freeze_object", (PyCFunction)generic_freeze_object, METH_NOARGS}, 255c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"unfreeze_object", (PyCFunction)generic_unfreeze_object, METH_NOARGS}, 2567ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse#endif 257c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"activate_object", (PyCFunction)generic_activate_object, METH_NOARGS}, 258c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"deactivate_object", (PyCFunction)generic_deactivate_object, METH_NOARGS}, 259c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_object_shortcut", (PyCFunction)generic_set_object_shortcut, METH_VARARGS}, 260c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 261c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 262c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 263c7df79e47da854931474f581618435fff0dd2448Guido van Rossumstatic void 2646a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampgeneric_dealloc(genericobject *g) 265c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 266c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_free_object(g->ob_generic); 267c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(g->ob_callback); 268c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(g->ob_callback_arg); 269c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_Del(g); 270c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 271c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 272c7df79e47da854931474f581618435fff0dd2448Guido van Rossum#define OFF(x) offsetof(FL_OBJECT, x) 273c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 274c7df79e47da854931474f581618435fff0dd2448Guido van Rossumstatic struct memberlist generic_memberlist[] = { 275c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"objclass", T_INT, OFF(objclass), RO}, 276c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"type", T_INT, OFF(type), RO}, 277c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"boxtype", T_INT, OFF(boxtype)}, 278c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"x", T_FLOAT, OFF(x)}, 279c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"y", T_FLOAT, OFF(y)}, 280c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"w", T_FLOAT, OFF(w)}, 281c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"h", T_FLOAT, OFF(h)}, 282c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"col1", T_INT, OFF(col1)}, 283c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"col2", T_INT, OFF(col2)}, 284c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"align", T_INT, OFF(align)}, 285c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"lcol", T_INT, OFF(lcol)}, 286c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"lsize", T_FLOAT, OFF(lsize)}, 287c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* "label" is treated specially! */ 288c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"lstyle", T_INT, OFF(lstyle)}, 289c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"pushed", T_INT, OFF(pushed), RO}, 290c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"focus", T_INT, OFF(focus), RO}, 291c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"belowmouse", T_INT, OFF(belowmouse),RO}, 292c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou/* {"frozen", T_INT, OFF(frozen), RO}, */ 293c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"active", T_INT, OFF(active)}, 294c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"input", T_INT, OFF(input)}, 295c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"visible", T_INT, OFF(visible), RO}, 296c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"radio", T_INT, OFF(radio)}, 297c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"automatic", T_INT, OFF(automatic)}, 298c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL} /* Sentinel */ 299c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 300c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 301d97f048ae825d852bba1eea361ac41cb428cd3b0Guido van Rossum#undef OFF 302d97f048ae825d852bba1eea361ac41cb428cd3b0Guido van Rossum 3037ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 3046a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampgeneric_getattr(genericobject *g, char *name) 305c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 306c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *meth; 3072df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 308c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXX Ought to special-case name "__methods__" */ 309c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g-> ob_methods) { 310c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou meth = Py_FindMethod(g->ob_methods, (PyObject *)g, name); 311c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (meth != NULL) return meth; 312c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_Clear(); 313c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 314c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 315c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou meth = Py_FindMethod(generic_methods, (PyObject *)g, name); 316c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (meth != NULL) 317c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return meth; 318c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_Clear(); 319c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 320c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* "label" is an exception, getmember only works for char pointers, 321c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou not for char arrays */ 322c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (strcmp(name, "label") == 0) 323c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(g->ob_generic->label); 324c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 325c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyMember_Get((char *)g->ob_generic, generic_memberlist, name); 326c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 327c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 328c7df79e47da854931474f581618435fff0dd2448Guido van Rossumstatic int 3290ae528447f5321936532b8be1a46c54f45b8b734Sjoerd Mullendergeneric_setattr(genericobject *g, char *name, PyObject *v) 330c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 331c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int ret; 332c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 333c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == NULL) { 334c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, 335c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "can't delete forms object attributes"); 336c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 337c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 338c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 339c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* "label" is an exception: setmember doesn't set strings; 340c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou and FORMS wants you to call a function to set the label */ 341c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (strcmp(name, "label") == 0) { 342c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyString_Check(v)) { 343c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, 344c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "label attr must be string"); 345c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 346c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 347c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_set_object_label(g->ob_generic, PyString_AsString(v)); 348c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 349c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 350c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 351c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ret = PyMember_Set((char *)g->ob_generic, generic_memberlist, name, v); 352c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 353c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Rather than calling all the various set_object_* functions, 354c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou we call fl_redraw_object here. This is sometimes redundant 355c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou but I doubt that's a big problem */ 356c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (ret == 0) 357c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_redraw_object(g->ob_generic); 358c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 359c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return ret; 360c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 361c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 3627ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 3636a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampgeneric_repr(genericobject *g) 364aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 365c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 366c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyOS_snprintf(buf, sizeof(buf), "<FORMS_object at %p, objclass=%d>", 367c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g, g->ob_generic->objclass); 368c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 369aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum} 370aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 3717ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyTypeObject GenericObjecttype = { 372c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(&PyType_Type) 373c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 374c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "fl.FORMS_object", /*tp_name*/ 375c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(genericobject), /*tp_size*/ 376c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 377c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 378c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor)generic_dealloc, /*tp_dealloc*/ 379c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 380c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)generic_getattr, /*tp_getattr*/ 381c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)generic_setattr, /*tp_setattr*/ 382c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_compare*/ 383c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc)generic_repr, /*tp_repr*/ 384c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 385c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 3867ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 3876a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampnewgenericobject(FL_OBJECT *generic, PyMethodDef *methods) 388c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 389c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou genericobject *g; 390c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g = PyObject_New(genericobject, &GenericObjecttype); 391c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g == NULL) 392c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 393c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g-> ob_generic = generic; 394c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g->ob_methods = methods; 395c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g->ob_callback = NULL; 396c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g->ob_callback_arg = NULL; 397c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou knowgeneric(g); 398c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)g; 399c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 400c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 401c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/**********************************************************************/ 402c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Some common calling sequences */ 403c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 404c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* void func (object, float) */ 4057ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 4066a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampcall_forms_INf (void (*func)(FL_OBJECT *, float), FL_OBJECT *obj, PyObject *args) 407c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 408c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float parameter; 409c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 410c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "f", ¶meter)) return NULL; 411c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 412c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, parameter); 413c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 414c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 415c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 416c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 417c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 418c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* void func (object, float) */ 4197ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 4206a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampcall_forms_INfINf (void (*func)(FL_OBJECT *, float, float), FL_OBJECT *obj, PyObject *args) 421c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 422c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float par1, par2; 423c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 424c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(ff)", &par1, &par2)) return NULL; 425c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 426c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, par1, par2); 427c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 428c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 429c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 430c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 431c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 432c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* void func (object, int) */ 4337ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 4346a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampcall_forms_INi (void (*func)(FL_OBJECT *, int), FL_OBJECT *obj, PyObject *args) 435c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 436c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int parameter; 437c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 438c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "i", ¶meter)) return NULL; 439c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 440c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, parameter); 441c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 442c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 443c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 444c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 445c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 446ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum/* void func (object, char) */ 4477ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 4486a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampcall_forms_INc (void (*func)(FL_OBJECT *, int), FL_OBJECT *obj, PyObject *args) 449ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 450c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *a; 451ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 452c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "s", &a)) return NULL; 453ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 454c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, a[0]); 455ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 456c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 457c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 458ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 459ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 460c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* void func (object, string) */ 4617ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 4626a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampcall_forms_INstr (void (*func)(FL_OBJECT *, char *), FL_OBJECT *obj, PyObject *args) 463aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 464c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *a; 465aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 466c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "s", &a)) return NULL; 467c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 468c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, a); 469c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 470c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 471c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 472c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 473c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 474c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 475f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum/* void func (object, int, string) */ 4767ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 4776a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampcall_forms_INiINstr (void (*func)(FL_OBJECT *, int, char *), FL_OBJECT *obj, PyObject *args) 478c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 479c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *b; 480c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int a; 481c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 482c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(is)", &a, &b)) return NULL; 483c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 484c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, a, b); 485c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 486c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 487c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 488c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 489c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 4900374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum#ifdef UNUSED 491f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum/* void func (object, int, int) */ 4927ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 4936a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampcall_forms_INiINi (void (*func)(FL_OBJECT *, int, int), FL_OBJECT *obj, PyObject *args) 494c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 495c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int par1, par2; 496c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 497c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(ii)", &par1, &par2)) return NULL; 498c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 499c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, par1, par2); 500c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 501c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 502c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 503c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 5040374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum#endif 505c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 506c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* int func (object) */ 5077ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 50828faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzcall_forms_Ri (int (*func)(FL_OBJECT *), FL_OBJECT *obj) 509c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 510c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int retval; 51128faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitz 512c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou retval = (*func) (obj); 51328faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitz 514c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong ((long) retval); 515c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 516c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 517c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* char * func (object) */ 5187ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 51928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzcall_forms_Rstr (char * (*func)(FL_OBJECT *), FL_OBJECT *obj) 520aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 521c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *str; 52228faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitz 523c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou str = (*func) (obj); 52428faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitz 525c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (str == NULL) { 526c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 527c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 528c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 529c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString (str); 530c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 531c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 532c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* int func (object) */ 5337ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 53428faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzcall_forms_Rf (float (*func)(FL_OBJECT *), FL_OBJECT *obj) 535c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 536c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float retval; 53728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitz 538c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou retval = (*func) (obj); 53928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitz 540c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyFloat_FromDouble (retval); 541c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 542c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5437ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 54428faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzcall_forms_OUTfOUTf (void (*func)(FL_OBJECT *, float *, float *), FL_OBJECT *obj) 545c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 546c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float f1, f2; 54728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitz 548c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, &f1, &f2); 549c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 550c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("(ff)", f1, f2); 551c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 552c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5530374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum#ifdef UNUSED 5547ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 55528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzcall_forms_OUTf (void (*func)(FL_OBJECT *, float *), FL_OBJECT *obj) 556c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 557c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float f; 558c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 559c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func) (obj, &f); 560c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 561c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyFloat_FromDouble (f); 562c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 5630374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum#endif 564c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 565c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/**********************************************************************/ 566c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class : browser */ 567c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5687ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 5696a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_browser_topline(genericobject *g, PyObject *args) 570c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 571c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_browser_topline, g-> ob_generic, args); 572c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 573c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5747ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 57528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzclear_browser(genericobject *g) 576c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 577c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call (g, fl_clear_browser); 578c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 579c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5807ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 5816a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampadd_browser_line (genericobject *g, PyObject *args) 582c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 583c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_add_browser_line, g-> ob_generic, args); 584c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 585c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5867ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 5876a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampaddto_browser (genericobject *g, PyObject *args) 588c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 589c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_addto_browser, g-> ob_generic, args); 590c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 591c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5927ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 5936a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampinsert_browser_line (genericobject *g, PyObject *args) 594c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 595c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INiINstr (fl_insert_browser_line, 596c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g-> ob_generic, args); 597c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 598c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 5997ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6006a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampdelete_browser_line (genericobject *g, PyObject *args) 601c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 602c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_delete_browser_line, g-> ob_generic, args); 603c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 604c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6057ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6066a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampreplace_browser_line (genericobject *g, PyObject *args) 607c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 608c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INiINstr (fl_replace_browser_line, 609c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g-> ob_generic, args); 610c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 611c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6127ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6136a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampget_browser_line(genericobject *g, PyObject *args) 614c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 615c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int i; 616c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *str; 617c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 618c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "i", &i)) 619c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 620c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 621c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou str = fl_get_browser_line (g->ob_generic, i); 622c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 623c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (str == NULL) { 624c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 625c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 626c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 627c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString (str); 628c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 629c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6307ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6316a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampload_browser (genericobject *g, PyObject *args) 632c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 633c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXX strictly speaking this is wrong since fl_load_browser 634c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou XXX returns int, not void */ 635c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_load_browser, g-> ob_generic, args); 636c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 637c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6387ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 63928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_browser_maxline(genericobject *g) 640c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 641c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Ri (fl_get_browser_maxline, g-> ob_generic); 642c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 643c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6447ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6456a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampselect_browser_line (genericobject *g, PyObject *args) 646c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 647c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_select_browser_line, g-> ob_generic, args); 648c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 649c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6507ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6516a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampdeselect_browser_line (genericobject *g, PyObject *args) 652c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 653c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_deselect_browser_line, g-> ob_generic, args); 654c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 655c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6567ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 65728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzdeselect_browser (genericobject *g) 658c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 659c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call (g, fl_deselect_browser); 660c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 661c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6627ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6636a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampisselected_browser_line (genericobject *g, PyObject *args) 664c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 665c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int i, j; 666c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 667c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "i", &i)) 668c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 669c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 670c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou j = fl_isselected_browser_line (g->ob_generic, i); 671c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 672c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong (j); 673c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 674c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6757ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 67628faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_browser (genericobject *g) 677c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 678c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Ri (fl_get_browser, g-> ob_generic); 679c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 680c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6817ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6826a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_browser_fontsize (genericobject *g, PyObject *args) 683c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 684c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_browser_fontsize, g-> ob_generic, args); 685c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 686c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6877ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6886a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_browser_fontstyle (genericobject *g, PyObject *args) 689c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 690c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_browser_fontstyle, g-> ob_generic, args); 691c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 692c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 6937ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 6946a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_browser_specialkey (genericobject *g, PyObject *args) 695ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 696c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INc(fl_set_browser_specialkey, g-> ob_generic, args); 697ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 698ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 6997ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef browser_methods[] = { 700c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_browser_topline", (PyCFunction)set_browser_topline, 701c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 702c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"clear_browser", (PyCFunction)clear_browser, 703c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS}, 704c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_browser_line", (PyCFunction)add_browser_line, 705c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 706c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"addto_browser", (PyCFunction)addto_browser, 707c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 708c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"insert_browser_line", (PyCFunction)insert_browser_line, 709c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 710c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"delete_browser_line", (PyCFunction)delete_browser_line, 711c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 712c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"replace_browser_line", (PyCFunction)replace_browser_line, 713c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 714c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_browser_line", (PyCFunction)get_browser_line, 715c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 716c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"load_browser", (PyCFunction)load_browser, 717c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 718c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_browser_maxline", (PyCFunction)get_browser_maxline, 719c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS,} 720c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"select_browser_line", (PyCFunction)select_browser_line, 721c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 722c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"deselect_browser_line", (PyCFunction)deselect_browser_line, 723c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 724c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"deselect_browser", (PyCFunction)deselect_browser, 725c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS,} 726c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"isselected_browser_line", (PyCFunction)isselected_browser_line, 727c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 728c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_browser", (PyCFunction)get_browser, 729c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS,} 730c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_browser_fontsize", (PyCFunction)set_browser_fontsize, 731c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 732c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_browser_fontstyle", (PyCFunction)set_browser_fontstyle, 733c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 734c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_browser_specialkey", (PyCFunction)set_browser_specialkey, 735c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 736c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 737c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 738c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 739c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class: button */ 740c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7417ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 7426a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_button(genericobject *g, PyObject *args) 743c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 744c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_button, g-> ob_generic, args); 745c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 746c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7477ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 74828faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_button(genericobject *g) 749c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 750c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Ri (fl_get_button, g-> ob_generic); 751c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 752f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 7537ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 75428faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_button_numb(genericobject *g) 755f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum{ 756c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Ri (fl_get_button_numb, g-> ob_generic); 757f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum} 758f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 7597ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 7606a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_button_shortcut(genericobject *g, PyObject *args) 761ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 762c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_set_button_shortcut, g-> ob_generic, args); 763ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 764c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7657ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef button_methods[] = { 766c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_button", (PyCFunction)set_button, METH_OLDARGS}, 767c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_button", (PyCFunction)get_button, METH_NOARGS}, 768c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_button_numb", (PyCFunction)get_button_numb, METH_NOARGS}, 769c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_button_shortcut", (PyCFunction)set_button_shortcut, METH_OLDARGS}, 770c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 771c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 772c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 773c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class: choice */ 774c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7757ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 7766a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_choice(genericobject *g, PyObject *args) 777c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 778c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_choice, g-> ob_generic, args); 779c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 780c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7817ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 78228faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_choice(genericobject *g) 783c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 784c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Ri (fl_get_choice, g-> ob_generic); 785c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 786c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7877ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 78828faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzclear_choice (genericobject *g) 789c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 790c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_call (g, fl_clear_choice); 791c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 792c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7937ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 7946a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampaddto_choice (genericobject *g, PyObject *args) 795aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 796c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_addto_choice, g-> ob_generic, args); 797c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 798c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 7997ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8006a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampreplace_choice (genericobject *g, PyObject *args) 801aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 802c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INiINstr (fl_replace_choice, g-> ob_generic, args); 803c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 804c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8057ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8066a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampdelete_choice (genericobject *g, PyObject *args) 807c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 808c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_delete_choice, g-> ob_generic, args); 809c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 810c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8117ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 81228faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_choice_text (genericobject *g) 813aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 814c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rstr (fl_get_choice_text, g-> ob_generic); 815c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 816c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8177ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8186a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_choice_fontsize (genericobject *g, PyObject *args) 819c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 820c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_choice_fontsize, g-> ob_generic, args); 821c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 822c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8237ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8246a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_choice_fontstyle (genericobject *g, PyObject *args) 825c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 826c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_choice_fontstyle, g-> ob_generic, args); 827c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 828c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8297ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef choice_methods[] = { 830c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_choice", (PyCFunction)set_choice, METH_OLDARGS}, 831c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_choice", (PyCFunction)get_choice, METH_NOARGS}, 832c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"clear_choice", (PyCFunction)clear_choice, METH_NOARGS}, 833c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"addto_choice", (PyCFunction)addto_choice, METH_OLDARGS}, 834c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"replace_choice", (PyCFunction)replace_choice, METH_OLDARGS}, 835c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"delete_choice", (PyCFunction)delete_choice, METH_OLDARGS}, 836c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_choice_text", (PyCFunction)get_choice_text, METH_NOARGS}, 837c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_choice_fontsize", (PyCFunction)set_choice_fontsize, METH_OLDARGS}, 838c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_choice_fontstyle",(PyCFunction)set_choice_fontstyle, METH_OLDARGS}, 839c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 840c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 841c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 842c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class : Clock */ 843c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8447ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 84528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_clock(genericobject *g) 846c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 847c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int i0, i1, i2; 848c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 849c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_get_clock (g->ob_generic, &i0, &i1, &i2); 850c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 851c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("(iii)", i0, i1, i2); 852c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 853c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8547ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef clock_methods[] = { 855c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_clock", (PyCFunction)get_clock, METH_NOARGS}, 856c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 857c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 858c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 859c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* CLass : Counters */ 860c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8617ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 86228faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_counter_value(genericobject *g) 863c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 864c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rf (fl_get_counter_value, g-> ob_generic); 865c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 866c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8677ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8686a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_counter_value (genericobject *g, PyObject *args) 869c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 870c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_counter_value, g-> ob_generic, args); 871c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 872c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8737ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8746a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_counter_precision (genericobject *g, PyObject *args) 875c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 876c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_counter_precision, g-> ob_generic, args); 877c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 878c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8797ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8806a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_counter_bounds (genericobject *g, PyObject *args) 881c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 882c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INfINf (fl_set_counter_bounds, g-> ob_generic, args); 883c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 884c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8857ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8866a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_counter_step (genericobject *g, PyObject *args) 887c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 888c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INfINf (fl_set_counter_step, g-> ob_generic, args); 889c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 890c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8917ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 8926a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_counter_return (genericobject *g, PyObject *args) 893c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 894c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_counter_return, g-> ob_generic, args); 895c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 896c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 8977ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef counter_methods[] = { 898c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_counter_value", (PyCFunction)set_counter_value, 899c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 900c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_counter_value", (PyCFunction)get_counter_value, 901c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS}, 902c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_counter_bounds", (PyCFunction)set_counter_bounds, 903c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 904c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_counter_step", (PyCFunction)set_counter_step, 905c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 906c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_counter_precision", (PyCFunction)set_counter_precision, 907c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 908c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_counter_return", (PyCFunction)set_counter_return, 909c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 910c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 911c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 912c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 913c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 914c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class: Dials */ 915c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9167ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 91728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_dial_value(genericobject *g) 918c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 919c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rf (fl_get_dial_value, g-> ob_generic); 920c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 921c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9227ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 9236a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_dial_value (genericobject *g, PyObject *args) 924c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 925c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_dial_value, g-> ob_generic, args); 926c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 927c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9287ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 9296a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_dial_bounds (genericobject *g, PyObject *args) 930c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 931c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INfINf (fl_set_dial_bounds, g-> ob_generic, args); 932c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 933c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9347ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 93528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_dial_bounds (genericobject *g) 936c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 937c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_OUTfOUTf (fl_get_dial_bounds, g-> ob_generic); 938c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 939c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9407ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 9416a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_dial_step (genericobject *g, PyObject *args) 942ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 943c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_dial_step, g-> ob_generic, args); 944ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 945ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 9467ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef dial_methods[] = { 947c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_dial_value", (PyCFunction)set_dial_value, METH_OLDARGS}, 948c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_dial_value", (PyCFunction)get_dial_value, METH_NOARGS}, 949c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_dial_bounds", (PyCFunction)set_dial_bounds, METH_OLDARGS}, 950c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_dial_bounds", (PyCFunction)get_dial_bounds, METH_NOARGS}, 951c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_dial_step", (PyCFunction)set_dial_step, METH_OLDARGS}, 952c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 953c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 954c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 955c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class : Input */ 956c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9577ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 9586a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_input (genericobject *g, PyObject *args) 959c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 960c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_set_input, g-> ob_generic, args); 961c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 962c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9637ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 96428faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_input (genericobject *g) 965c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 966c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rstr (fl_get_input, g-> ob_generic); 967c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 968c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9697ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 9706a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_input_color (genericobject *g, PyObject *args) 971c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 972c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INfINf (fl_set_input_color, g-> ob_generic, args); 973c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 974c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9757ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 9766a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_input_return (genericobject *g, PyObject *args) 977ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 978c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_input_return, g-> ob_generic, args); 979ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 980ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 9817ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef input_methods[] = { 982c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_input", (PyCFunction)set_input, METH_OLDARGS}, 983c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_input", (PyCFunction)get_input, METH_NOARGS}, 984c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_input_color", (PyCFunction)set_input_color, METH_OLDARGS}, 985c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_input_return", (PyCFunction)set_input_return, METH_OLDARGS}, 986c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 987c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 988c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 989c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 990c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class : Menu */ 991c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9927ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 9936a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_menu (genericobject *g, PyObject *args) 994c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 995c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_set_menu, g-> ob_generic, args); 996c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 997c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 9987ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 99928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_menu (genericobject *g) 1000c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1001c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXX strictly speaking this is wrong since fl_get_menu 1002c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou XXX returns long, not int */ 1003c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Ri (fl_get_menu, g-> ob_generic); 1004c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1005c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10067ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 100728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_menu_text (genericobject *g) 10088b17d6bd89cd79820c76bd88bc064e44fc03a1bdGuido van Rossum{ 1009c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rstr (fl_get_menu_text, g-> ob_generic); 10108b17d6bd89cd79820c76bd88bc064e44fc03a1bdGuido van Rossum} 10118b17d6bd89cd79820c76bd88bc064e44fc03a1bdGuido van Rossum 10127ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10136a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampaddto_menu (genericobject *g, PyObject *args) 1014c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1015c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INstr (fl_addto_menu, g-> ob_generic, args); 1016c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1017c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10187ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef menu_methods[] = { 1019c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_menu", (PyCFunction)set_menu, METH_OLDARGS}, 1020c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_menu", (PyCFunction)get_menu, METH_NOARGS}, 1021c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_menu_text", (PyCFunction)get_menu_text, METH_NOARGS}, 1022c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"addto_menu", (PyCFunction)addto_menu, METH_OLDARGS}, 1023c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 1024c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 1025c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1026c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1027c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class: Sliders */ 1028c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10297ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 103028faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_slider_value(genericobject *g) 1031c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1032c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rf (fl_get_slider_value, g-> ob_generic); 1033c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1034c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10357ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10366a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_slider_value (genericobject *g, PyObject *args) 1037c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1038c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_slider_value, g-> ob_generic, args); 1039c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1040c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10417ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10426a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_slider_bounds (genericobject *g, PyObject *args) 1043c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1044c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INfINf (fl_set_slider_bounds, g-> ob_generic, args); 1045c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1046c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10477ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 104828faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_slider_bounds (genericobject *g) 1049c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1050c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_OUTfOUTf(fl_get_slider_bounds, g-> ob_generic); 1051c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1052c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10537ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10546a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_slider_return (genericobject *g, PyObject *args) 1055c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1056c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_slider_return, g-> ob_generic, args); 1057c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1058c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10597ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10606a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_slider_size (genericobject *g, PyObject *args) 1061c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1062c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_slider_size, g-> ob_generic, args); 1063c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1064c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10657ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10666a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_slider_precision (genericobject *g, PyObject *args) 1067c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1068c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INi (fl_set_slider_precision, g-> ob_generic, args); 1069c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1070c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10717ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10726a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_slider_step (genericobject *g, PyObject *args) 1073ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 1074c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_slider_step, g-> ob_generic, args); 1075ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 1076ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 1077ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 10787ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef slider_methods[] = { 1079c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_slider_value", (PyCFunction)set_slider_value, METH_OLDARGS}, 1080c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_slider_value", (PyCFunction)get_slider_value, METH_NOARGS}, 1081c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_slider_bounds", (PyCFunction)set_slider_bounds, METH_OLDARGS}, 1082c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_slider_bounds", (PyCFunction)get_slider_bounds, METH_NOARGS}, 1083c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_slider_return", (PyCFunction)set_slider_return, METH_OLDARGS}, 1084c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_slider_size", (PyCFunction)set_slider_size, METH_OLDARGS}, 1085c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_slider_precision",(PyCFunction)set_slider_precision, METH_OLDARGS}, 1086c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_slider_step", (PyCFunction)set_slider_step, METH_OLDARGS}, 1087c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 1088c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 1089c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10907ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10916a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_positioner_xvalue (genericobject *g, PyObject *args) 1092c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1093c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_positioner_xvalue, g-> ob_generic, args); 1094c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1095c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 10967ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 10976a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_positioner_xbounds (genericobject *g, PyObject *args) 1098c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1099c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INfINf (fl_set_positioner_xbounds, 1100c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g-> ob_generic, args); 1101c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1102c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11037ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 11046a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_positioner_yvalue (genericobject *g, PyObject *args) 1105c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1106c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_positioner_yvalue, g-> ob_generic, args); 1107c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1108c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11097ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 11106a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_positioner_ybounds (genericobject *g, PyObject *args) 1111c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1112c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INfINf (fl_set_positioner_ybounds, 1113c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g-> ob_generic, args); 1114c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1115c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11167ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 111728faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_positioner_xvalue (genericobject *g) 1118c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1119c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rf (fl_get_positioner_xvalue, g-> ob_generic); 1120c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1121c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11227ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 112328faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_positioner_xbounds (genericobject *g) 1124c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1125c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_OUTfOUTf (fl_get_positioner_xbounds, g-> ob_generic); 1126c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1127c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11287ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 112928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_positioner_yvalue (genericobject *g) 1130c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1131c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rf (fl_get_positioner_yvalue, g-> ob_generic); 1132c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1133c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11347ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 113528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_positioner_ybounds (genericobject *g) 1136c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1137c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_OUTfOUTf (fl_get_positioner_ybounds, g-> ob_generic); 1138c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1139c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11407ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef positioner_methods[] = { 1141c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_positioner_xvalue", (PyCFunction)set_positioner_xvalue, 1142c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 1143c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_positioner_yvalue", (PyCFunction)set_positioner_yvalue, 1144c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 1145c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_positioner_xbounds", (PyCFunction)set_positioner_xbounds, 1146c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 1147c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_positioner_ybounds", (PyCFunction)set_positioner_ybounds, 1148c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_OLDARGS}, 1149c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_positioner_xvalue", (PyCFunction)get_positioner_xvalue, 1150c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS}, 1151c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_positioner_yvalue", (PyCFunction)get_positioner_yvalue, 1152c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS}, 1153c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_positioner_xbounds", (PyCFunction)get_positioner_xbounds, 1154c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS}, 1155c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_positioner_ybounds", (PyCFunction)get_positioner_ybounds, 1156c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou METH_NOARGS}, 1157c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 1158c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 1159c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1160c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Class timer */ 1161c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11627ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 11636a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampset_timer (genericobject *g, PyObject *args) 1164c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1165c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_INf (fl_set_timer, g-> ob_generic, args); 1166c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1167c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11687ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 116928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzget_timer (genericobject *g) 1170c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1171c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return call_forms_Rf (fl_get_timer, g-> ob_generic); 1172c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1173c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11747ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef timer_methods[] = { 1175c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_timer", (PyCFunction)set_timer, METH_OLDARGS}, 1176c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_timer", (PyCFunction)get_timer, METH_NOARGS}, 1177c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 1178c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 1179c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1180c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* Form objects */ 1181c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1182c7df79e47da854931474f581618435fff0dd2448Guido van Rossumtypedef struct { 1183c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 1184c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FL_FORM *ob_form; 1185c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} formobject; 1186c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1187938ace69a0e112424a2f426a4881d1fd1fc922d2Jeremy Hyltonstatic PyTypeObject Formtype; 1188c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1189c7df79e47da854931474f581618435fff0dd2448Guido van Rossum#define is_formobject(v) ((v)->ob_type == &Formtype) 1190c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 11917ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 11926a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_show_form(formobject *f, PyObject *args) 1193c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1194c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int place, border; 1195c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *name; 1196c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(iis)", &place, &border, &name)) 1197c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1198c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_show_form(f->ob_form, place, border, name); 1199c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1200c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1201c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1202c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 12037ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 120428faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzform_call(void (*func)(FL_FORM *), FL_FORM *f) 1205c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1206c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func)(f); 1207c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1208c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1209c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1210c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1211c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 12127ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 12136a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_call_INiINi(void (*func)(FL_FORM *, int, int), FL_FORM *f, PyObject *args) 1214c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1215c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int a, b; 1216c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1217c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(ii)", &a, &b)) return NULL; 1218c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1219c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func)(f, a, b); 1220c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1221c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1222c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1223c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1224c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 12257ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 12266a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_call_INfINf(void (*func)(FL_FORM *, float, float), FL_FORM *f, PyObject *args) 1227f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum{ 1228c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float a, b; 1229f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 1230c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(ff)", &a, &b)) return NULL; 1231f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 1232c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func)(f, a, b); 1233f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 1234c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1235c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1236f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum} 1237f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 12387ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 123928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzform_hide_form(formobject *f) 1240c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1241c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call(fl_hide_form, f-> ob_form); 1242c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1243c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 12447ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 124528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzform_redraw_form(formobject *f) 1246aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 1247c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call(fl_redraw_form, f-> ob_form); 1248c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1249c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 12507ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 12516a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_set_form_position(formobject *f, PyObject *args) 12522df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum{ 1253c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call_INiINi(fl_set_form_position, f-> ob_form, args); 12542df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum} 12552df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 12567ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 12576a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_set_form_size(formobject *f, PyObject *args) 1258f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum{ 1259c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call_INiINi(fl_set_form_size, f-> ob_form, args); 1260f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum} 1261f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 12627ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 12636a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_scale_form(formobject *f, PyObject *args) 1264f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum{ 1265c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call_INfINf(fl_scale_form, f-> ob_form, args); 1266f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum} 1267f1dc56632881fe4e5beed047580bf927679f3669Guido van Rossum 12687ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 12696a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampgeneric_add_object(formobject *f, PyObject *args, FL_OBJECT *(*func)(int, float, float, float, float, char*), PyMethodDef *internal_methods) 1270c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1271c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int type; 1272c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float x, y, w, h; 1273c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *name; 1274c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FL_OBJECT *obj; 1275c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1276c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args,"(iffffs)", &type,&x,&y,&w,&h,&name)) 1277c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1278aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 1279c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_addto_form (f-> ob_form); 1280aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 1281c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou obj = (*func) (type, x, y, w, h, name); 1282c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1283c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_end_form(); 1284c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1285c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (obj == NULL) { 1286c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_NoMemory(); 1287c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1288c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1289c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1290c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return newgenericobject (obj, internal_methods); 1291c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1292c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 12937ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 12946a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_button(formobject *f, PyObject *args) 1295c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1296c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_button, button_methods); 1297c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1298c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 12997ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13006a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_lightbutton(formobject *f, PyObject *args) 1301c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1302c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_lightbutton, button_methods); 1303c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1304c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13057ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13066a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_roundbutton(formobject *f, PyObject *args) 1307c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1308c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_roundbutton, button_methods); 1309c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1310c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13117ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13126a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_menu (formobject *f, PyObject *args) 1313c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1314c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_menu, menu_methods); 1315c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1316c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13177ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13186a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_slider(formobject *f, PyObject *args) 1319c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1320c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_slider, slider_methods); 1321c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1322c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13237ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13246a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_valslider(formobject *f, PyObject *args) 1325c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1326c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_valslider, slider_methods); 1327c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1328c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13297ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13306a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_dial(formobject *f, PyObject *args) 1331c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1332c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_dial, dial_methods); 1333c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1334c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13357ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13366a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_counter(formobject *f, PyObject *args) 1337c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1338c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_counter, counter_methods); 1339c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1340c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13417ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13426a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_clock(formobject *f, PyObject *args) 1343c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1344c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_clock, clock_methods); 1345c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1346c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13477ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13486a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_box(formobject *f, PyObject *args) 1349c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1350c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_box, 1351c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMethodDef *)NULL); 1352c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1353c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13547ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13556a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_choice(formobject *f, PyObject *args) 1356c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1357c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_choice, choice_methods); 1358c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1359c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13607ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13616a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_browser(formobject *f, PyObject *args) 1362c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1363c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_browser, browser_methods); 1364c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1365c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13667ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13676a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_positioner(formobject *f, PyObject *args) 1368c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1369c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_positioner, 1370c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou positioner_methods); 1371c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1372c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13737ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13746a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_input(formobject *f, PyObject *args) 1375c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1376c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_input, input_methods); 1377c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1378c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13797ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13806a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_text(formobject *f, PyObject *args) 1381c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1382c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_text, 1383c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMethodDef *)NULL); 1384c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1385c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13867ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 13876a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_add_timer(formobject *f, PyObject *args) 1388c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1389c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return generic_add_object(f, args, fl_add_timer, timer_methods); 1390c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1391c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13927ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 139328faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzform_freeze_form(formobject *f) 1394c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1395c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call(fl_freeze_form, f-> ob_form); 1396c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1397c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 13987ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 139928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzform_unfreeze_form(formobject *f) 1400c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1401c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call(fl_unfreeze_form, f-> ob_form); 1402c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1403c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 14047ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 140528faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzform_activate_form(formobject *f) 1406c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1407c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call(fl_activate_form, f-> ob_form); 1408c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1409c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 14107ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 141128faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzform_deactivate_form(formobject *f) 1412c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1413c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return form_call(fl_deactivate_form, f-> ob_form); 1414c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1415c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 14167ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 14176a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_bgn_group(formobject *f, PyObject *args) 14180374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 1419c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FL_OBJECT *obj; 14202df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 1421c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_addto_form(f-> ob_form); 1422c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou obj = fl_bgn_group(); 1423c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_end_form(); 14242df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 1425c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (obj == NULL) { 1426c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_NoMemory(); 1427c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1428c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 14292df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 1430c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return newgenericobject (obj, (PyMethodDef *) NULL); 14310374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 14320374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 14337ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 14346a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_end_group(formobject *f, PyObject *args) 14350374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 1436c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_addto_form(f-> ob_form); 1437c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_end_group(); 1438c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_end_form(); 1439c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1440c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 14410374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 14420374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 14437ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 14446a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_find_first_or_last(FL_OBJECT *(*func)(FL_FORM *, int, float, float), formobject *f, PyObject *args) 144575cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum{ 1446c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int type; 1447c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float mx, my; 1448c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FL_OBJECT *generic; 1449c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou genericobject *g; 145075cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 1451c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(iff)", &type, &mx, &my)) return NULL; 145275cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 1453c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou generic = (*func) (f-> ob_form, type, mx, my); 145475cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 1455c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (generic == NULL) 1456c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1457c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1458c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1459c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1460c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 1461c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g = findgeneric(generic); 1462c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g == NULL) { 1463c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, 1464c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "forms_find_{first|last} returns unknown object"); 1465c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1466c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1467c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(g); 1468c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *) g; 146975cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum} 147075cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 14717ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 14726a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_find_first(formobject *f, PyObject *args) 147375cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum{ 1474c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_find_first_or_last(fl_find_first, f, args); 147575cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum} 147675cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 14777ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 14786a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_find_last(formobject *f, PyObject *args) 147975cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum{ 1480c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_find_first_or_last(fl_find_last, f, args); 148175cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum} 148275cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 14837ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 14846a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_set_object_focus(formobject *f, PyObject *args) 14857066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum{ 1486c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou genericobject *g; 1487c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (args == NULL || !is_genericobject(args)) { 1488c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_BadArgument(); 1489c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1490c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1491c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g = (genericobject *)args; 1492c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_set_object_focus(f->ob_form, g->ob_generic); 1493c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1494c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 14957066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum} 14967066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum 14977ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef form_methods[] = { 1498c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* adm */ 1499c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_form", (PyCFunction)form_show_form, METH_OLDARGS}, 1500c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"hide_form", (PyCFunction)form_hide_form, METH_NOARGS}, 1501c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"redraw_form", (PyCFunction)form_redraw_form, METH_NOARGS}, 1502c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_form_position", (PyCFunction)form_set_form_position, METH_OLDARGS}, 1503c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_form_size", (PyCFunction)form_set_form_size, METH_OLDARGS}, 1504c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"scale_form", (PyCFunction)form_scale_form, METH_OLDARGS}, 1505c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"freeze_form", (PyCFunction)form_freeze_form, METH_NOARGS}, 1506c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"unfreeze_form", (PyCFunction)form_unfreeze_form, METH_NOARGS}, 1507c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"activate_form", (PyCFunction)form_activate_form, METH_NOARGS}, 1508c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"deactivate_form", (PyCFunction)form_deactivate_form, METH_NOARGS}, 1509c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"bgn_group", (PyCFunction)form_bgn_group, METH_OLDARGS}, 1510c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"end_group", (PyCFunction)form_end_group, METH_OLDARGS}, 1511c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"find_first", (PyCFunction)form_find_first, METH_OLDARGS}, 1512c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"find_last", (PyCFunction)form_find_last, METH_OLDARGS}, 1513c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_object_focus", (PyCFunction)form_set_object_focus, METH_OLDARGS}, 1514c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1515c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* basic objects */ 1516c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_button", (PyCFunction)form_add_button, METH_OLDARGS}, 1517c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou/* {"add_bitmap", (method)form_add_bitmap, METH_OLDARGS}, */ 1518c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_lightbutton", (PyCFunction)form_add_lightbutton, METH_OLDARGS}, 1519c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_roundbutton", (PyCFunction)form_add_roundbutton, METH_OLDARGS}, 1520c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_menu", (PyCFunction)form_add_menu, METH_OLDARGS}, 1521c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_slider", (PyCFunction)form_add_slider, METH_OLDARGS}, 1522c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_positioner", (PyCFunction)form_add_positioner, METH_OLDARGS}, 1523c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_valslider", (PyCFunction)form_add_valslider, METH_OLDARGS}, 1524c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_dial", (PyCFunction)form_add_dial, METH_OLDARGS}, 1525c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_counter", (PyCFunction)form_add_counter, METH_OLDARGS}, 1526c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_box", (PyCFunction)form_add_box, METH_OLDARGS}, 1527c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_clock", (PyCFunction)form_add_clock, METH_OLDARGS}, 1528c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_choice", (PyCFunction)form_add_choice, METH_OLDARGS}, 1529c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_browser", (PyCFunction)form_add_browser, METH_OLDARGS}, 1530c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_input", (PyCFunction)form_add_input, METH_OLDARGS}, 1531c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_timer", (PyCFunction)form_add_timer, METH_OLDARGS}, 1532c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"add_text", (PyCFunction)form_add_text, METH_OLDARGS}, 1533c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 1534c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 1535c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1536c7df79e47da854931474f581618435fff0dd2448Guido van Rossumstatic void 15376a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_dealloc(formobject *f) 1538c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1539c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou releaseobjects(f->ob_form); 1540c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (f->ob_form->visible) 1541c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_hide_form(f->ob_form); 1542c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_free_form(f->ob_form); 1543c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_Del(f); 1544c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1545c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1546d97f048ae825d852bba1eea361ac41cb428cd3b0Guido van Rossum#define OFF(x) offsetof(FL_FORM, x) 1547d97f048ae825d852bba1eea361ac41cb428cd3b0Guido van Rossum 154832db5e391bf06d3e745127f6eb600947e399f878Guido van Rossumstatic struct memberlist form_memberlist[] = { 1549c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"window", T_LONG, OFF(window), RO}, 1550c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"w", T_FLOAT, OFF(w)}, 1551c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"h", T_FLOAT, OFF(h)}, 1552c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"x", T_FLOAT, OFF(x), RO}, 1553c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"y", T_FLOAT, OFF(y), RO}, 1554c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"deactivated", T_INT, OFF(deactivated)}, 1555c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"visible", T_INT, OFF(visible), RO}, 1556c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"frozen", T_INT, OFF(frozen), RO}, 1557c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"doublebuf", T_INT, OFF(doublebuf)}, 1558c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL} /* Sentinel */ 155932db5e391bf06d3e745127f6eb600947e399f878Guido van Rossum}; 156032db5e391bf06d3e745127f6eb600947e399f878Guido van Rossum 1561d97f048ae825d852bba1eea361ac41cb428cd3b0Guido van Rossum#undef OFF 1562d97f048ae825d852bba1eea361ac41cb428cd3b0Guido van Rossum 15637ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 15646a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_getattr(formobject *f, char *name) 1565c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1566c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *meth; 156732db5e391bf06d3e745127f6eb600947e399f878Guido van Rossum 1568c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou meth = Py_FindMethod(form_methods, (PyObject *)f, name); 1569c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (meth != NULL) 1570c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return meth; 1571c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_Clear(); 1572c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyMember_Get((char *)f->ob_form, form_memberlist, name); 157332db5e391bf06d3e745127f6eb600947e399f878Guido van Rossum} 157432db5e391bf06d3e745127f6eb600947e399f878Guido van Rossum 157532db5e391bf06d3e745127f6eb600947e399f878Guido van Rossumstatic int 15766a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_setattr(formobject *f, char *name, PyObject *v) 157732db5e391bf06d3e745127f6eb600947e399f878Guido van Rossum{ 1578c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == NULL) { 1579c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, 1580c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "can't delete form attributes"); 1581c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 1582c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 158332db5e391bf06d3e745127f6eb600947e399f878Guido van Rossum 1584c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyMember_Set((char *)f->ob_form, form_memberlist, name, v); 1585c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1586c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 15877ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 15886a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampform_repr(formobject *f) 1589aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum{ 1590c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 1591c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyOS_snprintf(buf, sizeof(buf), "<FORMS_form at %p, window=%ld>", 1592c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou f, f->ob_form->window); 1593c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 1594aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum} 1595aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 15967ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyTypeObject Formtype = { 1597c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(&PyType_Type) 1598c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 1599c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "fl.FORMS_form", /*tp_name*/ 1600c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(formobject), /*tp_size*/ 1601c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 1602c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 1603c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor)form_dealloc, /*tp_dealloc*/ 1604c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 1605c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)form_getattr, /*tp_getattr*/ 1606c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)form_setattr, /*tp_setattr*/ 1607c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_compare*/ 1608c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc)form_repr, /*tp_repr*/ 1609c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 1610c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 16117ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 16126a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampnewformobject(FL_FORM *form) 1613c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1614c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou formobject *f; 1615c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou f = PyObject_New(formobject, &Formtype); 1616c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (f == NULL) 1617c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1618c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou f->ob_form = form; 1619c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)f; 1620c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1621c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 16222df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 1623c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* The "fl" module */ 16242df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 16257ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 16266a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_make_form(PyObject *dummy, PyObject *args) 1627c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1628c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int type; 1629c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float w, h; 1630c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FL_FORM *form; 1631c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(iff)", &type, &w, &h)) 1632c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1633c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou form = fl_bgn_form(type, w, h); 1634c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (form == NULL) { 1635c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXX Actually, cannot happen! */ 1636c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_NoMemory(); 1637c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1638c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1639c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_end_form(); 1640c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return newformobject(form); 1641c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1642c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 16437ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 16446a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_activate_all_forms(PyObject *f, PyObject *args) 16452bac4d33683bb16050908a875b5b67818e167aa4Guido van Rossum{ 1646c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_activate_all_forms(); 1647c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1648c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 16492bac4d33683bb16050908a875b5b67818e167aa4Guido van Rossum} 16502bac4d33683bb16050908a875b5b67818e167aa4Guido van Rossum 16517ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 16526a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_deactivate_all_forms(PyObject *f, PyObject *args) 16532bac4d33683bb16050908a875b5b67818e167aa4Guido van Rossum{ 1654c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_deactivate_all_forms(); 1655c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1656c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 16572bac4d33683bb16050908a875b5b67818e167aa4Guido van Rossum} 16582bac4d33683bb16050908a875b5b67818e167aa4Guido van Rossum 16597ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject *my_event_callback = NULL; 1660c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 16617ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 16626a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_set_event_call_back(PyObject *dummy, PyObject *args) 1663c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1664c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (args == Py_None) 1665c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou args = NULL; 1666c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou my_event_callback = args; 1667c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XINCREF(args); 1668c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1669c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1670c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1671c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 16727ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 167328faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzforms_do_or_check_forms(PyObject *dummy, FL_OBJECT *(*func)(void)) 1674c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1675c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FL_OBJECT *generic; 1676c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou genericobject *g; 1677c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *arg, *res; 1678c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 1679c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou for (;;) { 1680c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_BEGIN_ALLOW_THREADS 1681c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou generic = (*func)(); 1682c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_END_ALLOW_THREADS 1683c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (generic == NULL) { 1684c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1685c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1686c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1687c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (generic == FL_EVENT) { 1688c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int dev; 1689c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short val; 1690c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (my_event_callback == NULL) 1691c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong(-1L); 1692c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou dev = fl_qread(&val); 1693c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou arg = Py_BuildValue("(ih)", dev, val); 1694c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (arg == NULL) 1695c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1696c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou res = PyEval_CallObject(my_event_callback, arg); 1697c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(res); 1698c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_DECREF(arg); 1699c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (res == NULL) 1700c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; /* Callback raised exception */ 1701c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou continue; 1702c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1703c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou g = findgeneric(generic); 1704c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g == NULL) { 1705c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Object not known to us (some dialogs cause this) */ 1706c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou continue; /* Ignore it */ 1707c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1708c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (g->ob_callback == NULL) { 1709c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(g); 1710c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return ((PyObject *) g); 1711c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1712c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou arg = PyTuple_Pack(2, (PyObject *)g, g->ob_callback_arg); 1713c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (arg == NULL) 1714c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1715c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou res = PyEval_CallObject(g->ob_callback, arg); 1716c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_XDECREF(res); 1717c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_DECREF(arg); 1718c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (res == NULL) 1719c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; /* Callback raised exception */ 1720c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1721c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1722c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 17237ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 172428faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzforms_do_forms(PyObject *dummy) 1725c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1726c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_do_or_check_forms(dummy, fl_do_forms); 1727c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1728c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 17297ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 173028faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzforms_check_forms(PyObject *dummy) 1731c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1732c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_do_or_check_forms(dummy, fl_check_forms); 1733c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1734c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 17357ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 173628faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzforms_do_only_forms(PyObject *dummy) 17377066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum{ 1738c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_do_or_check_forms(dummy, fl_do_only_forms); 17397066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum} 17407066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum 17417ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 174228faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzforms_check_only_forms(PyObject *dummy) 17437066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum{ 1744c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_do_or_check_forms(dummy, fl_check_only_forms); 17457066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum} 17467066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum 17470374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum#ifdef UNUSED 17487ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 174928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzfl_call(void (*func)(void)) 1750c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1751c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (*func)(); 1752c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1753c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1754c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 17550374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum#endif 1756c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 17577ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 17586a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_set_graphics_mode(PyObject *dummy, PyObject *args) 1759ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 1760c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int rgbmode, doublebuf; 1761ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 1762c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(ii)", &rgbmode, &doublebuf)) 1763c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1764c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_set_graphics_mode(rgbmode,doublebuf); 1765c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1766c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1767ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 1768ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 17697ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 17706a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_get_rgbmode(PyObject *dummy, PyObject *args) 1771ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum{ 1772c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou extern int fl_rgbmode; 1773ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 1774c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (args != NULL) { 1775c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_BadArgument(); 1776c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1777c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1778c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong((long)fl_rgbmode); 1779ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum} 17807066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum 17817ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 17826a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_show_errors(PyObject *dummy, PyObject *args) 17837066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum{ 1784c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int show; 1785c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "i", &show)) 1786c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1787c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_show_errors(show); 1788c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1789c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 17907066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum} 17917066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum 17927ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 17936a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_set_font_name(PyObject *dummy, PyObject *args) 17947066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum{ 1795c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int numb; 1796c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *name; 1797c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(is)", &numb, &name)) 1798c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1799c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_set_font_name(numb, name); 1800c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1801c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 18027066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum} 18037066dd75c5ee8385135541d03fb8edd8939ad740Guido van Rossum 1804ddc0d3e0665b3ebec26a22e85f9186c472c7ca18Guido van Rossum 18057ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18066a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_qdevice(PyObject *self, PyObject *args) 1807c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1808c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short arg1; 1809c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "h", &arg1)) 1810c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1811c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_qdevice(arg1); 1812c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1813c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1814c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1815c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18167ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18176a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_unqdevice(PyObject *self, PyObject *args) 1818c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1819c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short arg1; 1820c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "h", &arg1)) 1821c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1822c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_unqdevice(arg1); 1823c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1824c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1825c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1826c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18277ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18286a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_isqueued(PyObject *self, PyObject *args) 1829c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1830c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long retval; 1831c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short arg1; 1832c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "h", &arg1)) 1833c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1834c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou retval = fl_isqueued(arg1); 1835c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1836c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong(retval); 1837c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1838c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18397ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18406a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_qtest(PyObject *self, PyObject *args) 1841c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1842c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long retval; 1843c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou retval = fl_qtest(); 1844c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong(retval); 1845c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1846c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1847c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18487ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18496a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_qread(PyObject *self, PyObject *args) 1850c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1851c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int dev; 1852c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short val; 1853c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_BEGIN_ALLOW_THREADS 1854c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou dev = fl_qread(&val); 1855c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_END_ALLOW_THREADS 1856c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("(ih)", dev, val); 1857c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1858c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18597ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 186028faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzforms_qreset(PyObject *self) 1861c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1862c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_qreset(); 1863c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1864c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1865c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1866c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18677ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18686a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_qenter(PyObject *self, PyObject *args) 1869c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1870c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short arg1, arg2; 1871c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(hh)", &arg1, &arg2)) 1872c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1873c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_qenter(arg1, arg2); 1874c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1875c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1876c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1877c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18787ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18796a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_color(PyObject *self, PyObject *args) 1880c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1881c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int arg; 1882c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1883c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "i", &arg)) return NULL; 1884c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1885c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_color((short) arg); 1886c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1887c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1888c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1889c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1890c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 18917ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 18926a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_mapcolor(PyObject *self, PyObject *args) 1893c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1894c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int arg0, arg1, arg2, arg3; 1895c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1896c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(iiii)", &arg0, &arg1, &arg2, &arg3)) 1897c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1898c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1899c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_mapcolor(arg0, (short) arg1, (short) arg2, (short) arg3); 1900c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1901c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1902c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1903c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1904c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 19057ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 19066a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_getmcolor(PyObject *self, PyObject *args) 1907c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1908c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int arg; 1909c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short r, g, b; 1910c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1911c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "i", &arg)) return NULL; 1912c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1913c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_getmcolor(arg, &r, &g, &b); 1914c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 1915c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("(hhh)", r, g, b); 1916c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1917c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 19187ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 191928faa1bf28b092e78bf040dd9dcc73efded527c6Neal Norwitzforms_get_mouse(PyObject *self) 192075cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum{ 1921c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou float x, y; 192275cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 1923c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_get_mouse(&x, &y); 192475cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 1925c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("(ff)", x, y); 192675cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum} 192775cc8980e826d5c8759a5b001bbf7726d017607aGuido van Rossum 19287ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 19296a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_tie(PyObject *self, PyObject *args) 1930c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 1931c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou short arg1, arg2, arg3; 1932c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(hhh)", &arg1, &arg2, &arg3)) 1933c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1934c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_tie(arg1, arg2, arg3); 1935c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1936c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 1937c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 1938c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 19397ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 19406a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_show_message(PyObject *f, PyObject *args) 19410374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 1942c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *a, *b, *c; 19430374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 1944c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL; 19450374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 1946c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_BEGIN_ALLOW_THREADS 1947c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_show_message(a, b, c); 1948c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_END_ALLOW_THREADS 19490374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 1950c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1951c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 19520374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 19530374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 19547ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 19556a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_show_choice(PyObject *f, PyObject *args) 1956b3a0e4c842c5dd207518a95e2c9f0e68b79e0364Guido van Rossum{ 1957c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *m1, *m2, *m3, *b1, *b2, *b3; 1958c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int nb; 1959c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *format; 1960c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long rv; 1961c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 1962c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (args == NULL || !PyTuple_Check(args)) { 1963c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_BadArgument(); 1964c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1965c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1966c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou nb = PyTuple_Size(args) - 3; 1967c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (nb <= 0) { 1968c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, 1969c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "need at least one button label"); 1970c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1971c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1972c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyInt_Check(PyTuple_GetItem(args, 3))) { 1973c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, 1974c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "'number-of-buttons' argument not needed"); 1975c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1976c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1977c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou switch (nb) { 1978c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou case 1: format = "(ssss)"; break; 1979c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou case 2: format = "(sssss)"; break; 1980c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou case 3: format = "(ssssss)"; break; 1981c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou default: 1982c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "too many button labels"); 1983c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1984c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1985c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 1986c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, format, &m1, &m2, &m3, &b1, &b2, &b3)) 1987c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1988c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 1989c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_BEGIN_ALLOW_THREADS 1990c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou rv = fl_show_choice(m1, m2, m3, nb, b1, b2, b3); 1991c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_END_ALLOW_THREADS 1992c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong(rv); 1993b3a0e4c842c5dd207518a95e2c9f0e68b79e0364Guido van Rossum} 1994b3a0e4c842c5dd207518a95e2c9f0e68b79e0364Guido van Rossum 19957ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 19966a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_show_question(PyObject *f, PyObject *args) 19970374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 1998c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int ret; 1999c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *a, *b, *c; 20000374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 2001c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL; 20020374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 2003c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_BEGIN_ALLOW_THREADS 2004c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ret = fl_show_question(a, b, c); 2005c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_END_ALLOW_THREADS 2006aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 2007c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyInt_FromLong((long) ret); 20080374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 20090374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20107ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 20116a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_show_input(PyObject *f, PyObject *args) 20120374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 2013c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *str; 2014c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *a, *b; 20150374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 2016c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(ss)", &a, &b)) return NULL; 20170374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 2018c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_BEGIN_ALLOW_THREADS 2019c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou str = fl_show_input(a, b); 2020c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_END_ALLOW_THREADS 20212df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 2022c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (str == NULL) { 2023c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2024c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 2025c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2026c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(str); 20270374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 20280374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20297ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 20306a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_file_selector(PyObject *f, PyObject *args) 20310374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 2032c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *str; 2033c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *a, *b, *c, *d; 20340374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 2035c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(args, "(ssss)", &a, &b, &c, &d)) return NULL; 20360374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 2037c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_BEGIN_ALLOW_THREADS 2038c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou str = fl_show_file_selector(a, b, c, d); 2039c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_END_ALLOW_THREADS 2040aa7ca2dc1a50e379a8173e13edb0a640c5402276Guido van Rossum 2041c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (str == NULL) { 2042c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2043c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 2044c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2045c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(str); 20460374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 20470374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20480374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20497ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 2050bd4bc4e9e947617def66780efbbea4eb08990e56Thomas Woutersforms_file_selector_func(PyObject *args, char *(*func)(void)) 20510374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 2052c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *str; 20530374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 2054c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou str = (*func) (); 20552df7bcca97c8501be1b4c6739ac48196b7f04975Guido van Rossum 2056c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (str == NULL) { 2057c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2058c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_None; 2059c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2060c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(str); 20610374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 20620374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20637ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 20646a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_get_directory(PyObject *f, PyObject *args) 20650374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 2066c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_file_selector_func(args, fl_get_directory); 20670374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 20680374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20697ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 20706a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_get_pattern(PyObject *f, PyObject *args) 20710374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 2072c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_file_selector_func(args, fl_get_pattern); 20730374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 20740374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20757ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyObject * 20766a85027a97d090e2a7e38bb37d816ca22d072760Peter Schneider-Kampforms_get_filename(PyObject *f, PyObject *args) 20770374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum{ 2078c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return forms_file_selector_func(args, fl_get_filename); 20790374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum} 20800374711fb331c87ee74dedea778c69ea1d3a0d81Guido van Rossum 20817ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Massestatic PyMethodDef forms_methods[] = { 2082c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* adm */ 2083c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"make_form", forms_make_form, METH_OLDARGS}, 2084c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"activate_all_forms", forms_activate_all_forms, METH_OLDARGS}, 2085c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"deactivate_all_forms",forms_deactivate_all_forms, METH_OLDARGS}, 2086c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* gl support wrappers */ 2087c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"qdevice", forms_qdevice, METH_OLDARGS}, 2088c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"unqdevice", forms_unqdevice, METH_OLDARGS}, 2089c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"isqueued", forms_isqueued, METH_OLDARGS}, 2090c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"qtest", forms_qtest, METH_OLDARGS}, 2091c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"qread", forms_qread, METH_OLDARGS}, 2092c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou/* {"blkqread", forms_blkqread, METH_OLDARGS}, */ 2093c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"qreset", forms_qreset, METH_NOARGS}, 2094c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"qenter", forms_qenter, METH_OLDARGS}, 2095c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_mouse", forms_get_mouse, METH_NOARGS}, 2096c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"tie", forms_tie, METH_OLDARGS}, 2097c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou/* {"new_events", forms_new_events, METH_OLDARGS}, */ 2098c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"color", forms_color, METH_OLDARGS}, 2099c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"mapcolor", forms_mapcolor, METH_OLDARGS}, 2100c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"getmcolor", forms_getmcolor, METH_OLDARGS}, 2101c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* interaction */ 2102c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"do_forms", forms_do_forms, METH_NOARGS}, 2103c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"do_only_forms", forms_do_only_forms, METH_NOARGS}, 2104c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"check_forms", forms_check_forms, METH_NOARGS}, 2105c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"check_only_forms", forms_check_only_forms, METH_NOARGS}, 2106c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_event_call_back", forms_set_event_call_back, METH_OLDARGS}, 2107c7df79e47da854931474f581618435fff0dd2448Guido van Rossum/* goodies */ 2108c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_message", forms_show_message, METH_OLDARGS}, 2109c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_question", forms_show_question, METH_OLDARGS}, 2110c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_choice", forms_show_choice, METH_OLDARGS}, 2111c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_input", forms_show_input, METH_OLDARGS}, 2112c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_file_selector", forms_file_selector, METH_OLDARGS}, 2113c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"file_selector", forms_file_selector, METH_OLDARGS}, /* BW compat */ 2114c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_directory", forms_get_directory, METH_OLDARGS}, 2115c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_pattern", forms_get_pattern, METH_OLDARGS}, 2116c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_filename", forms_get_filename, METH_OLDARGS}, 2117c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_graphics_mode", forms_set_graphics_mode, METH_OLDARGS}, 2118c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"get_rgbmode", forms_get_rgbmode, METH_OLDARGS}, 2119c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"show_errors", forms_show_errors, METH_OLDARGS}, 2120c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"set_font_name", forms_set_font_name, METH_OLDARGS}, 2121c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL} /* sentinel */ 2122c7df79e47da854931474f581618435fff0dd2448Guido van Rossum}; 2123c7df79e47da854931474f581618435fff0dd2448Guido van Rossum 2124fe51c6d66e0fbf6a142036bee2c448bd7fe8fefcMark HammondPyMODINIT_FUNC 2125f3f33dcf03eaed3c4e720178f9d69205a66d6a91Thomas Woutersinitfl(void) 2126c7df79e47da854931474f581618435fff0dd2448Guido van Rossum{ 2127178582e2a48dab04bb0a20b92d38a8280327dd6fBrett Cannon if (PyErr_WarnPy3k("the fl module has been removed in " 2128178582e2a48dab04bb0a20b92d38a8280327dd6fBrett Cannon "Python 3.0", 2) < 0) 2129ca56dd4767617a2f5e946130de4beb06442a5cd5Martin Panter return; 2130c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 2131c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_InitModule("fl", forms_methods); 2132c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (m == NULL) 2133178582e2a48dab04bb0a20b92d38a8280327dd6fBrett Cannon return; 2134c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou foreground(); 2135c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou fl_init(); 2136c7df79e47da854931474f581618435fff0dd2448Guido van Rossum} 21377ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse 21387ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse 21397ba4c0776819d91c3ba23ce8b6d5727f335aa7f1Roger E. Masse 2140