static PyObject * get_browser_line(genericobject *g, PyObject *args) { int i; char *str; if (!PyArg_Parse(args, "i", &i)) return NULL; str = fl_get_browser_line (g->ob_generic, i); if (str == NULL) { Py_INCREF(Py_None); return Py_None; } return PyString_FromString (str); }
SuperSPEC * spec_to_superspec( FL_OBJECT * obj ) { SuperSPEC *ssp; int i; int n; if ( ! obj->u_vdata ) { obj->u_vdata = ssp = fl_calloc( 1, sizeof *ssp ); ssp->content = NULL; ssp->shortcut = NULL; ssp->callback = NULL; ssp->mode = NULL; ssp->mval = NULL; ssp->misc_char = NULL; ssp->new_menuapi = 0; ssp->nlines = 0; } else ssp = obj->u_vdata; if ( obj->objclass == FL_BROWSER ) { FLI_BROWSER_SPEC *sp = obj->spec; ssp->h_pref = sp->h_pref; ssp->v_pref = sp->v_pref; for ( i = 1; i <= ssp->nlines; i++ ) fl_free( ssp->content[ i ] ); n = ssp->nlines = fl_get_browser_maxline( obj ); ssp->content = fl_realloc( ssp->content, ( n + 1 ) * sizeof *ssp->content ); for ( i = 1; i <= n; i++ ) ssp->content[ i ] = fl_strdup( fl_get_browser_line( obj, i ) ); } else if ( obj->objclass == FL_CHOICE ) { FLI_CHOICE_SPEC *sp = obj->spec; for ( i = 1; i <= ssp->nlines; i++ ) { fl_free( ssp->content[ i ] ); fl_free( ssp->shortcut[ i ] ); } n = ssp->nlines = sp->numitems; ssp->content = fl_realloc( ssp->content, ( n + 1 ) * sizeof *ssp->content ); ssp->shortcut = fl_realloc( ssp->shortcut, ( n + 1 ) * sizeof *ssp->shortcut ); ssp->mode = fl_realloc( ssp->mode, ( n + 1 ) * sizeof *ssp->mode ); ssp->align = sp->align; ssp->int_val = sp->val; for ( i = 1; i <= n; i++ ) { ssp->content[ i ] = fl_strdup( fl_get_choice_item_text( obj, i ) ); if ( sp->shortcut[ i ] ) ssp->shortcut[ i ] = fl_strdup( sp->shortcut[ i ] ); else ssp->shortcut[ i ] = NULL; } memcpy( ssp->mode, sp->mode, ( n + 1 ) * sizeof *ssp->mode ); } else if ( obj->objclass == FL_MENU ) { FLI_MENU_SPEC *sp = obj->spec; for ( i = 1; i <= ssp->nlines; i++ ) { fl_free( ssp->content[ i ] ); fl_free( ssp->shortcut[ i ] ); fl_free( ssp->callback[ i ] ); } n = ssp->nlines = sp->numitems; ssp->content = fl_realloc( ssp->content, ( n + 1 ) * sizeof *ssp->content ); ssp->shortcut = fl_realloc( ssp->shortcut, ( n + 1 ) * sizeof *ssp->shortcut ); ssp->callback = fl_realloc( ssp->callback, ( n + 1 ) * sizeof *ssp->callback ); ssp->mode = fl_realloc( ssp->mode, ( n + 1 ) * sizeof *ssp->mode ); ssp->mval = fl_realloc( ssp->mval, ( n + 1 ) * sizeof *ssp->mval ); for ( i = 1; i <= n; i++ ) { ssp->content[ i ] = fl_strdup( fl_get_menu_item_text( obj, sp->mval[ i ] ) ); if ( sp->shortcut[ i ] ) ssp->shortcut[ i ] = fl_strdup( sp->shortcut[ i ] ); else ssp->shortcut[ i ] = NULL; if ( sp->cb[ i ] ) ssp->callback[ i ] = fl_strdup( ( char * ) sp->cb[ i ] ); else ssp->callback[ i ] = NULL; } memcpy( ssp->mode, sp->mode, ( n + 1 ) * sizeof *ssp->mode ); memcpy( ssp->mval, sp->mval, ( n + 1 ) * sizeof *ssp->mval ); } else if ( obj->objclass == FL_SLIDER || obj->objclass == FL_VALSLIDER || obj->objclass == FL_THUMBWHEEL ) { FLI_SLIDER_SPEC *sp = obj->spec; ssp->val = sp->val; ssp->min = sp->min; ssp->max = sp->max; ssp->step = sp->step; ssp->prec = sp->prec; ssp->ldelta = sp->ldelta; ssp->rdelta = sp->rdelta; ssp->slsize = sp->slsize; } else if ( ISBUTTON( obj->objclass ) || obj->objclass == FL_PIXMAP || obj->objclass == FL_BITMAP ) { FL_BUTTON_SPEC *sp = obj->spec; ssp->mbuttons = 0; for ( i = 0; i < 5; i++ ) if ( sp->react_to[ i ] ) ssp->mbuttons |= 1 << i; ssp->int_val = sp->val; } else if ( obj->objclass == FL_POSITIONER ) { FLI_POSITIONER_SPEC *sp = obj->spec; ssp->xstep = sp->xstep; ssp->ystep = sp->ystep; ssp->xmin = sp->xmin; ssp->xmax = sp->xmax; ssp->xval = sp->xval; ssp->ymin = sp->ymin; ssp->ymax = sp->ymax; ssp->yval = sp->yval; } else if ( obj->objclass == FL_COUNTER ) { FLI_COUNTER_SPEC *sp = obj->spec; ssp->val = sp->val; ssp->lstep = sp->lstep; ssp->sstep = sp->sstep; ssp->min = sp->min; ssp->max = sp->max; ssp->prec = sp->prec; } else if ( obj->objclass == FL_DIAL ) { FLI_DIAL_SPEC *sp = obj->spec; ssp->min = sp->min; ssp->max = sp->max; ssp->val = sp->val; ssp->step = sp->step; ssp->thetai = sp->thetai; ssp->thetaf = sp->thetaf; ssp->direction = sp->direction; } else if ( obj->objclass == FL_XYPLOT ) { FLI_XYPLOT_SPEC *sp = obj->spec; ssp->xmajor = sp->xmajor; ssp->xminor = sp->xminor; ssp->ymajor = sp->ymajor; ssp->yminor = sp->yminor; ssp->xscale = sp->xscale; ssp->yscale = sp->yscale; ssp->xgrid = sp->xgrid; ssp->ygrid = sp->ygrid; ssp->grid_linestyle = sp->grid_linestyle; ssp->xbase = sp->xbase; ssp->ybase = sp->ybase; ssp->mark_active = sp->mark_active; } else if ( obj->objclass == FL_SCROLLBAR ) { FLI_SCROLLBAR_SPEC *scbsp = obj->spec; FLI_SLIDER_SPEC *sp = scbsp->slider->spec; ssp->val = sp->val; ssp->min = sp->min; ssp->max = sp->max; ssp->prec = sp->prec; ssp->step = sp->step; ssp->slsize = sp->slsize; ssp->ldelta = sp->ldelta; ssp->rdelta = sp->rdelta; } else if ( obj->objclass == FL_SPINNER ) { FLI_SPINNER_SPEC *sp = obj->spec; ssp->val = fl_get_spinner_value( obj ); fl_get_spinner_bounds( obj, &ssp->min, &ssp->max ); ssp->step = fl_get_spinner_step( obj ); ssp->prec = fl_get_spinner_precision( obj ); ssp->orient = sp->orient; } return ssp; }