Changeset 388 for python/vendor/current/Modules/flmodule.c
- Timestamp:
- Mar 19, 2014, 11:11:30 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/vendor/current/Modules/flmodule.c
r2 r388 23 23 24 24 typedef struct { 25 26 27 28 29 25 PyObject_HEAD 26 FL_OBJECT *ob_generic; 27 PyMethodDef *ob_methods; 28 PyObject *ob_callback; 29 PyObject *ob_callback_arg; 30 30 } genericobject; 31 31 … … 44 44 knowgeneric(genericobject *g) 45 45 { 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 46 int i, n; 47 /* Create the list if it doesn't already exist */ 48 if (allgenerics == NULL) { 49 allgenerics = PyList_New(0); 50 if (allgenerics == NULL) { 51 PyErr_Clear(); 52 return; /* Too bad, live without allgenerics... */ 53 } 54 } 55 if (nfreeslots > 0) { 56 /* Search the list for reusable slots (NULL items) */ 57 /* XXX This can be made faster! */ 58 n = PyList_Size(allgenerics); 59 for (i = 0; i < n; i++) { 60 if (PyList_GetItem(allgenerics, i) == NULL) { 61 Py_INCREF(g); 62 PyList_SetItem(allgenerics, i, (PyObject *)g); 63 nfreeslots--; 64 return; 65 } 66 } 67 /* Strange... no free slots found... */ 68 nfreeslots = 0; 69 } 70 /* No free entries, append new item to the end */ 71 PyList_Append(allgenerics, (PyObject *)g); 72 72 } 73 73 … … 77 77 findgeneric(FL_OBJECT *generic) 78 78 { 79 80 81 82 83 84 85 86 87 88 89 90 79 int i, n; 80 genericobject *g; 81 82 if (allgenerics == NULL) 83 return NULL; /* No objects known yet */ 84 n = PyList_Size(allgenerics); 85 for (i = 0; i < n; i++) { 86 g = (genericobject *)PyList_GetItem(allgenerics, i); 87 if (g != NULL && g->ob_generic == generic) 88 return g; 89 } 90 return NULL; /* Unknown object */ 91 91 } 92 92 … … 96 96 forgetgeneric(genericobject *g) 97 97 { 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 98 int i, n; 99 100 Py_XDECREF(g->ob_callback); 101 g->ob_callback = NULL; 102 Py_XDECREF(g->ob_callback_arg); 103 g->ob_callback_arg = NULL; 104 if (allgenerics == NULL) 105 return; /* No objects known yet */ 106 n = PyList_Size(allgenerics); 107 for (i = 0; i < n; i++) { 108 if (g == (genericobject *)PyList_GetItem(allgenerics, i)) { 109 PyList_SetItem(allgenerics, i, (PyObject *)NULL); 110 nfreeslots++; 111 break; 112 } 113 } 114 114 } 115 115 … … 120 120 releaseobjects(FL_FORM *form) 121 121 { 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 122 int i, n; 123 genericobject *g; 124 125 if (allgenerics == NULL) 126 return; /* No objects known yet */ 127 n = PyList_Size(allgenerics); 128 for (i = 0; i < n; i++) { 129 g = (genericobject *)PyList_GetItem(allgenerics, i); 130 if (g != NULL && g->ob_generic->form == form) { 131 fl_delete_object(g->ob_generic); 132 /* The object is now unreachable for 133 do_forms and check_forms, so 134 delete it from the list of known objects */ 135 Py_XDECREF(g->ob_callback); 136 g->ob_callback = NULL; 137 Py_XDECREF(g->ob_callback_arg); 138 g->ob_callback_arg = NULL; 139 PyList_SetItem(allgenerics, i, (PyObject *)NULL); 140 nfreeslots++; 141 } 142 } 143 143 } 144 144 … … 149 149 generic_set_call_back(genericobject *g, PyObject *args) 150 150 { 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 151 if (PyTuple_GET_SIZE(args) == 0) { 152 Py_XDECREF(g->ob_callback); 153 Py_XDECREF(g->ob_callback_arg); 154 g->ob_callback = NULL; 155 g->ob_callback_arg = NULL; 156 } 157 else { 158 PyObject *a, *b; 159 if (!PyArg_UnpackTuple(args, "set_call_back", 2, 2, &a, &b)) 160 return NULL; 161 Py_XDECREF(g->ob_callback); 162 Py_XDECREF(g->ob_callback_arg); 163 g->ob_callback = a; 164 Py_INCREF(g->ob_callback); 165 g->ob_callback_arg = b; 166 Py_INCREF(g->ob_callback_arg); 167 } 168 Py_INCREF(Py_None); 169 return Py_None; 170 170 } 171 171 … … 173 173 generic_call(genericobject *g, void (*func)(FL_OBJECT *)) 174 174 { 175 176 177 175 (*func)(g->ob_generic); 176 Py_INCREF(Py_None); 177 return Py_None; 178 178 } 179 179 … … 181 181 generic_delete_object(genericobject *g) 182 182 { 183 184 185 186 187 183 PyObject *res; 184 res = generic_call(g, fl_delete_object); 185 if (res != NULL) 186 forgetgeneric(g); 187 return res; 188 188 } 189 189 … … 191 191 generic_show_object(genericobject *g) 192 192 { 193 193 return generic_call(g, fl_show_object); 194 194 } 195 195 … … 197 197 generic_hide_object(genericobject *g) 198 198 { 199 199 return generic_call(g, fl_hide_object); 200 200 } 201 201 … … 203 203 generic_redraw_object(genericobject *g) 204 204 { 205 205 return generic_call(g, fl_redraw_object); 206 206 } 207 207 208 208 #ifdef OBSOLETE_FORMS_CALLS 209 209 210 210 /* (un)freeze_object() are obsolete in FORMS 2.2 and unsupported 211 211 in 2.3. Since there's no foolproof way to tell which version we're 212 212 using, we omit them unconditionally. */ 213 213 214 214 static PyObject * 215 215 generic_freeze_object(genericobject *g) 216 216 { 217 217 return generic_call(g, fl_freeze_object); 218 218 } 219 219 … … 221 221 generic_unfreeze_object(genericobject *g) 222 222 { 223 223 return generic_call(g, fl_unfreeze_object); 224 224 } 225 225 … … 229 229 generic_activate_object(genericobject *g) 230 230 { 231 231 return generic_call(g, fl_activate_object); 232 232 } 233 233 … … 235 235 generic_deactivate_object(genericobject *g) 236 236 { 237 237 return generic_call(g, fl_deactivate_object); 238 238 } 239 239 … … 241 241 generic_set_object_shortcut(genericobject *g, PyObject *args) 242 242 { 243 244 245 246 247 248 243 char *str; 244 if (!PyArg_ParseTuple(args, "s:set_object_shortcut", &str)) 245 return NULL; 246 fl_set_object_shortcut(g->ob_generic, str); 247 Py_INCREF(Py_None); 248 return Py_None; 249 249 } 250 250 251 251 static PyMethodDef generic_methods[] = { 252 {"set_call_back",(PyCFunction)generic_set_call_back, METH_VARARGS},253 {"delete_object",(PyCFunction)generic_delete_object, METH_NOARGS},254 {"show_object",(PyCFunction)generic_show_object, METH_NOARGS},255 {"hide_object",(PyCFunction)generic_hide_object, METH_NOARGS},256 {"redraw_object",(PyCFunction)generic_redraw_object, METH_NOARGS},252 {"set_call_back", (PyCFunction)generic_set_call_back, METH_VARARGS}, 253 {"delete_object", (PyCFunction)generic_delete_object, METH_NOARGS}, 254 {"show_object", (PyCFunction)generic_show_object, METH_NOARGS}, 255 {"hide_object", (PyCFunction)generic_hide_object, METH_NOARGS}, 256 {"redraw_object", (PyCFunction)generic_redraw_object, METH_NOARGS}, 257 257 #ifdef OBSOLETE_FORMS_CALLS 258 {"freeze_object",(PyCFunction)generic_freeze_object, METH_NOARGS},259 {"unfreeze_object",(PyCFunction)generic_unfreeze_object, METH_NOARGS},258 {"freeze_object", (PyCFunction)generic_freeze_object, METH_NOARGS}, 259 {"unfreeze_object", (PyCFunction)generic_unfreeze_object, METH_NOARGS}, 260 260 #endif 261 {"activate_object",(PyCFunction)generic_activate_object, METH_NOARGS},262 {"deactivate_object",(PyCFunction)generic_deactivate_object, METH_NOARGS},263 {"set_object_shortcut",(PyCFunction)generic_set_object_shortcut, METH_VARARGS},264 {NULL, NULL}/* sentinel */261 {"activate_object", (PyCFunction)generic_activate_object, METH_NOARGS}, 262 {"deactivate_object", (PyCFunction)generic_deactivate_object, METH_NOARGS}, 263 {"set_object_shortcut", (PyCFunction)generic_set_object_shortcut, METH_VARARGS}, 264 {NULL, NULL} /* sentinel */ 265 265 }; 266 266 … … 268 268 generic_dealloc(genericobject *g) 269 269 { 270 271 272 273 270 fl_free_object(g->ob_generic); 271 Py_XDECREF(g->ob_callback); 272 Py_XDECREF(g->ob_callback_arg); 273 PyObject_Del(g); 274 274 } 275 275 … … 277 277 278 278 static struct memberlist generic_memberlist[] = { 279 {"objclass", T_INT, OFF(objclass),RO},280 {"type", T_INT, OFF(type),RO},281 {"boxtype", T_INT,OFF(boxtype)},282 {"x", T_FLOAT,OFF(x)},283 {"y", T_FLOAT,OFF(y)},284 {"w", T_FLOAT,OFF(w)},285 {"h", T_FLOAT,OFF(h)},286 {"col1", T_INT,OFF(col1)},287 {"col2", T_INT,OFF(col2)},288 {"align", T_INT,OFF(align)},289 {"lcol", T_INT,OFF(lcol)},290 {"lsize", T_FLOAT,OFF(lsize)},291 292 {"lstyle", T_INT,OFF(lstyle)},293 {"pushed", T_INT, OFF(pushed),RO},294 {"focus", T_INT, OFF(focus),RO},295 {"belowmouse", T_INT,OFF(belowmouse),RO},296 /* {"frozen", T_INT, OFF(frozen), RO},*/297 {"active", T_INT,OFF(active)},298 {"input", T_INT,OFF(input)},299 {"visible", T_INT, OFF(visible),RO},300 {"radio", T_INT,OFF(radio)},301 {"automatic", T_INT,OFF(automatic)},302 {NULL}/* Sentinel */279 {"objclass", T_INT, OFF(objclass), RO}, 280 {"type", T_INT, OFF(type), RO}, 281 {"boxtype", T_INT, OFF(boxtype)}, 282 {"x", T_FLOAT, OFF(x)}, 283 {"y", T_FLOAT, OFF(y)}, 284 {"w", T_FLOAT, OFF(w)}, 285 {"h", T_FLOAT, OFF(h)}, 286 {"col1", T_INT, OFF(col1)}, 287 {"col2", T_INT, OFF(col2)}, 288 {"align", T_INT, OFF(align)}, 289 {"lcol", T_INT, OFF(lcol)}, 290 {"lsize", T_FLOAT, OFF(lsize)}, 291 /* "label" is treated specially! */ 292 {"lstyle", T_INT, OFF(lstyle)}, 293 {"pushed", T_INT, OFF(pushed), RO}, 294 {"focus", T_INT, OFF(focus), RO}, 295 {"belowmouse", T_INT, OFF(belowmouse),RO}, 296 /* {"frozen", T_INT, OFF(frozen), RO}, */ 297 {"active", T_INT, OFF(active)}, 298 {"input", T_INT, OFF(input)}, 299 {"visible", T_INT, OFF(visible), RO}, 300 {"radio", T_INT, OFF(radio)}, 301 {"automatic", T_INT, OFF(automatic)}, 302 {NULL} /* Sentinel */ 303 303 }; 304 304 … … 308 308 generic_getattr(genericobject *g, char *name) 309 309 { 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 310 PyObject *meth; 311 312 /* XXX Ought to special-case name "__methods__" */ 313 if (g-> ob_methods) { 314 meth = Py_FindMethod(g->ob_methods, (PyObject *)g, name); 315 if (meth != NULL) return meth; 316 PyErr_Clear(); 317 } 318 319 meth = Py_FindMethod(generic_methods, (PyObject *)g, name); 320 if (meth != NULL) 321 return meth; 322 PyErr_Clear(); 323 324 /* "label" is an exception, getmember only works for char pointers, 325 not for char arrays */ 326 if (strcmp(name, "label") == 0) 327 return PyString_FromString(g->ob_generic->label); 328 329 return PyMember_Get((char *)g->ob_generic, generic_memberlist, name); 330 330 } 331 331 … … 333 333 generic_setattr(genericobject *g, char *name, PyObject *v) 334 334 { 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 335 int ret; 336 337 if (v == NULL) { 338 PyErr_SetString(PyExc_TypeError, 339 "can't delete forms object attributes"); 340 return -1; 341 } 342 343 /* "label" is an exception: setmember doesn't set strings; 344 and FORMS wants you to call a function to set the label */ 345 if (strcmp(name, "label") == 0) { 346 if (!PyString_Check(v)) { 347 PyErr_SetString(PyExc_TypeError, 348 "label attr must be string"); 349 return -1; 350 } 351 fl_set_object_label(g->ob_generic, PyString_AsString(v)); 352 return 0; 353 } 354 355 ret = PyMember_Set((char *)g->ob_generic, generic_memberlist, name, v); 356 357 /* Rather than calling all the various set_object_* functions, 358 we call fl_redraw_object here. This is sometimes redundant 359 but I doubt that's a big problem */ 360 if (ret == 0) 361 fl_redraw_object(g->ob_generic); 362 363 return ret; 364 364 } 365 365 … … 367 367 generic_repr(genericobject *g) 368 368 { 369 370 371 372 369 char buf[100]; 370 PyOS_snprintf(buf, sizeof(buf), "<FORMS_object at %p, objclass=%d>", 371 g, g->ob_generic->objclass); 372 return PyString_FromString(buf); 373 373 } 374 374 375 375 static PyTypeObject GenericObjecttype = { 376 377 0,/*ob_size*/378 "fl.FORMS_object",/*tp_name*/379 sizeof(genericobject),/*tp_size*/380 0,/*tp_itemsize*/381 382 (destructor)generic_dealloc,/*tp_dealloc*/383 0,/*tp_print*/384 (getattrfunc)generic_getattr,/*tp_getattr*/385 (setattrfunc)generic_setattr,/*tp_setattr*/386 0,/*tp_compare*/387 (reprfunc)generic_repr,/*tp_repr*/376 PyObject_HEAD_INIT(&PyType_Type) 377 0, /*ob_size*/ 378 "fl.FORMS_object", /*tp_name*/ 379 sizeof(genericobject), /*tp_size*/ 380 0, /*tp_itemsize*/ 381 /* methods */ 382 (destructor)generic_dealloc, /*tp_dealloc*/ 383 0, /*tp_print*/ 384 (getattrfunc)generic_getattr, /*tp_getattr*/ 385 (setattrfunc)generic_setattr, /*tp_setattr*/ 386 0, /*tp_compare*/ 387 (reprfunc)generic_repr, /*tp_repr*/ 388 388 }; 389 389 … … 391 391 newgenericobject(FL_OBJECT *generic, PyMethodDef *methods) 392 392 { 393 394 395 396 397 398 399 400 401 402 393 genericobject *g; 394 g = PyObject_New(genericobject, &GenericObjecttype); 395 if (g == NULL) 396 return NULL; 397 g-> ob_generic = generic; 398 g->ob_methods = methods; 399 g->ob_callback = NULL; 400 g->ob_callback_arg = NULL; 401 knowgeneric(g); 402 return (PyObject *)g; 403 403 } 404 404 … … 410 410 call_forms_INf (void (*func)(FL_OBJECT *, float), FL_OBJECT *obj, PyObject *args) 411 411 { 412 413 414 415 416 417 418 419 412 float parameter; 413 414 if (!PyArg_Parse(args, "f", ¶meter)) return NULL; 415 416 (*func) (obj, parameter); 417 418 Py_INCREF(Py_None); 419 return Py_None; 420 420 } 421 421 … … 424 424 call_forms_INfINf (void (*func)(FL_OBJECT *, float, float), FL_OBJECT *obj, PyObject *args) 425 425 { 426 427 428 429 430 431 432 433 426 float par1, par2; 427 428 if (!PyArg_Parse(args, "(ff)", &par1, &par2)) return NULL; 429 430 (*func) (obj, par1, par2); 431 432 Py_INCREF(Py_None); 433 return Py_None; 434 434 } 435 435 … … 438 438 call_forms_INi (void (*func)(FL_OBJECT *, int), FL_OBJECT *obj, PyObject *args) 439 439 { 440 441 442 443 444 445 446 447 440 int parameter; 441 442 if (!PyArg_Parse(args, "i", ¶meter)) return NULL; 443 444 (*func) (obj, parameter); 445 446 Py_INCREF(Py_None); 447 return Py_None; 448 448 } 449 449 … … 452 452 call_forms_INc (void (*func)(FL_OBJECT *, int), FL_OBJECT *obj, PyObject *args) 453 453 { 454 455 456 457 458 459 460 461 454 char *a; 455 456 if (!PyArg_Parse(args, "s", &a)) return NULL; 457 458 (*func) (obj, a[0]); 459 460 Py_INCREF(Py_None); 461 return Py_None; 462 462 } 463 463 … … 466 466 call_forms_INstr (void (*func)(FL_OBJECT *, char *), FL_OBJECT *obj, PyObject *args) 467 467 { 468 469 470 471 472 473 474 475 468 char *a; 469 470 if (!PyArg_Parse(args, "s", &a)) return NULL; 471 472 (*func) (obj, a); 473 474 Py_INCREF(Py_None); 475 return Py_None; 476 476 } 477 477 … … 481 481 call_forms_INiINstr (void (*func)(FL_OBJECT *, int, char *), FL_OBJECT *obj, PyObject *args) 482 482 { 483 484 485 486 487 488 489 490 491 483 char *b; 484 int a; 485 486 if (!PyArg_Parse(args, "(is)", &a, &b)) return NULL; 487 488 (*func) (obj, a, b); 489 490 Py_INCREF(Py_None); 491 return Py_None; 492 492 } 493 493 … … 497 497 call_forms_INiINi (void (*func)(FL_OBJECT *, int, int), FL_OBJECT *obj, PyObject *args) 498 498 { 499 500 501 502 503 504 505 506 499 int par1, par2; 500 501 if (!PyArg_Parse(args, "(ii)", &par1, &par2)) return NULL; 502 503 (*func) (obj, par1, par2); 504 505 Py_INCREF(Py_None); 506 return Py_None; 507 507 } 508 508 #endif … … 512 512 call_forms_Ri (int (*func)(FL_OBJECT *), FL_OBJECT *obj) 513 513 { 514 515 516 517 518 514 int retval; 515 516 retval = (*func) (obj); 517 518 return PyInt_FromLong ((long) retval); 519 519 } 520 520 … … 523 523 call_forms_Rstr (char * (*func)(FL_OBJECT *), FL_OBJECT *obj) 524 524 { 525 526 527 528 529 530 531 532 533 525 char *str; 526 527 str = (*func) (obj); 528 529 if (str == NULL) { 530 Py_INCREF(Py_None); 531 return Py_None; 532 } 533 return PyString_FromString (str); 534 534 } 535 535 … … 538 538 call_forms_Rf (float (*func)(FL_OBJECT *), FL_OBJECT *obj) 539 539 { 540 541 542 543 544 540 float retval; 541 542 retval = (*func) (obj); 543 544 return PyFloat_FromDouble (retval); 545 545 } 546 546 … … 548 548 call_forms_OUTfOUTf (void (*func)(FL_OBJECT *, float *, float *), FL_OBJECT *obj) 549 549 { 550 551 552 553 554 550 float f1, f2; 551 552 (*func) (obj, &f1, &f2); 553 554 return Py_BuildValue("(ff)", f1, f2); 555 555 } 556 556 … … 559 559 call_forms_OUTf (void (*func)(FL_OBJECT *, float *), FL_OBJECT *obj) 560 560 { 561 562 563 564 565 561 float f; 562 563 (*func) (obj, &f); 564 565 return PyFloat_FromDouble (f); 566 566 } 567 567 #endif … … 573 573 set_browser_topline(genericobject *g, PyObject *args) 574 574 { 575 575 return call_forms_INi (fl_set_browser_topline, g-> ob_generic, args); 576 576 } 577 577 … … 579 579 clear_browser(genericobject *g) 580 580 { 581 581 return generic_call (g, fl_clear_browser); 582 582 } 583 583 … … 585 585 add_browser_line (genericobject *g, PyObject *args) 586 586 { 587 587 return call_forms_INstr (fl_add_browser_line, g-> ob_generic, args); 588 588 } 589 589 … … 591 591 addto_browser (genericobject *g, PyObject *args) 592 592 { 593 593 return call_forms_INstr (fl_addto_browser, g-> ob_generic, args); 594 594 } 595 595 … … 597 597 insert_browser_line (genericobject *g, PyObject *args) 598 598 { 599 600 599 return call_forms_INiINstr (fl_insert_browser_line, 600 g-> ob_generic, args); 601 601 } 602 602 … … 604 604 delete_browser_line (genericobject *g, PyObject *args) 605 605 { 606 606 return call_forms_INi (fl_delete_browser_line, g-> ob_generic, args); 607 607 } 608 608 … … 610 610 replace_browser_line (genericobject *g, PyObject *args) 611 611 { 612 613 612 return call_forms_INiINstr (fl_replace_browser_line, 613 g-> ob_generic, args); 614 614 } 615 615 … … 617 617 get_browser_line(genericobject *g, PyObject *args) 618 618 { 619 620 621 622 623 624 625 626 627 628 629 630 631 619 int i; 620 char *str; 621 622 if (!PyArg_Parse(args, "i", &i)) 623 return NULL; 624 625 str = fl_get_browser_line (g->ob_generic, i); 626 627 if (str == NULL) { 628 Py_INCREF(Py_None); 629 return Py_None; 630 } 631 return PyString_FromString (str); 632 632 } 633 633 … … 635 635 load_browser (genericobject *g, PyObject *args) 636 636 { 637 638 639 637 /* XXX strictly speaking this is wrong since fl_load_browser 638 XXX returns int, not void */ 639 return call_forms_INstr (fl_load_browser, g-> ob_generic, args); 640 640 } 641 641 … … 643 643 get_browser_maxline(genericobject *g) 644 644 { 645 645 return call_forms_Ri (fl_get_browser_maxline, g-> ob_generic); 646 646 } 647 647 … … 649 649 select_browser_line (genericobject *g, PyObject *args) 650 650 { 651 651 return call_forms_INi (fl_select_browser_line, g-> ob_generic, args); 652 652 } 653 653 … … 655 655 deselect_browser_line (genericobject *g, PyObject *args) 656 656 { 657 657 return call_forms_INi (fl_deselect_browser_line, g-> ob_generic, args); 658 658 } 659 659 … … 661 661 deselect_browser (genericobject *g) 662 662 { 663 663 return generic_call (g, fl_deselect_browser); 664 664 } 665 665 … … 667 667 isselected_browser_line (genericobject *g, PyObject *args) 668 668 { 669 670 671 672 673 674 675 676 669 int i, j; 670 671 if (!PyArg_Parse(args, "i", &i)) 672 return NULL; 673 674 j = fl_isselected_browser_line (g->ob_generic, i); 675 676 return PyInt_FromLong (j); 677 677 } 678 678 … … 680 680 get_browser (genericobject *g) 681 681 { 682 682 return call_forms_Ri (fl_get_browser, g-> ob_generic); 683 683 } 684 684 … … 686 686 set_browser_fontsize (genericobject *g, PyObject *args) 687 687 { 688 688 return call_forms_INf (fl_set_browser_fontsize, g-> ob_generic, args); 689 689 } 690 690 … … 692 692 set_browser_fontstyle (genericobject *g, PyObject *args) 693 693 { 694 694 return call_forms_INi (fl_set_browser_fontstyle, g-> ob_generic, args); 695 695 } 696 696 … … 698 698 set_browser_specialkey (genericobject *g, PyObject *args) 699 699 { 700 700 return call_forms_INc(fl_set_browser_specialkey, g-> ob_generic, args); 701 701 } 702 702 703 703 static PyMethodDef browser_methods[] = { 704 {"set_browser_topline",(PyCFunction)set_browser_topline,705 706 {"clear_browser",(PyCFunction)clear_browser,707 708 {"add_browser_line",(PyCFunction)add_browser_line,709 710 {"addto_browser",(PyCFunction)addto_browser,711 712 {"insert_browser_line",(PyCFunction)insert_browser_line,713 714 {"delete_browser_line",(PyCFunction)delete_browser_line,715 716 {"replace_browser_line",(PyCFunction)replace_browser_line,717 718 {"get_browser_line",(PyCFunction)get_browser_line,719 720 {"load_browser",(PyCFunction)load_browser,721 722 {"get_browser_maxline",(PyCFunction)get_browser_maxline,723 724 {"select_browser_line",(PyCFunction)select_browser_line,725 726 {"deselect_browser_line",(PyCFunction)deselect_browser_line,727 728 {"deselect_browser",(PyCFunction)deselect_browser,729 730 {"isselected_browser_line",(PyCFunction)isselected_browser_line,731 732 {"get_browser",(PyCFunction)get_browser,733 734 {"set_browser_fontsize",(PyCFunction)set_browser_fontsize,735 736 {"set_browser_fontstyle",(PyCFunction)set_browser_fontstyle,737 738 {"set_browser_specialkey",(PyCFunction)set_browser_specialkey,739 740 {NULL, NULL}/* sentinel */704 {"set_browser_topline", (PyCFunction)set_browser_topline, 705 METH_OLDARGS}, 706 {"clear_browser", (PyCFunction)clear_browser, 707 METH_NOARGS}, 708 {"add_browser_line", (PyCFunction)add_browser_line, 709 METH_OLDARGS}, 710 {"addto_browser", (PyCFunction)addto_browser, 711 METH_OLDARGS}, 712 {"insert_browser_line", (PyCFunction)insert_browser_line, 713 METH_OLDARGS}, 714 {"delete_browser_line", (PyCFunction)delete_browser_line, 715 METH_OLDARGS}, 716 {"replace_browser_line", (PyCFunction)replace_browser_line, 717 METH_OLDARGS}, 718 {"get_browser_line", (PyCFunction)get_browser_line, 719 METH_OLDARGS}, 720 {"load_browser", (PyCFunction)load_browser, 721 METH_OLDARGS}, 722 {"get_browser_maxline", (PyCFunction)get_browser_maxline, 723 METH_NOARGS,} 724 {"select_browser_line", (PyCFunction)select_browser_line, 725 METH_OLDARGS}, 726 {"deselect_browser_line", (PyCFunction)deselect_browser_line, 727 METH_OLDARGS}, 728 {"deselect_browser", (PyCFunction)deselect_browser, 729 METH_NOARGS,} 730 {"isselected_browser_line", (PyCFunction)isselected_browser_line, 731 METH_OLDARGS}, 732 {"get_browser", (PyCFunction)get_browser, 733 METH_NOARGS,} 734 {"set_browser_fontsize", (PyCFunction)set_browser_fontsize, 735 METH_OLDARGS}, 736 {"set_browser_fontstyle", (PyCFunction)set_browser_fontstyle, 737 METH_OLDARGS}, 738 {"set_browser_specialkey", (PyCFunction)set_browser_specialkey, 739 METH_OLDARGS}, 740 {NULL, NULL} /* sentinel */ 741 741 }; 742 742 … … 746 746 set_button(genericobject *g, PyObject *args) 747 747 { 748 748 return call_forms_INi (fl_set_button, g-> ob_generic, args); 749 749 } 750 750 … … 752 752 get_button(genericobject *g) 753 753 { 754 754 return call_forms_Ri (fl_get_button, g-> ob_generic); 755 755 } 756 756 … … 758 758 get_button_numb(genericobject *g) 759 759 { 760 760 return call_forms_Ri (fl_get_button_numb, g-> ob_generic); 761 761 } 762 762 … … 764 764 set_button_shortcut(genericobject *g, PyObject *args) 765 765 { 766 766 return call_forms_INstr (fl_set_button_shortcut, g-> ob_generic, args); 767 767 } 768 768 769 769 static PyMethodDef button_methods[] = { 770 {"set_button",(PyCFunction)set_button, METH_OLDARGS},771 {"get_button",(PyCFunction)get_button, METH_NOARGS},772 {"get_button_numb",(PyCFunction)get_button_numb, METH_NOARGS},773 {"set_button_shortcut",(PyCFunction)set_button_shortcut, METH_OLDARGS},774 {NULL, NULL}/* sentinel */770 {"set_button", (PyCFunction)set_button, METH_OLDARGS}, 771 {"get_button", (PyCFunction)get_button, METH_NOARGS}, 772 {"get_button_numb", (PyCFunction)get_button_numb, METH_NOARGS}, 773 {"set_button_shortcut", (PyCFunction)set_button_shortcut, METH_OLDARGS}, 774 {NULL, NULL} /* sentinel */ 775 775 }; 776 776 … … 780 780 set_choice(genericobject *g, PyObject *args) 781 781 { 782 782 return call_forms_INi (fl_set_choice, g-> ob_generic, args); 783 783 } 784 784 … … 786 786 get_choice(genericobject *g) 787 787 { 788 788 return call_forms_Ri (fl_get_choice, g-> ob_generic); 789 789 } 790 790 … … 792 792 clear_choice (genericobject *g) 793 793 { 794 794 return generic_call (g, fl_clear_choice); 795 795 } 796 796 … … 798 798 addto_choice (genericobject *g, PyObject *args) 799 799 { 800 800 return call_forms_INstr (fl_addto_choice, g-> ob_generic, args); 801 801 } 802 802 … … 804 804 replace_choice (genericobject *g, PyObject *args) 805 805 { 806 806 return call_forms_INiINstr (fl_replace_choice, g-> ob_generic, args); 807 807 } 808 808 … … 810 810 delete_choice (genericobject *g, PyObject *args) 811 811 { 812 812 return call_forms_INi (fl_delete_choice, g-> ob_generic, args); 813 813 } 814 814 … … 816 816 get_choice_text (genericobject *g) 817 817 { 818 818 return call_forms_Rstr (fl_get_choice_text, g-> ob_generic); 819 819 } 820 820 … … 822 822 set_choice_fontsize (genericobject *g, PyObject *args) 823 823 { 824 824 return call_forms_INf (fl_set_choice_fontsize, g-> ob_generic, args); 825 825 } 826 826 … … 828 828 set_choice_fontstyle (genericobject *g, PyObject *args) 829 829 { 830 830 return call_forms_INi (fl_set_choice_fontstyle, g-> ob_generic, args); 831 831 } 832 832 833 833 static PyMethodDef choice_methods[] = { 834 {"set_choice",(PyCFunction)set_choice, METH_OLDARGS},835 {"get_choice",(PyCFunction)get_choice, METH_NOARGS},836 {"clear_choice",(PyCFunction)clear_choice, METH_NOARGS},837 {"addto_choice",(PyCFunction)addto_choice, METH_OLDARGS},838 {"replace_choice",(PyCFunction)replace_choice, METH_OLDARGS},839 {"delete_choice",(PyCFunction)delete_choice, METH_OLDARGS},840 {"get_choice_text",(PyCFunction)get_choice_text, METH_NOARGS},841 842 843 {NULL, NULL}/* sentinel */834 {"set_choice", (PyCFunction)set_choice, METH_OLDARGS}, 835 {"get_choice", (PyCFunction)get_choice, METH_NOARGS}, 836 {"clear_choice", (PyCFunction)clear_choice, METH_NOARGS}, 837 {"addto_choice", (PyCFunction)addto_choice, METH_OLDARGS}, 838 {"replace_choice", (PyCFunction)replace_choice, METH_OLDARGS}, 839 {"delete_choice", (PyCFunction)delete_choice, METH_OLDARGS}, 840 {"get_choice_text", (PyCFunction)get_choice_text, METH_NOARGS}, 841 {"set_choice_fontsize", (PyCFunction)set_choice_fontsize, METH_OLDARGS}, 842 {"set_choice_fontstyle",(PyCFunction)set_choice_fontstyle, METH_OLDARGS}, 843 {NULL, NULL} /* sentinel */ 844 844 }; 845 845 … … 849 849 get_clock(genericobject *g) 850 850 { 851 852 853 854 855 851 int i0, i1, i2; 852 853 fl_get_clock (g->ob_generic, &i0, &i1, &i2); 854 855 return Py_BuildValue("(iii)", i0, i1, i2); 856 856 } 857 857 858 858 static PyMethodDef clock_methods[] = { 859 {"get_clock",(PyCFunction)get_clock, METH_NOARGS},860 {NULL, NULL}/* sentinel */859 {"get_clock", (PyCFunction)get_clock, METH_NOARGS}, 860 {NULL, NULL} /* sentinel */ 861 861 }; 862 862 … … 866 866 get_counter_value(genericobject *g) 867 867 { 868 868 return call_forms_Rf (fl_get_counter_value, g-> ob_generic); 869 869 } 870 870 … … 872 872 set_counter_value (genericobject *g, PyObject *args) 873 873 { 874 874 return call_forms_INf (fl_set_counter_value, g-> ob_generic, args); 875 875 } 876 876 … … 878 878 set_counter_precision (genericobject *g, PyObject *args) 879 879 { 880 880 return call_forms_INi (fl_set_counter_precision, g-> ob_generic, args); 881 881 } 882 882 … … 884 884 set_counter_bounds (genericobject *g, PyObject *args) 885 885 { 886 886 return call_forms_INfINf (fl_set_counter_bounds, g-> ob_generic, args); 887 887 } 888 888 … … 890 890 set_counter_step (genericobject *g, PyObject *args) 891 891 { 892 892 return call_forms_INfINf (fl_set_counter_step, g-> ob_generic, args); 893 893 } 894 894 … … 896 896 set_counter_return (genericobject *g, PyObject *args) 897 897 { 898 898 return call_forms_INi (fl_set_counter_return, g-> ob_generic, args); 899 899 } 900 900 901 901 static PyMethodDef counter_methods[] = { 902 {"set_counter_value",(PyCFunction)set_counter_value,903 904 {"get_counter_value",(PyCFunction)get_counter_value,905 906 {"set_counter_bounds",(PyCFunction)set_counter_bounds,907 908 {"set_counter_step",(PyCFunction)set_counter_step,909 910 {"set_counter_precision",(PyCFunction)set_counter_precision,911 912 {"set_counter_return",(PyCFunction)set_counter_return,913 914 {NULL, NULL}/* sentinel */902 {"set_counter_value", (PyCFunction)set_counter_value, 903 METH_OLDARGS}, 904 {"get_counter_value", (PyCFunction)get_counter_value, 905 METH_NOARGS}, 906 {"set_counter_bounds", (PyCFunction)set_counter_bounds, 907 METH_OLDARGS}, 908 {"set_counter_step", (PyCFunction)set_counter_step, 909 METH_OLDARGS}, 910 {"set_counter_precision", (PyCFunction)set_counter_precision, 911 METH_OLDARGS}, 912 {"set_counter_return", (PyCFunction)set_counter_return, 913 METH_OLDARGS}, 914 {NULL, NULL} /* sentinel */ 915 915 }; 916 916 … … 921 921 get_dial_value(genericobject *g) 922 922 { 923 923 return call_forms_Rf (fl_get_dial_value, g-> ob_generic); 924 924 } 925 925 … … 927 927 set_dial_value (genericobject *g, PyObject *args) 928 928 { 929 929 return call_forms_INf (fl_set_dial_value, g-> ob_generic, args); 930 930 } 931 931 … … 933 933 set_dial_bounds (genericobject *g, PyObject *args) 934 934 { 935 935 return call_forms_INfINf (fl_set_dial_bounds, g-> ob_generic, args); 936 936 } 937 937 … … 939 939 get_dial_bounds (genericobject *g) 940 940 { 941 941 return call_forms_OUTfOUTf (fl_get_dial_bounds, g-> ob_generic); 942 942 } 943 943 … … 945 945 set_dial_step (genericobject *g, PyObject *args) 946 946 { 947 947 return call_forms_INf (fl_set_dial_step, g-> ob_generic, args); 948 948 } 949 949 950 950 static PyMethodDef dial_methods[] = { 951 {"set_dial_value",(PyCFunction)set_dial_value, METH_OLDARGS},952 {"get_dial_value",(PyCFunction)get_dial_value, METH_NOARGS},953 {"set_dial_bounds",(PyCFunction)set_dial_bounds, METH_OLDARGS},954 {"get_dial_bounds",(PyCFunction)get_dial_bounds, METH_NOARGS},955 {"set_dial_step",(PyCFunction)set_dial_step, METH_OLDARGS},956 {NULL, NULL}/* sentinel */951 {"set_dial_value", (PyCFunction)set_dial_value, METH_OLDARGS}, 952 {"get_dial_value", (PyCFunction)get_dial_value, METH_NOARGS}, 953 {"set_dial_bounds", (PyCFunction)set_dial_bounds, METH_OLDARGS}, 954 {"get_dial_bounds", (PyCFunction)get_dial_bounds, METH_NOARGS}, 955 {"set_dial_step", (PyCFunction)set_dial_step, METH_OLDARGS}, 956 {NULL, NULL} /* sentinel */ 957 957 }; 958 958 … … 962 962 set_input (genericobject *g, PyObject *args) 963 963 { 964 964 return call_forms_INstr (fl_set_input, g-> ob_generic, args); 965 965 } 966 966 … … 968 968 get_input (genericobject *g) 969 969 { 970 970 return call_forms_Rstr (fl_get_input, g-> ob_generic); 971 971 } 972 972 … … 974 974 set_input_color (genericobject *g, PyObject *args) 975 975 { 976 976 return call_forms_INfINf (fl_set_input_color, g-> ob_generic, args); 977 977 } 978 978 … … 980 980 set_input_return (genericobject *g, PyObject *args) 981 981 { 982 982 return call_forms_INi (fl_set_input_return, g-> ob_generic, args); 983 983 } 984 984 985 985 static PyMethodDef input_methods[] = { 986 {"set_input",(PyCFunction)set_input, METH_OLDARGS},987 {"get_input",(PyCFunction)get_input, METH_NOARGS},988 {"set_input_color",(PyCFunction)set_input_color, METH_OLDARGS},989 {"set_input_return",(PyCFunction)set_input_return, METH_OLDARGS},990 {NULL, NULL}/* sentinel */986 {"set_input", (PyCFunction)set_input, METH_OLDARGS}, 987 {"get_input", (PyCFunction)get_input, METH_NOARGS}, 988 {"set_input_color", (PyCFunction)set_input_color, METH_OLDARGS}, 989 {"set_input_return", (PyCFunction)set_input_return, METH_OLDARGS}, 990 {NULL, NULL} /* sentinel */ 991 991 }; 992 992 … … 997 997 set_menu (genericobject *g, PyObject *args) 998 998 { 999 999 return call_forms_INstr (fl_set_menu, g-> ob_generic, args); 1000 1000 } 1001 1001 … … 1003 1003 get_menu (genericobject *g) 1004 1004 { 1005 1006 1007 1005 /* XXX strictly speaking this is wrong since fl_get_menu 1006 XXX returns long, not int */ 1007 return call_forms_Ri (fl_get_menu, g-> ob_generic); 1008 1008 } 1009 1009 … … 1011 1011 get_menu_text (genericobject *g) 1012 1012 { 1013 1013 return call_forms_Rstr (fl_get_menu_text, g-> ob_generic); 1014 1014 } 1015 1015 … … 1017 1017 addto_menu (genericobject *g, PyObject *args) 1018 1018 { 1019 1019 return call_forms_INstr (fl_addto_menu, g-> ob_generic, args); 1020 1020 } 1021 1021 1022 1022 static PyMethodDef menu_methods[] = { 1023 {"set_menu",(PyCFunction)set_menu, METH_OLDARGS},1024 {"get_menu",(PyCFunction)get_menu, METH_NOARGS},1025 {"get_menu_text",(PyCFunction)get_menu_text, METH_NOARGS},1026 {"addto_menu",(PyCFunction)addto_menu, METH_OLDARGS},1027 {NULL, NULL}/* sentinel */1023 {"set_menu", (PyCFunction)set_menu, METH_OLDARGS}, 1024 {"get_menu", (PyCFunction)get_menu, METH_NOARGS}, 1025 {"get_menu_text", (PyCFunction)get_menu_text, METH_NOARGS}, 1026 {"addto_menu", (PyCFunction)addto_menu, METH_OLDARGS}, 1027 {NULL, NULL} /* sentinel */ 1028 1028 }; 1029 1029 … … 1034 1034 get_slider_value(genericobject *g) 1035 1035 { 1036 1036 return call_forms_Rf (fl_get_slider_value, g-> ob_generic); 1037 1037 } 1038 1038 … … 1040 1040 set_slider_value (genericobject *g, PyObject *args) 1041 1041 { 1042 1042 return call_forms_INf (fl_set_slider_value, g-> ob_generic, args); 1043 1043 } 1044 1044 … … 1046 1046 set_slider_bounds (genericobject *g, PyObject *args) 1047 1047 { 1048 1048 return call_forms_INfINf (fl_set_slider_bounds, g-> ob_generic, args); 1049 1049 } 1050 1050 … … 1052 1052 get_slider_bounds (genericobject *g) 1053 1053 { 1054 1054 return call_forms_OUTfOUTf(fl_get_slider_bounds, g-> ob_generic); 1055 1055 } 1056 1056 … … 1058 1058 set_slider_return (genericobject *g, PyObject *args) 1059 1059 { 1060 1060 return call_forms_INf (fl_set_slider_return, g-> ob_generic, args); 1061 1061 } 1062 1062 … … 1064 1064 set_slider_size (genericobject *g, PyObject *args) 1065 1065 { 1066 1066 return call_forms_INf (fl_set_slider_size, g-> ob_generic, args); 1067 1067 } 1068 1068 … … 1070 1070 set_slider_precision (genericobject *g, PyObject *args) 1071 1071 { 1072 1072 return call_forms_INi (fl_set_slider_precision, g-> ob_generic, args); 1073 1073 } 1074 1074 … … 1076 1076 set_slider_step (genericobject *g, PyObject *args) 1077 1077 { 1078 1078 return call_forms_INf (fl_set_slider_step, g-> ob_generic, args); 1079 1079 } 1080 1080 1081 1081 1082 1082 static PyMethodDef slider_methods[] = { 1083 {"set_slider_value",(PyCFunction)set_slider_value, METH_OLDARGS},1084 {"get_slider_value",(PyCFunction)get_slider_value, METH_NOARGS},1085 {"set_slider_bounds",(PyCFunction)set_slider_bounds, METH_OLDARGS},1086 {"get_slider_bounds",(PyCFunction)get_slider_bounds, METH_NOARGS},1087 {"set_slider_return",(PyCFunction)set_slider_return, METH_OLDARGS},1088 {"set_slider_size",(PyCFunction)set_slider_size, METH_OLDARGS},1089 1090 {"set_slider_step",(PyCFunction)set_slider_step, METH_OLDARGS},1091 {NULL, NULL}/* sentinel */1083 {"set_slider_value", (PyCFunction)set_slider_value, METH_OLDARGS}, 1084 {"get_slider_value", (PyCFunction)get_slider_value, METH_NOARGS}, 1085 {"set_slider_bounds", (PyCFunction)set_slider_bounds, METH_OLDARGS}, 1086 {"get_slider_bounds", (PyCFunction)get_slider_bounds, METH_NOARGS}, 1087 {"set_slider_return", (PyCFunction)set_slider_return, METH_OLDARGS}, 1088 {"set_slider_size", (PyCFunction)set_slider_size, METH_OLDARGS}, 1089 {"set_slider_precision",(PyCFunction)set_slider_precision, METH_OLDARGS}, 1090 {"set_slider_step", (PyCFunction)set_slider_step, METH_OLDARGS}, 1091 {NULL, NULL} /* sentinel */ 1092 1092 }; 1093 1093 … … 1095 1095 set_positioner_xvalue (genericobject *g, PyObject *args) 1096 1096 { 1097 1097 return call_forms_INf (fl_set_positioner_xvalue, g-> ob_generic, args); 1098 1098 } 1099 1099 … … 1101 1101 set_positioner_xbounds (genericobject *g, PyObject *args) 1102 1102 { 1103 1104 1103 return call_forms_INfINf (fl_set_positioner_xbounds, 1104 g-> ob_generic, args); 1105 1105 } 1106 1106 … … 1108 1108 set_positioner_yvalue (genericobject *g, PyObject *args) 1109 1109 { 1110 1110 return call_forms_INf (fl_set_positioner_yvalue, g-> ob_generic, args); 1111 1111 } 1112 1112 … … 1114 1114 set_positioner_ybounds (genericobject *g, PyObject *args) 1115 1115 { 1116 1117 1116 return call_forms_INfINf (fl_set_positioner_ybounds, 1117 g-> ob_generic, args); 1118 1118 } 1119 1119 … … 1121 1121 get_positioner_xvalue (genericobject *g) 1122 1122 { 1123 1123 return call_forms_Rf (fl_get_positioner_xvalue, g-> ob_generic); 1124 1124 } 1125 1125 … … 1127 1127 get_positioner_xbounds (genericobject *g) 1128 1128 { 1129 1129 return call_forms_OUTfOUTf (fl_get_positioner_xbounds, g-> ob_generic); 1130 1130 } 1131 1131 … … 1133 1133 get_positioner_yvalue (genericobject *g) 1134 1134 { 1135 1135 return call_forms_Rf (fl_get_positioner_yvalue, g-> ob_generic); 1136 1136 } 1137 1137 … … 1139 1139 get_positioner_ybounds (genericobject *g) 1140 1140 { 1141 1141 return call_forms_OUTfOUTf (fl_get_positioner_ybounds, g-> ob_generic); 1142 1142 } 1143 1143 1144 1144 static PyMethodDef positioner_methods[] = { 1145 {"set_positioner_xvalue",(PyCFunction)set_positioner_xvalue,1146 1147 {"set_positioner_yvalue",(PyCFunction)set_positioner_yvalue,1148 1149 {"set_positioner_xbounds",(PyCFunction)set_positioner_xbounds,1150 1151 {"set_positioner_ybounds",(PyCFunction)set_positioner_ybounds,1152 1153 {"get_positioner_xvalue",(PyCFunction)get_positioner_xvalue,1154 1155 {"get_positioner_yvalue",(PyCFunction)get_positioner_yvalue,1156 1157 {"get_positioner_xbounds",(PyCFunction)get_positioner_xbounds,1158 1159 {"get_positioner_ybounds",(PyCFunction)get_positioner_ybounds,1160 1161 {NULL, NULL}/* sentinel */1145 {"set_positioner_xvalue", (PyCFunction)set_positioner_xvalue, 1146 METH_OLDARGS}, 1147 {"set_positioner_yvalue", (PyCFunction)set_positioner_yvalue, 1148 METH_OLDARGS}, 1149 {"set_positioner_xbounds", (PyCFunction)set_positioner_xbounds, 1150 METH_OLDARGS}, 1151 {"set_positioner_ybounds", (PyCFunction)set_positioner_ybounds, 1152 METH_OLDARGS}, 1153 {"get_positioner_xvalue", (PyCFunction)get_positioner_xvalue, 1154 METH_NOARGS}, 1155 {"get_positioner_yvalue", (PyCFunction)get_positioner_yvalue, 1156 METH_NOARGS}, 1157 {"get_positioner_xbounds", (PyCFunction)get_positioner_xbounds, 1158 METH_NOARGS}, 1159 {"get_positioner_ybounds", (PyCFunction)get_positioner_ybounds, 1160 METH_NOARGS}, 1161 {NULL, NULL} /* sentinel */ 1162 1162 }; 1163 1163 … … 1167 1167 set_timer (genericobject *g, PyObject *args) 1168 1168 { 1169 1169 return call_forms_INf (fl_set_timer, g-> ob_generic, args); 1170 1170 } 1171 1171 … … 1173 1173 get_timer (genericobject *g) 1174 1174 { 1175 1175 return call_forms_Rf (fl_get_timer, g-> ob_generic); 1176 1176 } 1177 1177 1178 1178 static PyMethodDef timer_methods[] = { 1179 {"set_timer",(PyCFunction)set_timer, METH_OLDARGS},1180 {"get_timer",(PyCFunction)get_timer, METH_NOARGS},1181 {NULL, NULL}/* sentinel */1179 {"set_timer", (PyCFunction)set_timer, METH_OLDARGS}, 1180 {"get_timer", (PyCFunction)get_timer, METH_NOARGS}, 1181 {NULL, NULL} /* sentinel */ 1182 1182 }; 1183 1183 … … 1185 1185 1186 1186 typedef struct { 1187 1188 1187 PyObject_HEAD 1188 FL_FORM *ob_form; 1189 1189 } formobject; 1190 1190 … … 1196 1196 form_show_form(formobject *f, PyObject *args) 1197 1197 { 1198 1199 1200 1201 1202 1203 1204 1198 int place, border; 1199 char *name; 1200 if (!PyArg_Parse(args, "(iis)", &place, &border, &name)) 1201 return NULL; 1202 fl_show_form(f->ob_form, place, border, name); 1203 Py_INCREF(Py_None); 1204 return Py_None; 1205 1205 } 1206 1206 … … 1208 1208 form_call(void (*func)(FL_FORM *), FL_FORM *f) 1209 1209 { 1210 1211 1212 1213 1210 (*func)(f); 1211 1212 Py_INCREF(Py_None); 1213 return Py_None; 1214 1214 } 1215 1215 … … 1217 1217 form_call_INiINi(void (*func)(FL_FORM *, int, int), FL_FORM *f, PyObject *args) 1218 1218 { 1219 1220 1221 1222 1223 1224 1225 1226 1219 int a, b; 1220 1221 if (!PyArg_Parse(args, "(ii)", &a, &b)) return NULL; 1222 1223 (*func)(f, a, b); 1224 1225 Py_INCREF(Py_None); 1226 return Py_None; 1227 1227 } 1228 1228 … … 1230 1230 form_call_INfINf(void (*func)(FL_FORM *, float, float), FL_FORM *f, PyObject *args) 1231 1231 { 1232 1233 1234 1235 1236 1237 1238 1239 1232 float a, b; 1233 1234 if (!PyArg_Parse(args, "(ff)", &a, &b)) return NULL; 1235 1236 (*func)(f, a, b); 1237 1238 Py_INCREF(Py_None); 1239 return Py_None; 1240 1240 } 1241 1241 … … 1243 1243 form_hide_form(formobject *f) 1244 1244 { 1245 1245 return form_call(fl_hide_form, f-> ob_form); 1246 1246 } 1247 1247 … … 1249 1249 form_redraw_form(formobject *f) 1250 1250 { 1251 1251 return form_call(fl_redraw_form, f-> ob_form); 1252 1252 } 1253 1253 … … 1255 1255 form_set_form_position(formobject *f, PyObject *args) 1256 1256 { 1257 1257 return form_call_INiINi(fl_set_form_position, f-> ob_form, args); 1258 1258 } 1259 1259 … … 1261 1261 form_set_form_size(formobject *f, PyObject *args) 1262 1262 { 1263 1263 return form_call_INiINi(fl_set_form_size, f-> ob_form, args); 1264 1264 } 1265 1265 … … 1267 1267 form_scale_form(formobject *f, PyObject *args) 1268 1268 { 1269 1269 return form_call_INfINf(fl_scale_form, f-> ob_form, args); 1270 1270 } 1271 1271 … … 1273 1273 generic_add_object(formobject *f, PyObject *args, FL_OBJECT *(*func)(int, float, float, float, float, char*), PyMethodDef *internal_methods) 1274 1274 { 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1275 int type; 1276 float x, y, w, h; 1277 char *name; 1278 FL_OBJECT *obj; 1279 1280 if (!PyArg_Parse(args,"(iffffs)", &type,&x,&y,&w,&h,&name)) 1281 return NULL; 1282 1283 fl_addto_form (f-> ob_form); 1284 1285 obj = (*func) (type, x, y, w, h, name); 1286 1287 fl_end_form(); 1288 1289 if (obj == NULL) { 1290 PyErr_NoMemory(); 1291 return NULL; 1292 } 1293 1294 return newgenericobject (obj, internal_methods); 1295 1295 } 1296 1296 … … 1298 1298 form_add_button(formobject *f, PyObject *args) 1299 1299 { 1300 1300 return generic_add_object(f, args, fl_add_button, button_methods); 1301 1301 } 1302 1302 … … 1304 1304 form_add_lightbutton(formobject *f, PyObject *args) 1305 1305 { 1306 1306 return generic_add_object(f, args, fl_add_lightbutton, button_methods); 1307 1307 } 1308 1308 … … 1310 1310 form_add_roundbutton(formobject *f, PyObject *args) 1311 1311 { 1312 1312 return generic_add_object(f, args, fl_add_roundbutton, button_methods); 1313 1313 } 1314 1314 … … 1316 1316 form_add_menu (formobject *f, PyObject *args) 1317 1317 { 1318 1318 return generic_add_object(f, args, fl_add_menu, menu_methods); 1319 1319 } 1320 1320 … … 1322 1322 form_add_slider(formobject *f, PyObject *args) 1323 1323 { 1324 1324 return generic_add_object(f, args, fl_add_slider, slider_methods); 1325 1325 } 1326 1326 … … 1328 1328 form_add_valslider(formobject *f, PyObject *args) 1329 1329 { 1330 1330 return generic_add_object(f, args, fl_add_valslider, slider_methods); 1331 1331 } 1332 1332 … … 1334 1334 form_add_dial(formobject *f, PyObject *args) 1335 1335 { 1336 1336 return generic_add_object(f, args, fl_add_dial, dial_methods); 1337 1337 } 1338 1338 … … 1340 1340 form_add_counter(formobject *f, PyObject *args) 1341 1341 { 1342 1342 return generic_add_object(f, args, fl_add_counter, counter_methods); 1343 1343 } 1344 1344 … … 1346 1346 form_add_clock(formobject *f, PyObject *args) 1347 1347 { 1348 1348 return generic_add_object(f, args, fl_add_clock, clock_methods); 1349 1349 } 1350 1350 … … 1352 1352 form_add_box(formobject *f, PyObject *args) 1353 1353 { 1354 1355 1354 return generic_add_object(f, args, fl_add_box, 1355 (PyMethodDef *)NULL); 1356 1356 } 1357 1357 … … 1359 1359 form_add_choice(formobject *f, PyObject *args) 1360 1360 { 1361 1361 return generic_add_object(f, args, fl_add_choice, choice_methods); 1362 1362 } 1363 1363 … … 1365 1365 form_add_browser(formobject *f, PyObject *args) 1366 1366 { 1367 1367 return generic_add_object(f, args, fl_add_browser, browser_methods); 1368 1368 } 1369 1369 … … 1371 1371 form_add_positioner(formobject *f, PyObject *args) 1372 1372 { 1373 1374 1373 return generic_add_object(f, args, fl_add_positioner, 1374 positioner_methods); 1375 1375 } 1376 1376 … … 1378 1378 form_add_input(formobject *f, PyObject *args) 1379 1379 { 1380 1380 return generic_add_object(f, args, fl_add_input, input_methods); 1381 1381 } 1382 1382 … … 1384 1384 form_add_text(formobject *f, PyObject *args) 1385 1385 { 1386 1387 1386 return generic_add_object(f, args, fl_add_text, 1387 (PyMethodDef *)NULL); 1388 1388 } 1389 1389 … … 1391 1391 form_add_timer(formobject *f, PyObject *args) 1392 1392 { 1393 1393 return generic_add_object(f, args, fl_add_timer, timer_methods); 1394 1394 } 1395 1395 … … 1397 1397 form_freeze_form(formobject *f) 1398 1398 { 1399 1399 return form_call(fl_freeze_form, f-> ob_form); 1400 1400 } 1401 1401 … … 1403 1403 form_unfreeze_form(formobject *f) 1404 1404 { 1405 1405 return form_call(fl_unfreeze_form, f-> ob_form); 1406 1406 } 1407 1407 … … 1409 1409 form_activate_form(formobject *f) 1410 1410 { 1411 1411 return form_call(fl_activate_form, f-> ob_form); 1412 1412 } 1413 1413 … … 1415 1415 form_deactivate_form(formobject *f) 1416 1416 { 1417 1417 return form_call(fl_deactivate_form, f-> ob_form); 1418 1418 } 1419 1419 … … 1421 1421 form_bgn_group(formobject *f, PyObject *args) 1422 1422 { 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1423 FL_OBJECT *obj; 1424 1425 fl_addto_form(f-> ob_form); 1426 obj = fl_bgn_group(); 1427 fl_end_form(); 1428 1429 if (obj == NULL) { 1430 PyErr_NoMemory(); 1431 return NULL; 1432 } 1433 1434 return newgenericobject (obj, (PyMethodDef *) NULL); 1435 1435 } 1436 1436 … … 1438 1438 form_end_group(formobject *f, PyObject *args) 1439 1439 { 1440 1441 1442 1443 1444 1440 fl_addto_form(f-> ob_form); 1441 fl_end_group(); 1442 fl_end_form(); 1443 Py_INCREF(Py_None); 1444 return Py_None; 1445 1445 } 1446 1446 … … 1448 1448 forms_find_first_or_last(FL_OBJECT *(*func)(FL_FORM *, int, float, float), formobject *f, PyObject *args) 1449 1449 { 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1450 int type; 1451 float mx, my; 1452 FL_OBJECT *generic; 1453 genericobject *g; 1454 1455 if (!PyArg_Parse(args, "(iff)", &type, &mx, &my)) return NULL; 1456 1457 generic = (*func) (f-> ob_form, type, mx, my); 1458 1459 if (generic == NULL) 1460 { 1461 Py_INCREF(Py_None); 1462 return Py_None; 1463 } 1464 1465 g = findgeneric(generic); 1466 if (g == NULL) { 1467 PyErr_SetString(PyExc_RuntimeError, 1468 "forms_find_{first|last} returns unknown object"); 1469 return NULL; 1470 } 1471 Py_INCREF(g); 1472 return (PyObject *) g; 1473 1473 } 1474 1474 … … 1476 1476 form_find_first(formobject *f, PyObject *args) 1477 1477 { 1478 1478 return forms_find_first_or_last(fl_find_first, f, args); 1479 1479 } 1480 1480 … … 1482 1482 form_find_last(formobject *f, PyObject *args) 1483 1483 { 1484 1484 return forms_find_first_or_last(fl_find_last, f, args); 1485 1485 } 1486 1486 … … 1488 1488 form_set_object_focus(formobject *f, PyObject *args) 1489 1489 { 1490 1491 1492 1493 1494 1495 1496 1497 1498 1490 genericobject *g; 1491 if (args == NULL || !is_genericobject(args)) { 1492 PyErr_BadArgument(); 1493 return NULL; 1494 } 1495 g = (genericobject *)args; 1496 fl_set_object_focus(f->ob_form, g->ob_generic); 1497 Py_INCREF(Py_None); 1498 return Py_None; 1499 1499 } 1500 1500 1501 1501 static PyMethodDef form_methods[] = { 1502 1502 /* adm */ 1503 {"show_form",(PyCFunction)form_show_form, METH_OLDARGS},1504 {"hide_form",(PyCFunction)form_hide_form, METH_NOARGS},1505 {"redraw_form",(PyCFunction)form_redraw_form, METH_NOARGS},1506 {"set_form_position",(PyCFunction)form_set_form_position, METH_OLDARGS},1507 {"set_form_size",(PyCFunction)form_set_form_size, METH_OLDARGS},1508 {"scale_form",(PyCFunction)form_scale_form, METH_OLDARGS},1509 {"freeze_form",(PyCFunction)form_freeze_form, METH_NOARGS},1510 {"unfreeze_form",(PyCFunction)form_unfreeze_form, METH_NOARGS},1511 {"activate_form",(PyCFunction)form_activate_form, METH_NOARGS},1512 {"deactivate_form",(PyCFunction)form_deactivate_form, METH_NOARGS},1513 {"bgn_group",(PyCFunction)form_bgn_group, METH_OLDARGS},1514 {"end_group",(PyCFunction)form_end_group, METH_OLDARGS},1515 {"find_first",(PyCFunction)form_find_first, METH_OLDARGS},1516 {"find_last",(PyCFunction)form_find_last, METH_OLDARGS},1517 {"set_object_focus",(PyCFunction)form_set_object_focus, METH_OLDARGS},1503 {"show_form", (PyCFunction)form_show_form, METH_OLDARGS}, 1504 {"hide_form", (PyCFunction)form_hide_form, METH_NOARGS}, 1505 {"redraw_form", (PyCFunction)form_redraw_form, METH_NOARGS}, 1506 {"set_form_position", (PyCFunction)form_set_form_position, METH_OLDARGS}, 1507 {"set_form_size", (PyCFunction)form_set_form_size, METH_OLDARGS}, 1508 {"scale_form", (PyCFunction)form_scale_form, METH_OLDARGS}, 1509 {"freeze_form", (PyCFunction)form_freeze_form, METH_NOARGS}, 1510 {"unfreeze_form", (PyCFunction)form_unfreeze_form, METH_NOARGS}, 1511 {"activate_form", (PyCFunction)form_activate_form, METH_NOARGS}, 1512 {"deactivate_form", (PyCFunction)form_deactivate_form, METH_NOARGS}, 1513 {"bgn_group", (PyCFunction)form_bgn_group, METH_OLDARGS}, 1514 {"end_group", (PyCFunction)form_end_group, METH_OLDARGS}, 1515 {"find_first", (PyCFunction)form_find_first, METH_OLDARGS}, 1516 {"find_last", (PyCFunction)form_find_last, METH_OLDARGS}, 1517 {"set_object_focus", (PyCFunction)form_set_object_focus, METH_OLDARGS}, 1518 1518 1519 1519 /* basic objects */ 1520 {"add_button",(PyCFunction)form_add_button, METH_OLDARGS},1521 /* {"add_bitmap",(method)form_add_bitmap, METH_OLDARGS}, */1522 {"add_lightbutton",(PyCFunction)form_add_lightbutton, METH_OLDARGS},1523 {"add_roundbutton",(PyCFunction)form_add_roundbutton, METH_OLDARGS},1524 {"add_menu",(PyCFunction)form_add_menu, METH_OLDARGS},1525 {"add_slider",(PyCFunction)form_add_slider, METH_OLDARGS},1526 {"add_positioner",(PyCFunction)form_add_positioner, METH_OLDARGS},1527 {"add_valslider",(PyCFunction)form_add_valslider, METH_OLDARGS},1528 {"add_dial",(PyCFunction)form_add_dial, METH_OLDARGS},1529 {"add_counter",(PyCFunction)form_add_counter, METH_OLDARGS},1530 {"add_box",(PyCFunction)form_add_box, METH_OLDARGS},1531 {"add_clock",(PyCFunction)form_add_clock, METH_OLDARGS},1532 {"add_choice",(PyCFunction)form_add_choice, METH_OLDARGS},1533 {"add_browser",(PyCFunction)form_add_browser, METH_OLDARGS},1534 {"add_input",(PyCFunction)form_add_input, METH_OLDARGS},1535 {"add_timer",(PyCFunction)form_add_timer, METH_OLDARGS},1536 {"add_text",(PyCFunction)form_add_text, METH_OLDARGS},1537 {NULL, NULL}/* sentinel */1520 {"add_button", (PyCFunction)form_add_button, METH_OLDARGS}, 1521 /* {"add_bitmap", (method)form_add_bitmap, METH_OLDARGS}, */ 1522 {"add_lightbutton", (PyCFunction)form_add_lightbutton, METH_OLDARGS}, 1523 {"add_roundbutton", (PyCFunction)form_add_roundbutton, METH_OLDARGS}, 1524 {"add_menu", (PyCFunction)form_add_menu, METH_OLDARGS}, 1525 {"add_slider", (PyCFunction)form_add_slider, METH_OLDARGS}, 1526 {"add_positioner", (PyCFunction)form_add_positioner, METH_OLDARGS}, 1527 {"add_valslider", (PyCFunction)form_add_valslider, METH_OLDARGS}, 1528 {"add_dial", (PyCFunction)form_add_dial, METH_OLDARGS}, 1529 {"add_counter", (PyCFunction)form_add_counter, METH_OLDARGS}, 1530 {"add_box", (PyCFunction)form_add_box, METH_OLDARGS}, 1531 {"add_clock", (PyCFunction)form_add_clock, METH_OLDARGS}, 1532 {"add_choice", (PyCFunction)form_add_choice, METH_OLDARGS}, 1533 {"add_browser", (PyCFunction)form_add_browser, METH_OLDARGS}, 1534 {"add_input", (PyCFunction)form_add_input, METH_OLDARGS}, 1535 {"add_timer", (PyCFunction)form_add_timer, METH_OLDARGS}, 1536 {"add_text", (PyCFunction)form_add_text, METH_OLDARGS}, 1537 {NULL, NULL} /* sentinel */ 1538 1538 }; 1539 1539 … … 1541 1541 form_dealloc(formobject *f) 1542 1542 { 1543 1544 1545 1546 1547 1543 releaseobjects(f->ob_form); 1544 if (f->ob_form->visible) 1545 fl_hide_form(f->ob_form); 1546 fl_free_form(f->ob_form); 1547 PyObject_Del(f); 1548 1548 } 1549 1549 … … 1551 1551 1552 1552 static struct memberlist form_memberlist[] = { 1553 {"window", T_LONG, OFF(window),RO},1554 {"w", T_FLOAT,OFF(w)},1555 {"h", T_FLOAT,OFF(h)},1556 {"x", T_FLOAT, OFF(x),RO},1557 {"y", T_FLOAT, OFF(y),RO},1558 {"deactivated", T_INT,OFF(deactivated)},1559 {"visible", T_INT, OFF(visible),RO},1560 {"frozen", T_INT, OFF(frozen),RO},1561 {"doublebuf", T_INT,OFF(doublebuf)},1562 {NULL}/* Sentinel */1553 {"window", T_LONG, OFF(window), RO}, 1554 {"w", T_FLOAT, OFF(w)}, 1555 {"h", T_FLOAT, OFF(h)}, 1556 {"x", T_FLOAT, OFF(x), RO}, 1557 {"y", T_FLOAT, OFF(y), RO}, 1558 {"deactivated", T_INT, OFF(deactivated)}, 1559 {"visible", T_INT, OFF(visible), RO}, 1560 {"frozen", T_INT, OFF(frozen), RO}, 1561 {"doublebuf", T_INT, OFF(doublebuf)}, 1562 {NULL} /* Sentinel */ 1563 1563 }; 1564 1564 … … 1568 1568 form_getattr(formobject *f, char *name) 1569 1569 { 1570 1571 1572 1573 1574 1575 1576 1570 PyObject *meth; 1571 1572 meth = Py_FindMethod(form_methods, (PyObject *)f, name); 1573 if (meth != NULL) 1574 return meth; 1575 PyErr_Clear(); 1576 return PyMember_Get((char *)f->ob_form, form_memberlist, name); 1577 1577 } 1578 1578 … … 1580 1580 form_setattr(formobject *f, char *name, PyObject *v) 1581 1581 { 1582 1583 1584 1585 1586 1587 1588 1582 if (v == NULL) { 1583 PyErr_SetString(PyExc_TypeError, 1584 "can't delete form attributes"); 1585 return -1; 1586 } 1587 1588 return PyMember_Set((char *)f->ob_form, form_memberlist, name, v); 1589 1589 } 1590 1590 … … 1592 1592 form_repr(formobject *f) 1593 1593 { 1594 1595 1596 1597 1594 char buf[100]; 1595 PyOS_snprintf(buf, sizeof(buf), "<FORMS_form at %p, window=%ld>", 1596 f, f->ob_form->window); 1597 return PyString_FromString(buf); 1598 1598 } 1599 1599 1600 1600 static PyTypeObject Formtype = { 1601 1602 0,/*ob_size*/1603 "fl.FORMS_form",/*tp_name*/1604 sizeof(formobject),/*tp_size*/1605 0,/*tp_itemsize*/1606 1607 (destructor)form_dealloc,/*tp_dealloc*/1608 0,/*tp_print*/1609 (getattrfunc)form_getattr,/*tp_getattr*/1610 (setattrfunc)form_setattr,/*tp_setattr*/1611 0,/*tp_compare*/1612 (reprfunc)form_repr,/*tp_repr*/1601 PyObject_HEAD_INIT(&PyType_Type) 1602 0, /*ob_size*/ 1603 "fl.FORMS_form", /*tp_name*/ 1604 sizeof(formobject), /*tp_size*/ 1605 0, /*tp_itemsize*/ 1606 /* methods */ 1607 (destructor)form_dealloc, /*tp_dealloc*/ 1608 0, /*tp_print*/ 1609 (getattrfunc)form_getattr, /*tp_getattr*/ 1610 (setattrfunc)form_setattr, /*tp_setattr*/ 1611 0, /*tp_compare*/ 1612 (reprfunc)form_repr, /*tp_repr*/ 1613 1613 }; 1614 1614 … … 1616 1616 newformobject(FL_FORM *form) 1617 1617 { 1618 1619 1620 1621 1622 1623 1618 formobject *f; 1619 f = PyObject_New(formobject, &Formtype); 1620 if (f == NULL) 1621 return NULL; 1622 f->ob_form = form; 1623 return (PyObject *)f; 1624 1624 } 1625 1625 … … 1630 1630 forms_make_form(PyObject *dummy, PyObject *args) 1631 1631 { 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1632 int type; 1633 float w, h; 1634 FL_FORM *form; 1635 if (!PyArg_Parse(args, "(iff)", &type, &w, &h)) 1636 return NULL; 1637 form = fl_bgn_form(type, w, h); 1638 if (form == NULL) { 1639 /* XXX Actually, cannot happen! */ 1640 PyErr_NoMemory(); 1641 return NULL; 1642 } 1643 fl_end_form(); 1644 return newformobject(form); 1645 1645 } 1646 1646 … … 1648 1648 forms_activate_all_forms(PyObject *f, PyObject *args) 1649 1649 { 1650 1651 1652 1650 fl_activate_all_forms(); 1651 Py_INCREF(Py_None); 1652 return Py_None; 1653 1653 } 1654 1654 … … 1656 1656 forms_deactivate_all_forms(PyObject *f, PyObject *args) 1657 1657 { 1658 1659 1660 1658 fl_deactivate_all_forms(); 1659 Py_INCREF(Py_None); 1660 return Py_None; 1661 1661 } 1662 1662 … … 1666 1666 forms_set_event_call_back(PyObject *dummy, PyObject *args) 1667 1667 { 1668 1669 1670 1671 1672 1673 1668 if (args == Py_None) 1669 args = NULL; 1670 my_event_callback = args; 1671 Py_XINCREF(args); 1672 Py_INCREF(Py_None); 1673 return Py_None; 1674 1674 } 1675 1675 … … 1677 1677 forms_do_or_check_forms(PyObject *dummy, FL_OBJECT *(*func)(void)) 1678 1678 { 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1679 FL_OBJECT *generic; 1680 genericobject *g; 1681 PyObject *arg, *res; 1682 1683 for (;;) { 1684 Py_BEGIN_ALLOW_THREADS 1685 generic = (*func)(); 1686 Py_END_ALLOW_THREADS 1687 if (generic == NULL) { 1688 Py_INCREF(Py_None); 1689 return Py_None; 1690 } 1691 if (generic == FL_EVENT) { 1692 int dev; 1693 short val; 1694 if (my_event_callback == NULL) 1695 return PyInt_FromLong(-1L); 1696 dev = fl_qread(&val); 1697 arg = Py_BuildValue("(ih)", dev, val); 1698 if (arg == NULL) 1699 return NULL; 1700 res = PyEval_CallObject(my_event_callback, arg); 1701 Py_XDECREF(res); 1702 Py_DECREF(arg); 1703 if (res == NULL) 1704 return NULL; /* Callback raised exception */ 1705 continue; 1706 } 1707 g = findgeneric(generic); 1708 if (g == NULL) { 1709 /* Object not known to us (some dialogs cause this) */ 1710 continue; /* Ignore it */ 1711 } 1712 if (g->ob_callback == NULL) { 1713 Py_INCREF(g); 1714 return ((PyObject *) g); 1715 } 1716 arg = PyTuple_Pack(2, (PyObject *)g, g->ob_callback_arg); 1717 if (arg == NULL) 1718 return NULL; 1719 res = PyEval_CallObject(g->ob_callback, arg); 1720 Py_XDECREF(res); 1721 Py_DECREF(arg); 1722 if (res == NULL) 1723 return NULL; /* Callback raised exception */ 1724 } 1725 1725 } 1726 1726 … … 1728 1728 forms_do_forms(PyObject *dummy) 1729 1729 { 1730 1730 return forms_do_or_check_forms(dummy, fl_do_forms); 1731 1731 } 1732 1732 … … 1734 1734 forms_check_forms(PyObject *dummy) 1735 1735 { 1736 1736 return forms_do_or_check_forms(dummy, fl_check_forms); 1737 1737 } 1738 1738 … … 1740 1740 forms_do_only_forms(PyObject *dummy) 1741 1741 { 1742 1742 return forms_do_or_check_forms(dummy, fl_do_only_forms); 1743 1743 } 1744 1744 … … 1746 1746 forms_check_only_forms(PyObject *dummy) 1747 1747 { 1748 1748 return forms_do_or_check_forms(dummy, fl_check_only_forms); 1749 1749 } 1750 1750 … … 1753 1753 fl_call(void (*func)(void)) 1754 1754 { 1755 1756 1757 1755 (*func)(); 1756 Py_INCREF(Py_None); 1757 return Py_None; 1758 1758 } 1759 1759 #endif … … 1762 1762 forms_set_graphics_mode(PyObject *dummy, PyObject *args) 1763 1763 { 1764 1765 1766 1767 1768 1769 1770 1764 int rgbmode, doublebuf; 1765 1766 if (!PyArg_Parse(args, "(ii)", &rgbmode, &doublebuf)) 1767 return NULL; 1768 fl_set_graphics_mode(rgbmode,doublebuf); 1769 Py_INCREF(Py_None); 1770 return Py_None; 1771 1771 } 1772 1772 … … 1774 1774 forms_get_rgbmode(PyObject *dummy, PyObject *args) 1775 1775 { 1776 1777 1778 1779 1780 1781 1782 1776 extern int fl_rgbmode; 1777 1778 if (args != NULL) { 1779 PyErr_BadArgument(); 1780 return NULL; 1781 } 1782 return PyInt_FromLong((long)fl_rgbmode); 1783 1783 } 1784 1784 … … 1786 1786 forms_show_errors(PyObject *dummy, PyObject *args) 1787 1787 { 1788 1789 1790 1791 1792 1793 1788 int show; 1789 if (!PyArg_Parse(args, "i", &show)) 1790 return NULL; 1791 fl_show_errors(show); 1792 Py_INCREF(Py_None); 1793 return Py_None; 1794 1794 } 1795 1795 … … 1797 1797 forms_set_font_name(PyObject *dummy, PyObject *args) 1798 1798 { 1799 1800 1801 1802 1803 1804 1805 1799 int numb; 1800 char *name; 1801 if (!PyArg_Parse(args, "(is)", &numb, &name)) 1802 return NULL; 1803 fl_set_font_name(numb, name); 1804 Py_INCREF(Py_None); 1805 return Py_None; 1806 1806 } 1807 1807 … … 1810 1810 forms_qdevice(PyObject *self, PyObject *args) 1811 1811 { 1812 1813 1814 1815 1816 1817 1812 short arg1; 1813 if (!PyArg_Parse(args, "h", &arg1)) 1814 return NULL; 1815 fl_qdevice(arg1); 1816 Py_INCREF(Py_None); 1817 return Py_None; 1818 1818 } 1819 1819 … … 1821 1821 forms_unqdevice(PyObject *self, PyObject *args) 1822 1822 { 1823 1824 1825 1826 1827 1828 1823 short arg1; 1824 if (!PyArg_Parse(args, "h", &arg1)) 1825 return NULL; 1826 fl_unqdevice(arg1); 1827 Py_INCREF(Py_None); 1828 return Py_None; 1829 1829 } 1830 1830 … … 1832 1832 forms_isqueued(PyObject *self, PyObject *args) 1833 1833 { 1834 1835 1836 1837 1838 1839 1840 1834 long retval; 1835 short arg1; 1836 if (!PyArg_Parse(args, "h", &arg1)) 1837 return NULL; 1838 retval = fl_isqueued(arg1); 1839 1840 return PyInt_FromLong(retval); 1841 1841 } 1842 1842 … … 1844 1844 forms_qtest(PyObject *self, PyObject *args) 1845 1845 { 1846 1847 1848 1846 long retval; 1847 retval = fl_qtest(); 1848 return PyInt_FromLong(retval); 1849 1849 } 1850 1850 … … 1853 1853 forms_qread(PyObject *self, PyObject *args) 1854 1854 { 1855 1856 1857 1858 1859 1860 1855 int dev; 1856 short val; 1857 Py_BEGIN_ALLOW_THREADS 1858 dev = fl_qread(&val); 1859 Py_END_ALLOW_THREADS 1860 return Py_BuildValue("(ih)", dev, val); 1861 1861 } 1862 1862 … … 1864 1864 forms_qreset(PyObject *self) 1865 1865 { 1866 1867 1868 1866 fl_qreset(); 1867 Py_INCREF(Py_None); 1868 return Py_None; 1869 1869 } 1870 1870 … … 1872 1872 forms_qenter(PyObject *self, PyObject *args) 1873 1873 { 1874 1875 1876 1877 1878 1879 1874 short arg1, arg2; 1875 if (!PyArg_Parse(args, "(hh)", &arg1, &arg2)) 1876 return NULL; 1877 fl_qenter(arg1, arg2); 1878 Py_INCREF(Py_None); 1879 return Py_None; 1880 1880 } 1881 1881 … … 1883 1883 forms_color(PyObject *self, PyObject *args) 1884 1884 { 1885 1886 1887 1888 1889 1890 1891 1892 1885 int arg; 1886 1887 if (!PyArg_Parse(args, "i", &arg)) return NULL; 1888 1889 fl_color((short) arg); 1890 1891 Py_INCREF(Py_None); 1892 return Py_None; 1893 1893 } 1894 1894 … … 1896 1896 forms_mapcolor(PyObject *self, PyObject *args) 1897 1897 { 1898 1899 1900 1901 1902 1903 1904 1905 1906 1898 int arg0, arg1, arg2, arg3; 1899 1900 if (!PyArg_Parse(args, "(iiii)", &arg0, &arg1, &arg2, &arg3)) 1901 return NULL; 1902 1903 fl_mapcolor(arg0, (short) arg1, (short) arg2, (short) arg3); 1904 1905 Py_INCREF(Py_None); 1906 return Py_None; 1907 1907 } 1908 1908 … … 1910 1910 forms_getmcolor(PyObject *self, PyObject *args) 1911 1911 { 1912 1913 1914 1915 1916 1917 1918 1919 1912 int arg; 1913 short r, g, b; 1914 1915 if (!PyArg_Parse(args, "i", &arg)) return NULL; 1916 1917 fl_getmcolor(arg, &r, &g, &b); 1918 1919 return Py_BuildValue("(hhh)", r, g, b); 1920 1920 } 1921 1921 … … 1923 1923 forms_get_mouse(PyObject *self) 1924 1924 { 1925 1926 1927 1928 1929 1925 float x, y; 1926 1927 fl_get_mouse(&x, &y); 1928 1929 return Py_BuildValue("(ff)", x, y); 1930 1930 } 1931 1931 … … 1933 1933 forms_tie(PyObject *self, PyObject *args) 1934 1934 { 1935 1936 1937 1938 1939 1940 1935 short arg1, arg2, arg3; 1936 if (!PyArg_Parse(args, "(hhh)", &arg1, &arg2, &arg3)) 1937 return NULL; 1938 fl_tie(arg1, arg2, arg3); 1939 Py_INCREF(Py_None); 1940 return Py_None; 1941 1941 } 1942 1942 … … 1944 1944 forms_show_message(PyObject *f, PyObject *args) 1945 1945 { 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1946 char *a, *b, *c; 1947 1948 if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL; 1949 1950 Py_BEGIN_ALLOW_THREADS 1951 fl_show_message(a, b, c); 1952 Py_END_ALLOW_THREADS 1953 1954 Py_INCREF(Py_None); 1955 return Py_None; 1956 1956 } 1957 1957 … … 1959 1959 forms_show_choice(PyObject *f, PyObject *args) 1960 1960 { 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1961 char *m1, *m2, *m3, *b1, *b2, *b3; 1962 int nb; 1963 char *format; 1964 long rv; 1965 1966 if (args == NULL || !PyTuple_Check(args)) { 1967 PyErr_BadArgument(); 1968 return NULL; 1969 } 1970 nb = PyTuple_Size(args) - 3; 1971 if (nb <= 0) { 1972 PyErr_SetString(PyExc_TypeError, 1973 "need at least one button label"); 1974 return NULL; 1975 } 1976 if (PyInt_Check(PyTuple_GetItem(args, 3))) { 1977 PyErr_SetString(PyExc_TypeError, 1978 "'number-of-buttons' argument not needed"); 1979 return NULL; 1980 } 1981 switch (nb) { 1982 case 1: format = "(ssss)"; break; 1983 case 2: format = "(sssss)"; break; 1984 case 3: format = "(ssssss)"; break; 1985 default: 1986 PyErr_SetString(PyExc_TypeError, "too many button labels"); 1987 return NULL; 1988 } 1989 1990 if (!PyArg_Parse(args, format, &m1, &m2, &m3, &b1, &b2, &b3)) 1991 return NULL; 1992 1993 Py_BEGIN_ALLOW_THREADS 1994 rv = fl_show_choice(m1, m2, m3, nb, b1, b2, b3); 1995 Py_END_ALLOW_THREADS 1996 return PyInt_FromLong(rv); 1997 1997 } 1998 1998 … … 2000 2000 forms_show_question(PyObject *f, PyObject *args) 2001 2001 { 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2002 int ret; 2003 char *a, *b, *c; 2004 2005 if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL; 2006 2007 Py_BEGIN_ALLOW_THREADS 2008 ret = fl_show_question(a, b, c); 2009 Py_END_ALLOW_THREADS 2010 2011 return PyInt_FromLong((long) ret); 2012 2012 } 2013 2013 … … 2015 2015 forms_show_input(PyObject *f, PyObject *args) 2016 2016 { 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2017 char *str; 2018 char *a, *b; 2019 2020 if (!PyArg_Parse(args, "(ss)", &a, &b)) return NULL; 2021 2022 Py_BEGIN_ALLOW_THREADS 2023 str = fl_show_input(a, b); 2024 Py_END_ALLOW_THREADS 2025 2026 if (str == NULL) { 2027 Py_INCREF(Py_None); 2028 return Py_None; 2029 } 2030 return PyString_FromString(str); 2031 2031 } 2032 2032 … … 2034 2034 forms_file_selector(PyObject *f, PyObject *args) 2035 2035 { 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2036 char *str; 2037 char *a, *b, *c, *d; 2038 2039 if (!PyArg_Parse(args, "(ssss)", &a, &b, &c, &d)) return NULL; 2040 2041 Py_BEGIN_ALLOW_THREADS 2042 str = fl_show_file_selector(a, b, c, d); 2043 Py_END_ALLOW_THREADS 2044 2045 if (str == NULL) { 2046 Py_INCREF(Py_None); 2047 return Py_None; 2048 } 2049 return PyString_FromString(str); 2050 2050 } 2051 2051 … … 2054 2054 forms_file_selector_func(PyObject *args, char *(*func)(void)) 2055 2055 { 2056 2057 2058 2059 2060 2061 2062 2063 2064 2056 char *str; 2057 2058 str = (*func) (); 2059 2060 if (str == NULL) { 2061 Py_INCREF(Py_None); 2062 return Py_None; 2063 } 2064 return PyString_FromString(str); 2065 2065 } 2066 2066 … … 2068 2068 forms_get_directory(PyObject *f, PyObject *args) 2069 2069 { 2070 2070 return forms_file_selector_func(args, fl_get_directory); 2071 2071 } 2072 2072 … … 2074 2074 forms_get_pattern(PyObject *f, PyObject *args) 2075 2075 { 2076 2076 return forms_file_selector_func(args, fl_get_pattern); 2077 2077 } 2078 2078 … … 2080 2080 forms_get_filename(PyObject *f, PyObject *args) 2081 2081 { 2082 2082 return forms_file_selector_func(args, fl_get_filename); 2083 2083 } 2084 2084 2085 2085 static PyMethodDef forms_methods[] = { 2086 2086 /* adm */ 2087 {"make_form",forms_make_form, METH_OLDARGS},2088 {"activate_all_forms",forms_activate_all_forms, METH_OLDARGS},2089 2087 {"make_form", forms_make_form, METH_OLDARGS}, 2088 {"activate_all_forms", forms_activate_all_forms, METH_OLDARGS}, 2089 {"deactivate_all_forms",forms_deactivate_all_forms, METH_OLDARGS}, 2090 2090 /* gl support wrappers */ 2091 {"qdevice",forms_qdevice, METH_OLDARGS},2092 {"unqdevice",forms_unqdevice, METH_OLDARGS},2093 {"isqueued",forms_isqueued, METH_OLDARGS},2094 {"qtest",forms_qtest, METH_OLDARGS},2095 {"qread",forms_qread, METH_OLDARGS},2096 /* {"blkqread",forms_blkqread, METH_OLDARGS}, */2097 {"qreset",forms_qreset, METH_NOARGS},2098 {"qenter",forms_qenter, METH_OLDARGS},2099 {"get_mouse",forms_get_mouse, METH_NOARGS},2100 {"tie",forms_tie, METH_OLDARGS},2101 /* {"new_events",forms_new_events, METH_OLDARGS}, */2102 {"color",forms_color, METH_OLDARGS},2103 {"mapcolor",forms_mapcolor, METH_OLDARGS},2104 {"getmcolor",forms_getmcolor, METH_OLDARGS},2091 {"qdevice", forms_qdevice, METH_OLDARGS}, 2092 {"unqdevice", forms_unqdevice, METH_OLDARGS}, 2093 {"isqueued", forms_isqueued, METH_OLDARGS}, 2094 {"qtest", forms_qtest, METH_OLDARGS}, 2095 {"qread", forms_qread, METH_OLDARGS}, 2096 /* {"blkqread", forms_blkqread, METH_OLDARGS}, */ 2097 {"qreset", forms_qreset, METH_NOARGS}, 2098 {"qenter", forms_qenter, METH_OLDARGS}, 2099 {"get_mouse", forms_get_mouse, METH_NOARGS}, 2100 {"tie", forms_tie, METH_OLDARGS}, 2101 /* {"new_events", forms_new_events, METH_OLDARGS}, */ 2102 {"color", forms_color, METH_OLDARGS}, 2103 {"mapcolor", forms_mapcolor, METH_OLDARGS}, 2104 {"getmcolor", forms_getmcolor, METH_OLDARGS}, 2105 2105 /* interaction */ 2106 {"do_forms",forms_do_forms, METH_NOARGS},2107 {"do_only_forms",forms_do_only_forms, METH_NOARGS},2108 {"check_forms",forms_check_forms, METH_NOARGS},2109 {"check_only_forms",forms_check_only_forms, METH_NOARGS},2110 {"set_event_call_back",forms_set_event_call_back, METH_OLDARGS},2106 {"do_forms", forms_do_forms, METH_NOARGS}, 2107 {"do_only_forms", forms_do_only_forms, METH_NOARGS}, 2108 {"check_forms", forms_check_forms, METH_NOARGS}, 2109 {"check_only_forms", forms_check_only_forms, METH_NOARGS}, 2110 {"set_event_call_back", forms_set_event_call_back, METH_OLDARGS}, 2111 2111 /* goodies */ 2112 {"show_message",forms_show_message, METH_OLDARGS},2113 {"show_question",forms_show_question, METH_OLDARGS},2114 {"show_choice",forms_show_choice, METH_OLDARGS},2115 {"show_input",forms_show_input, METH_OLDARGS},2116 {"show_file_selector",forms_file_selector, METH_OLDARGS},2117 {"file_selector",forms_file_selector, METH_OLDARGS}, /* BW compat */2118 {"get_directory",forms_get_directory, METH_OLDARGS},2119 {"get_pattern",forms_get_pattern, METH_OLDARGS},2120 {"get_filename",forms_get_filename, METH_OLDARGS},2121 {"set_graphics_mode",forms_set_graphics_mode, METH_OLDARGS},2122 {"get_rgbmode",forms_get_rgbmode, METH_OLDARGS},2123 {"show_errors",forms_show_errors, METH_OLDARGS},2124 {"set_font_name",forms_set_font_name, METH_OLDARGS},2125 {NULL, NULL}/* sentinel */2112 {"show_message", forms_show_message, METH_OLDARGS}, 2113 {"show_question", forms_show_question, METH_OLDARGS}, 2114 {"show_choice", forms_show_choice, METH_OLDARGS}, 2115 {"show_input", forms_show_input, METH_OLDARGS}, 2116 {"show_file_selector", forms_file_selector, METH_OLDARGS}, 2117 {"file_selector", forms_file_selector, METH_OLDARGS}, /* BW compat */ 2118 {"get_directory", forms_get_directory, METH_OLDARGS}, 2119 {"get_pattern", forms_get_pattern, METH_OLDARGS}, 2120 {"get_filename", forms_get_filename, METH_OLDARGS}, 2121 {"set_graphics_mode", forms_set_graphics_mode, METH_OLDARGS}, 2122 {"get_rgbmode", forms_get_rgbmode, METH_OLDARGS}, 2123 {"show_errors", forms_show_errors, METH_OLDARGS}, 2124 {"set_font_name", forms_set_font_name, METH_OLDARGS}, 2125 {NULL, NULL} /* sentinel */ 2126 2126 }; 2127 2127 … … 2129 2129 initfl(void) 2130 2130 { 2131 2131 2132 2132 if (PyErr_WarnPy3k("the fl module has been removed in " 2133 2133 "Python 3.0", 2) < 0) 2134 return; 2135 2136 Py_InitModule("fl", forms_methods); 2137 if (m == NULL) 2134 2138 return; 2135 2136 Py_InitModule("fl", forms_methods); 2137 if (m == NULL) 2138 return; 2139 foreground(); 2140 fl_init(); 2141 } 2142 2143 2144 2139 foreground(); 2140 fl_init(); 2141 } 2142 2143 2144
Note:
See TracChangeset
for help on using the changeset viewer.