FD_sensing_form *create_form_sensing_form(void)
{
  FL_OBJECT *obj;
  FD_sensing_form *fdui = (FD_sensing_form *) fl_calloc(1, sizeof(*fdui));

  fdui->sensing_form = fl_bgn_form(FL_NO_BOX, 620, 600);
  obj = fl_add_box(FL_UP_BOX,0,0,620,600,"");
  fdui->spec_SN1 = obj = fl_add_xyplot(FL_IMPULSE_XYPLOT,70,50,500,100,"spectrum_plot_SN1");
  fl_set_object_color(obj,FL_BLACK,FL_BLUE);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fdui->spec_SN2 = obj = fl_add_xyplot(FL_IMPULSE_XYPLOT,70,180,500,100,"spectrum_plot_SN2");
  fl_set_object_color(obj,FL_BLACK,FL_BLUE);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fdui->spec_SN3 = obj = fl_add_xyplot(FL_IMPULSE_XYPLOT,70,310,500,100,"spectrum_plot_SN3");
  fl_set_object_color(obj,FL_BLACK,FL_BLUE);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fdui->Secondary_Network_frequencies = obj = fl_add_xyplot(FL_IMPULSE_XYPLOT,70,460,500,100,"Secondary_Network_frequencies");
  fl_set_object_color(obj,FL_BLACK,FL_GREEN);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_end_form();

  fdui->sensing_form->fdui = fdui;

  return fdui;
}
Beispiel #2
0
static void
create_it( void )
{
    FL_OBJECT *text;

    if ( tip )
        return;

    tip              = fl_calloc( 1, sizeof *tip );
    tip->fntstyle    = FL_NORMAL_STYLE;
    tip->fntsize     = FL_DEFAULT_SIZE;
    tip->boxtype     = FL_BORDER_BOX;
    tip->lalign      = fl_to_inside_lalign( FL_ALIGN_LEFT );
    tip->textcolor   = FL_BLACK;
    tip->background  = FL_YELLOW;

    tip->tooltipper  = fl_bgn_form( FL_NO_BOX, 5, 5 );

    tip->text = text = fl_add_box( tip->boxtype, 0, 0, 5, 5, "" );
    fl_set_object_bw( text, -1 );
    fl_set_object_lstyle( text, tip->fntstyle );
    fl_set_object_lsize( text, tip->fntsize );
    fl_set_object_lcolor( text, tip->textcolor );
    fl_set_object_lalign( text, tip->lalign );
    fl_set_object_color( text, tip->background, tip->background );

    fl_end_form( );
}
Beispiel #3
0
static FD_input *
create_input( const char * str1,
              const char * defstr )
{
    FD_input *fdui = fl_calloc( 1, sizeof *fdui );
    int oldy = fli_inverted_y;
    int oldu = fl_get_coordunit( );

    fli_inverted_y = 0;
    fl_set_coordunit( FL_COORD_PIXEL );

    fdui->form = fl_bgn_form( FL_FLAT_BOX, 460, 130 );

    fdui->input = fl_add_input( FL_NORMAL_INPUT, 30, 50, 400, 30, str1 );
    fl_set_input( fdui->input, defstr );

    fdui->but = fl_add_button( FL_RETURN_BUTTON, 185, 94, 90, 27, "OK" );
    fli_parse_goodies_label( fdui->but, FLOKLabel );

    fl_set_form_hotobject( fdui->form, fdui->but );

    fl_end_form( );

    fli_handle_goodie_font( fdui->but, fdui->input );

    fl_register_raw_callback( fdui->form, FL_ALL_EVENT,
                              fli_goodies_preemptive );
    fl_set_form_atclose( fdui->form, fl_goodies_atclose, fdui->but );

    fli_inverted_y = oldy;
    fl_set_coordunit( oldu );

    return fdui;
}
Beispiel #4
0
FD_landmin *create_form_landmin(void)
{
  FL_OBJECT *obj;
  FD_landmin *fdui = (FD_landmin *) fl_calloc(1, sizeof(*fdui));

  fdui->landmin = fl_bgn_form(FL_NO_BOX, 330, 280);
  obj = fl_add_box(FL_UP_BOX,0,0,330,280,"");
  obj = fl_add_text(FL_NORMAL_TEXT,10,10,70,30,"Connect to :");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_text(FL_NORMAL_TEXT,10,50,90,30,"Disconect from:");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_button(FL_NORMAL_BUTTON,60,250,220,20,"Quit");
    fl_set_object_callback(obj,cb_land_quitb,0);
  obj = fl_add_clock(FL_DIGITAL_CLOCK,140,225,70,20,"");
    fl_set_object_color(obj,FL_INACTIVE,FL_CYAN);
  fdui->host_listOB = obj = fl_add_browser(FL_NORMAL_BROWSER,40,100,270,120,"Connected to:");
    fl_set_object_color(obj,FL_WHITE,FL_YELLOW);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_object_callback(obj,cb_landseld_hst,0);
  fdui->landnhOB = obj = fl_add_choice(FL_NORMAL_CHOICE2,110,10,200,30,"");
    fl_set_object_callback(obj,cb_land_nh,0);
   fl_set_choice_entries(obj, fdchoice_0);
   fl_set_choice(obj,1);
  fdui->landdhOB = obj = fl_add_choice(FL_NORMAL_CHOICE2,110,50,200,30,"");
    fl_set_object_callback(obj,cb_land_dh,0);
   fl_set_choice_entries(obj, fdchoice_1);
   fl_set_choice(obj,1);
  fl_end_form();

  fdui->landmin->fdui = fdui;

  return fdui;
}
Beispiel #5
0
static void
init_cursors( void )
{
    static int ok;
    CurStruct *c;
    static char c_bits[ ] = { 0x00 };

    if ( ok )
        return;

    ok = 1;

    if ( ! cursors )
    {
        cursors = fl_calloc( MAX_CURSORS, sizeof *c );
        memcpy( cursors, prebuilt, sizeof prebuilt );
    }

    for ( c = cursors; c->name; c++ )
        c->cur[ c->ncursor++ ] = XCreateFontCursor( flx->display, c->name );

    /* Create an invisible cursor */

    add_cursor( FL_INVISIBLE_CURSOR,
                create_bitmap_cursor( c_bits, c_bits, 1, 1, 0, 0 ) );

    /* Add the default cursor     */

    add_cursor( FL_DEFAULT_CURSOR,
                XCreateFontCursor( flx->display, fl_default_curname ) );
}
Beispiel #6
0
FD_chart_window *create_form_chart_window(void)
{
  FL_OBJECT *obj;
  FD_chart_window *fdui = (FD_chart_window *) fl_calloc(1, sizeof(*fdui));

  fdui->chart_window = fl_bgn_form(FL_NO_BOX, 570, 480);
  obj = fl_add_box(FL_UP_BOX,0,0,570,480,"Population Statistics");
    fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->max_mass = obj = fl_add_chart(FL_BAR_CHART,10,40,140,120,"Bug Maximum Masses");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->plant_eff = obj = fl_add_chart(FL_BAR_CHART,150,40,140,120,"Bug Plant Efficiency");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->attack = obj = fl_add_chart(FL_BAR_CHART,290,40,140,120,"Bug Attack Capability");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->color1 = obj = fl_add_chart(FL_BAR_CHART,430,40,130,120,"Bug Color 1");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->color2 = obj = fl_add_chart(FL_BAR_CHART,10,180,140,130,"Bug Color 2");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->breeding_age = obj = fl_add_chart(FL_BAR_CHART,150,180,140,130,"Bug Minimum Breeding Age");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->breeding_energy = obj = fl_add_chart(FL_BAR_CHART,290,180,140,130,"Bug Minimum Breeding Energy");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->population = obj = fl_add_chart(FL_LINE_CHART,430,180,130,130,"Global Population");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->energy = obj = fl_add_chart(FL_BAR_CHART,10,330,140,130,"Bug Energy");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->mass = obj = fl_add_chart(FL_BAR_CHART,150,330,140,130,"Bug Mass");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ok = obj = fl_add_button(FL_RETURN_BUTTON,460,370,80,30,"OK");
  fdui->metabolism = obj = fl_add_chart(FL_BAR_CHART,290,330,140,130,"Bug Metabolism");
    fl_set_object_boxtype(obj,FL_SHADOW_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fl_end_form();

  fdui->chart_window->fdui = fdui;

  return fdui;
}
Beispiel #7
0
FL_OBJECT *
fl_create_generic_button( int          objclass,
                          int          type,
                          FL_Coord     x,
                          FL_Coord     y,
                          FL_Coord     w,
                          FL_Coord     h,
                          const char * label )
{
    FL_OBJECT *obj;
    FL_BUTTON_STRUCT *sp;
    int i;

    obj = fl_make_object( objclass, type, x, y, w, h, label, handle_button );
    if ( type == FL_RADIO_BUTTON )
        obj->radio = 1;

    if ( type == FL_RETURN_BUTTON || type == FL_HIDDEN_RET_BUTTON )
        fl_set_object_shortcut( obj, "^M", 0 );

    if ( type == FL_HIDDEN_BUTTON || type == FL_HIDDEN_RET_BUTTON )
        obj->boxtype = FL_NO_BOX;

    if ( obj->type == FL_TOUCH_BUTTON )
    {
        obj->want_update = 1;
        obj->how_return = FL_RETURN_CHANGED;
    }

    sp = obj->spec = fl_calloc( 1, sizeof *sp );

    sp->event     = FL_DRAW;
    sp->is_pushed = 0;
    sp->pixmap    = sp->mask = sp->focus_pixmap = sp->focus_mask = None;
    sp->cspecv    = NULL;
    sp-> filename = sp->focus_filename = NULL;
    sp->is_pushed = 0;
    sp->mousebut  = 0;

    /* Per default a button (unfortunately) reacts to all mouse buttons */

    for ( i = 0; i < 5; i++ )
        sp->react_to[ i ] = 1;

    if ( fli_cntl.buttonLabelSize )
        obj->lsize = fli_cntl.buttonLabelSize;

    return obj;
}
FD_sens_sensor *create_form_sens_sensor(void)
{
  FL_OBJECT *obj;
  FD_sens_sensor *fdui = (FD_sens_sensor *) fl_calloc(1, sizeof(*fdui));

  fdui->sens_sensor = fl_bgn_form(FL_NO_BOX, 940, 280);
  obj = fl_add_box(FL_UP_BOX,0,0,940,280,"");
  fdui->local_sensing_results = obj = fl_add_xyplot(FL_IMPULSE_XYPLOT,30,30,880,210,"Local Sensing Results");
  fl_set_object_color(obj,FL_BLACK,FL_BLUE);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_end_form();

  fdui->sens_sensor->fdui = fdui;

  return fdui;
}
FD_Secondary_Network_frequencies *create_form_Secondary_Network_frequencies(void)
{
  FL_OBJECT *obj;
  FD_Secondary_Network_frequencies *fdui = (FD_Secondary_Network_frequencies *) fl_calloc(1, sizeof(*fdui));

  fdui->Secondary_Network_frequencies = fl_bgn_form(FL_NO_BOX, 620, 200);
  obj = fl_add_box(FL_UP_BOX,0,0,620,200,"");
  fdui->Selected_frequencies = obj = fl_add_xyplot(FL_IMPULSE_XYPLOT,70,50,500,100,"Selected_frequencies");
  fl_set_object_color(obj,FL_BLACK,FL_GREEN);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_end_form();

  fdui->Secondary_Network_frequencies->fdui = fdui;

  return fdui;
}
FD_splash_frm *create_form_splash_frm(void)
{
  FL_OBJECT *obj;
  FD_splash_frm *fdui = (FD_splash_frm *) fl_calloc(1, sizeof(*fdui));

  fdui->splash_frm = fl_bgn_form(FL_NO_BOX, 390, 280);
  obj = fl_add_box(FL_FLAT_BOX,0,0,390,280,"");
  obj = fl_add_pixmap(FL_NORMAL_PIXMAP,40,20,310,100,"");
  obj = fl_add_text(FL_NORMAL_TEXT,70,150,80,30,"text");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fl_end_form();

  fdui->splash_frm->fdui = fdui;

  return fdui;
}
Beispiel #11
0
FD_unCeas *create_form_unCeas(void)
{
  FL_OBJECT *obj;
  FD_unCeas *fdui = (FD_unCeas *) fl_calloc(1, sizeof(*fdui));

  fdui->unCeas = fl_bgn_form(FL_NO_BOX, 140, 190);
  obj = fl_add_box(FL_UP_BOX,0,0,140,190,"");
  fdui->retOB = obj = fl_add_button(FL_NORMAL_BUTTON,15,150,110,30,"Return");
    fl_set_object_callback(obj,unc_ret_cb,0);
  obj = fl_add_clock(FL_ANALOG_CLOCK,5,10,130,130,"");
    fl_set_object_color(obj,FL_INACTIVE,FL_WHITE);
  fl_end_form();

  fdui->unCeas->fdui = fdui;

  return fdui;
}
Beispiel #12
0
FD_mainWindow *create_form_mainWindow(void)
{
  FL_OBJECT *obj;
  FD_mainWindow *fdui = (FD_mainWindow *) fl_calloc(1, sizeof(*fdui));

  fdui->mainWindow = fl_bgn_form(FL_NO_BOX, 550, 490);
  obj = fl_add_box(FL_UP_BOX,0,0,550,490,"");
  fdui->mainCanvas = obj = fl_add_canvas(FL_NORMAL_CANVAS,10,40,510,420,"");
    fl_set_object_gravity(obj, FL_NorthWest, FL_SouthEast);
  fdui->scroll_h = obj = fl_add_scrollbar(FL_HOR_THIN_SCROLLBAR,10,465,510,20,"");
    fl_set_object_boxtype(obj,FL_DOWN_BOX);
    fl_set_object_gravity(obj, FL_SouthWest, FL_SouthEast);
    fl_set_scrollbar_step(obj, 0.1);
    fl_set_scrollbar_increment(obj, 0.1, 0.1);
  fdui->scroll_v = obj = fl_add_scrollbar(FL_VERT_THIN_SCROLLBAR,525,40,20,420,"");
    fl_set_object_boxtype(obj,FL_DOWN_BOX);
    fl_set_object_gravity(obj, FL_NorthEast, FL_SouthEast);
    fl_set_scrollbar_step(obj, 0.1);
    fl_set_scrollbar_increment(obj, 0.1, 0.1);
  fdui->pause = obj = fl_add_button(FL_NORMAL_BUTTON,410,5,80,30,"Pause");
    fl_set_button_shortcut(obj,"Pp",1);
    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
  fdui->step = obj = fl_add_button(FL_NORMAL_BUTTON,320,5,80,30,"Step (spc)");
    fl_set_button_shortcut(obj," ",1);
    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
  fdui->add_food = obj = fl_add_button(FL_NORMAL_BUTTON,140,5,80,30,"More Food (+)");
    fl_set_button_shortcut(obj,"+",1);
    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
  fdui->remove_food = obj = fl_add_button(FL_NORMAL_BUTTON,230,5,80,30,"Less Food (-)");
    fl_set_button_shortcut(obj,"-",1);
    fl_set_object_gravity(obj, FL_SouthEast, FL_SouthEast);
  fdui->file_menu = obj = fl_add_menu(FL_PULLDOWN_MENU,10,10,50,20,"File");
    fl_set_object_shortcut(obj,"Ff",1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT);
    fl_set_menu_entries(obj, fdmenu_file_menu_1);
  fdui->other_menu = obj = fl_add_menu(FL_PULLDOWN_MENU,60,10,60,20,"Other");
    fl_set_object_shortcut(obj,"Oo",1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT);
    fl_set_menu_entries(obj, fdmenu_other_menu_2);
  fl_end_form();

  fdui->mainWindow->fdui = fdui;

  return fdui;
}
FD_config_dialog *create_form_config_dialog(void)
{
  FL_OBJECT *obj;
  FD_config_dialog *fdui = (FD_config_dialog *) fl_calloc(1, sizeof(*fdui));

  fdui->config_dialog = fl_bgn_form(FL_NO_BOX, 410, 120);
  obj = fl_add_box(FL_UP_BOX,0,0,410,120,"");
  fdui->cancel_btn = obj = fl_add_button(FL_NORMAL_BUTTON,80,75,100,30,"Cancel");
    fl_set_object_callback(obj,get_dir_callback,-1);
  fdui->ok_btn = obj = fl_add_button(FL_RETURN_BUTTON,225,75,100,30,"OK");
    fl_set_object_callback(obj,get_dir_callback,0);
  fdui->dir_input = obj = fl_add_input(FL_NORMAL_INPUT,80,30,300,30,"Directory");
  fl_end_form();

  fdui->config_dialog->fdui = fdui;

  return fdui;
}
Beispiel #14
0
FD_neural_net_plot *create_form_neural_net_plot(void)
{
  FL_OBJECT *obj;
  FD_neural_net_plot *fdui = (FD_neural_net_plot *) fl_calloc(1, sizeof(*fdui));

  fdui->neural_net_plot = fl_bgn_form(FL_NO_BOX, 480, 370);
  fdui->mainWindow = obj = fl_add_box(FL_UP_BOX,0,0,480,370,"Neural Net Plot");
    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->mainCanvas = obj = fl_add_canvas(FL_NORMAL_CANVAS,15,20,450,300,"");
  fdui->ok = obj = fl_add_button(FL_RETURN_BUTTON,370,330,90,30,"OK");
    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_end_form();

  fdui->neural_net_plot->fdui = fdui;

  return fdui;
}
Beispiel #15
0
FD_otg *create_form_otg(void)
{
  FL_OBJECT *obj;
  FD_otg *fdui = (FD_otg *) fl_calloc(1, sizeof(*fdui));

  fdui->otg = fl_bgn_form(FL_NO_BOX, 550, 550);
  obj = fl_add_box(FL_UP_BOX,0,0,900,700,"");
  fdui->owd = fl_add_xyplot(FL_NORMAL_XYPLOT,50,30,450,190,"Delay(ms)"); 
  fl_set_object_color(fdui->owd,FL_BLACK,FL_YELLOW);
  fdui->throughput = fl_add_xyplot(FL_NORMAL_XYPLOT,50,300,450,190,"Throughput(Kbit/s)");
  fl_set_object_color(fdui->throughput,FL_BLACK,FL_YELLOW);
   
  
   obj = fl_add_button(FL_NORMAL_BUTTON,250,510,50,30,"Exit");
   fl_set_object_callback(obj, exit_cb, 0);
	 fdui->loss_ratio=fl_add_text(FL_NORMAL_TEXT,5,510,220,20,"NB Loss pkts");
	 fdui->simu_time=fl_add_text(FL_NORMAL_TEXT,370,510,250,30,"Simulation Time");


  fl_end_form();
  fdui->otg->fdui = fdui;
  return fdui;   
}
Beispiel #16
0
FL_OBJECT *
fl_create_formbrowser( int          type,
                       FL_Coord     x,
                       FL_Coord     y,
                       FL_Coord     w,
                       FL_Coord     h,
                       const char * label )
{
    FL_OBJECT *ob;
    FLI_FORMBROWSER_SPEC *sp;
    int absbw, oldu = fl_get_coordunit( );
    int D;

    ob = fl_make_object( FL_FORMBROWSER, type, x, y, w, h, label,
                         handle_formbrowser );
    fl_set_coordunit( FL_COORD_PIXEL );
    ob->boxtype    = FL_FORMBROWSER_BOXTYPE;
    ob->align      = FL_FORMBROWSER_ALIGN;
    ob->col1       = FL_FORMBROWSER_COL1;
    ob->col2       = FL_BLACK;
    ob->set_return = set_formbrowser_return;
    ob->spec       = sp = fl_calloc( 1, sizeof *sp );

    absbw = FL_abs( ob->bw );

    sp->form   = NULL;
    sp->parent = ob;
    sp->scroll = FL_SMOOTH_SCROLL;
    sp->vw_def = sp->hh_def = D = fli_get_default_scrollbarsize( ob );
    sp->canvas = fl_create_canvas( FL_CANVAS,
                                   ob->x + absbw, ob->y + absbw,
                                   ob->w - 2 * absbw - sp->vw_def,
                                   ob->h - 2 * absbw - sp->hh_def,
                                   label );

    sp->canvas->u_vdata = sp;

    fl_modify_canvas_prop( sp->canvas, NULL, NULL, canvas_cleanup );

    fl_set_object_color( sp->canvas, ob->col1, ob->col2 );
    fl_set_object_bw( sp->canvas, ob->bw );

    fl_set_object_boxtype( sp->canvas,
                           fli_boxtype2frametype( ob->boxtype ) );
    fl_add_canvas_handler( sp->canvas, Expose, canvas_handler, NULL );

    sp->v_pref = sp->h_pref = FL_AUTO;

    sp->hsl = fl_create_scrollbar( FL_HOR_THIN_SCROLLBAR, ob->x,
                                   y + h - D, w - D, D, "" );
    fl_set_scrollbar_value( sp->hsl, sp->old_hval = 0.0 );
    fl_set_object_boxtype( sp->hsl, ob->boxtype );
    sp->hsl->visible = sp->h_pref == FL_ON;
    sp->hsl->resize = FL_RESIZE_X;
    fl_set_object_callback( sp->hsl, hcb, 0 );

    sp->vsl = fl_create_scrollbar( FL_VERT_THIN_SCROLLBAR,
                                   x + w - D, y, D, h - D, "" );
    fl_set_object_boxtype( sp->vsl, ob->boxtype );
    sp->vsl->visible = sp->v_pref == FL_ON;
    fl_set_scrollbar_value( sp->vsl, sp->old_hval = 0.0 );
    sp->vsl->resize = FL_RESIZE_Y;
    fl_set_object_callback( sp->vsl, vcb, 0 );

    fl_add_child( ob, sp->canvas );
    fl_add_child( ob, sp->hsl );
    fl_add_child( ob, sp->vsl );

    fl_set_coordunit( oldu );

    /* Set default return policy for the object */

    fl_set_object_return( ob, FL_RETURN_NONE );

    return ob;
}
Beispiel #17
0
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;
}
Beispiel #18
0
FD_mpcview *create_form_mpcview(void)
{
  FL_OBJECT *obj;
  FD_mpcview *fdui = (FD_mpcview *) fl_calloc(1, sizeof(*fdui));

  fdui->mpcview = fl_bgn_form(FL_NO_BOX, 425, 535);
  fdui->formmpcview = obj = fl_add_box(FL_FLAT_BOX,0,0,425,535,"");
  fdui->scanchart = obj = fl_add_chart(FL_LINE_CHART,15,40,280,60,"");
    fl_set_object_boxtype(obj,FL_UP_BOX);
  fdui->scan = obj = fl_add_xyplot(FL_FILL_XYPLOT,5,35,300,140,"");
    fl_set_object_boxtype(obj,FL_UP_BOX);
  obj = fl_add_frame(FL_ENGRAVED_FRAME,5,345,415,155,"");
  obj = fl_add_frame(FL_ENGRAVED_FRAME,245,355,165,80,"");
  obj = fl_add_frame(FL_ENGRAVED_FRAME,15,355,225,135,"");
  fdui->button_err_0 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,20,365,90,20,"Exceptional EP");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  obj = fl_add_frame(FL_ENGRAVED_FRAME,5,180,415,160,"");
  fdui->browser = obj = fl_add_browser(FL_HOLD_BROWSER,10,200,325,135,"");
    fl_set_object_color(obj,FL_TOP_BCOL,FL_YELLOW);
  fdui->menubar = obj = fl_add_box(FL_UP_BOX,0,0,425,30,"");
  fdui->clock = obj = fl_add_clock(FL_ANALOG_CLOCK,345,35,75,65,"");
  fdui->logo = obj = fl_add_pixmap(FL_NORMAL_PIXMAP,345,105,70,70,"");

  fdui->all_objects = fl_bgn_group();
  fdui->menufile = obj = fl_add_menu(FL_PULLDOWN_MENU,5,5,40,20,"File");
    fl_set_object_shortcut(obj,"#F",1);
    fl_set_object_boxtype(obj,FL_FLAT_BOX);
    fl_set_object_gravity(obj, FL_North, FL_NoGravity);
  obj = fl_add_text(FL_NORMAL_TEXT,10,185,325,15,"This software is part of the MPC Parallel Machine project");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->average = obj = fl_add_valslider(FL_VERT_FILL_SLIDER,310,35,30,140,"");
    fl_set_object_color(obj,FL_COL1,FL_GREEN);
     fl_set_slider_return(obj, FL_RETURN_CHANGED);
  obj = fl_add_text(FL_NORMAL_TEXT,5,505,415,25,"Fast HSL Control Panel -- (c) LIP6/UPMC 1997-1998");
    fl_set_object_boxtype(obj,FL_DOWN_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fl_end_group();

  fdui->button_0 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,340,200,35,30,"0");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  fdui->button_2 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,340,270,35,30,"2");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  fdui->button_1 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,340,235,35,30,"1");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  fdui->button_3 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,340,305,35,30,"3");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  obj = fl_add_text(FL_NORMAL_TEXT,265,5,100,20,"MPC-View");
    fl_set_object_lcol(obj,FL_DARKTOMATO);
    fl_set_object_lsize(obj,FL_LARGE_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_TIMESITALIC_STYLE+FL_EMBOSSED_STYLE);
  fdui->button_4 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,380,200,35,30,"4");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  fdui->button_5 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,380,235,35,30,"5");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  fdui->button_6 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,380,270,35,30,"6");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  fdui->button_7 = obj = fl_add_lightbutton(FL_PUSH_BUTTON,380,305,35,30,"7");
    fl_set_object_color(obj,FL_RED,FL_GREEN);
  obj = fl_add_text(FL_NORMAL_TEXT,30,350,40,15,"Errors");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->button_err_1 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,20,385,75,20,"CRC Header");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_2 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,20,405,70,20,"CRC Data");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_3 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,20,425,85,20,"End of Packet");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_4 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,20,445,70,20,"Timeout");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_5 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,20,465,75,20,"R3 Status");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_6 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,105,365,130,20,"Page Transmitted Overflow");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_7 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,105,385,130,20,"Message Received Overflow");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_8 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,105,405,120,20,"Sent Packet Overflow");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_9 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,105,425,130,20,"Received Packet Overflow");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_10 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,105,445,100,20,"Illegal LRM Access");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_err_11 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,105,465,80,20,"LMI Overflow");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  obj = fl_add_text(FL_NORMAL_TEXT,325,370,75,15,"Tx/Rx Balance");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_text(FL_NORMAL_TEXT,325,405,75,15,"Packet Length");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_text(FL_NORMAL_TEXT,255,350,45,15,"Control");
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_frame(FL_ENGRAVED_FRAME,245,440,165,50,"");
  fdui->button_other_0 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,250,445,80,20,"Tx");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_other_1 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,250,465,80,20,"Rx");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_other_2 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,325,445,80,20,"RCube");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->button_other_3 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,325,465,80,20,"Loopback");
    fl_set_object_lsize(obj,FL_TINY_SIZE);
  fdui->tx_rx = obj = fl_add_valslider(FL_HOR_NICE_SLIDER,250,365,75,25,"");
     fl_set_slider_return(obj, FL_RETURN_CHANGED);
  fdui->pack_len = obj = fl_add_valslider(FL_HOR_NICE_SLIDER,250,400,75,25,"");
     fl_set_slider_return(obj, FL_RETURN_CHANGED);
  fl_end_form();

  return fdui;
}
Beispiel #19
0
static int
BMP_description( FL_IMAGE * im )
{
    SPEC *sp = fl_calloc( 1, sizeof *sp );
    char buf[ 40 ];

    if ( fread( buf, 1, 2, im->fpin ) != 2 )
    {
        im->error_message( im, "error while readin bmp file" );
        fl_free( sp );
        return -1;
    }

    sp->fsize = fli_fget4LSBF( im->fpin );

    if ( fread( buf, 1, 4, im->fpin ) != 4 )
    {
        im->error_message( im, "error while reading bmp file" );
        fl_free( sp );
        return -1;
    }

    sp->offset = fli_fget4LSBF( im->fpin );
    sp->infosize = fli_fget4LSBF( im->fpin );

    if ( sp->infosize != 40 && sp->infosize != 64 )
    {
        im->error_message( im, "unsupported old obsolete bmp file" );
        fl_free( sp );
        return -1;
    }

    im->io_spec = sp;
    sp->w = fli_fget4LSBF( im->fpin );
    sp->h = fli_fget4LSBF( im->fpin );
    sp->planes = fli_fget2LSBF( im->fpin );
    sp->bpp = fli_fget2LSBF( im->fpin );
    sp->encode = fli_fget4LSBF( im->fpin );
    sp->isize = fli_fget4LSBF( im->fpin );
    sp->xres = fli_fget4LSBF( im->fpin );
    sp->yres = fli_fget4LSBF(im->fpin);
    sp->col_used = fli_fget4LSBF( im->fpin );
    sp->col_important = fli_fget4LSBF( im->fpin );

    if ( bad_bpp( sp->bpp ) )
    {
        flimage_error( im, "%s: bad bpp (%d)", im->infile, sp->bpp );
        fl_free( im->io_spec );
        im->io_spec = 0;
        return -1;
    }

    if ( sp->infosize != 40 )
    {
        int skip = sp->infosize - 40;

        if (    skip < 0
             || fread( buf, 1, skip, im->fpin ) != ( size_t ) skip )
        {
            flimage_error( im, "%s: error while reading bmp file",
                           im->infile );
            fl_free( im->io_spec );
            im->io_spec = 0;
            return -1;
        }
    }

    im->w = sp->w;
    im->h = sp->h;

    /* read colormap */

    if ( sp->bpp != 24 )
    {
        int i;

        if ( ( im->map_len = sp->col_used ) <= 0 )
            im->map_len = 1 << sp->bpp;
        flimage_getcolormap( im );
        for ( i = 0; i < im->map_len; i++ )
        {
            im->blue_lut[ i ]  = getc( im->fpin );
            im->green_lut[ i ] = getc( im->fpin );
            im->red_lut[ i ]   = getc( im->fpin );
            im->alpha_lut[ i ] = getc( im->fpin );
        }
    }

    sp->bpl = ( sp->w * sp->bpp + 7 ) / 8;
    sp->pad = ( ( sp->bpl + 3 ) / 4 ) * 4 - sp->bpl;    /* pad to 4 bytes */

    if ( sp->bpp == 24 )
        im->type = FL_IMAGE_RGB;
    else if ( sp->bpp == 1 )
        im->type = FL_IMAGE_MONO;
    else
        im->type = FL_IMAGE_CI;

#if BMPDEBUG
    dump_header( "after read", sp );
#endif

    if ( im->setup->header_info )
        generate_header_info( im );

    return 1;
}
Beispiel #20
0
FD_options *create_form_options(void)
{
  FL_OBJECT *obj;
  FD_options *fdui = (FD_options *) fl_calloc(1, sizeof(*fdui));

  fdui->options = fl_bgn_form(FL_NO_BOX, 470, 530);
  obj = fl_add_box(FL_UP_BOX,0,0,470,530,"Options");
    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  obj = fl_add_frame(FL_EMBOSSED_FRAME,20,370,210,130,"");
  obj = fl_add_frame(FL_EMBOSSED_FRAME,240,370,220,110,"");
  obj = fl_add_frame(FL_EMBOSSED_FRAME,20,190,440,170,"");
  fdui->prob_mutation = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,35,250,200,20,"Probabiliy of Mutation:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 3);
    fl_set_slider_value(obj, 0.008);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 0.001);
    fl_set_slider_increment(obj, 0.001, 0.001);
  fdui->prob_crossover = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,250,250,200,20,"Probabiliy of Crossover:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 3);
    fl_set_slider_value(obj, 0.002);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 0.001);
    fl_set_slider_increment(obj, 0.001, 0.001);
  fdui->max_pop = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,250,210,200,20,"Maximum Population:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 10000);
    fl_set_slider_value(obj, 2000);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 1);
    fl_set_slider_increment(obj, 10, 10);
  fdui->maintain_min_pop = obj = fl_add_checkbutton(FL_PUSH_BUTTON,260,380,20,20,"Maintain a Minimum Population?");
  fdui->age_factor = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,35,290,200,20,"Age Factor:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 15);
    fl_set_slider_value(obj, 9);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 1);
    fl_set_slider_increment(obj, 1, 1);
  fdui->carcass_decay_rate = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,250,290,200,20,"Carcass Decay Rate:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 100000);
    fl_set_slider_value(obj, 10000);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 100);
    fl_set_slider_increment(obj, 100, 100);
  fdui->save_sim = obj = fl_add_checkbutton(FL_PUSH_BUTTON,45,380,20,20,"Save Simulation Every N Steps?");
  fdui->save_every = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,40,420,170,20,"Save Every N Steps:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 100000);
    fl_set_slider_value(obj, 50000);
    fl_set_slider_size(obj, 0.12);
    fl_set_slider_step(obj, 100);
    fl_set_slider_increment(obj, 100, 100);
  fdui->file_name = obj = fl_add_input(FL_NORMAL_INPUT,40,465,170,20,"Default File Name:");
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ok = obj = fl_add_button(FL_RETURN_BUTTON,360,490,80,30,"OK");
  fdui->initial_params_frame = obj = fl_add_frame(FL_ENGRAVED_FRAME,20,20,440,160,"Initial Parameters");
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->scale = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,35,210,200,20,"Display Scale Factor:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 1, 32);
    fl_set_slider_value(obj, 5);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 1);
    fl_set_slider_increment(obj, 1, 1);
  fdui->min_pop = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,265,420,170,20,"Minimum Population:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 100);
    fl_set_slider_value(obj, 5);
    fl_set_slider_size(obj, 0.12);
    fl_set_slider_step(obj, 1);
    fl_set_slider_increment(obj, 1, 1);
  fdui->use_survivor = obj = fl_add_checkbutton(FL_PUSH_BUTTON,280,450,20,20,"Use Survivor for Minimum?");

  fdui->initial_parameters_group = fl_bgn_group();
  fdui->terrain_size = obj = fl_add_choice(FL_NORMAL_CHOICE2,340,135,100,30,"Terrain Size (cells):");
   fl_set_choice_entries(obj, fdchoice_terrain_size_0);
   fl_set_choice(obj,4);
  fdui->initial_pop = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,35,60,200,20,"Initial Population:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 2000);
    fl_set_slider_value(obj, 200);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 1);
    fl_set_slider_increment(obj, 10, 10);
  fdui->initial_plant = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,35,100,200,20,"Number of Initial Plant Locations:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 10000);
    fl_set_slider_value(obj, 1000);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 100);
    fl_set_slider_increment(obj, 100, 100);
  fdui->initial_flesh = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,250,100,200,20,"Number of Initial Flesh Locations:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 10000);
    fl_set_slider_value(obj, 1000);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 100);
    fl_set_slider_increment(obj, 100, 100);
  fdui->give_head_start = obj = fl_add_checkbutton(FL_PUSH_BUTTON,290,55,20,20,"Give A Head Start?");
    fl_set_button(obj, 1);
  fdui->allow_asex = obj = fl_add_checkbutton(FL_PUSH_BUTTON,70,150,20,20,"Allow Asexual Reproduction?");
    fl_set_button(obj, 1);
  fdui->allow_sex = obj = fl_add_checkbutton(FL_PUSH_BUTTON,70,130,20,20,"Allow Sexual Reproduction?");
    fl_set_button(obj, 1);
  fl_end_group();

  fdui->waste_decay_rate = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,35,330,200,20,"Waste Decay Rate:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 10000);
    fl_set_slider_value(obj, 20);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 5);
    fl_set_slider_increment(obj, 10, 10);
  fdui->poison_decay_rate = obj = fl_add_valslider(FL_HOR_BROWSER_SLIDER,250,330,200,20,"Poison Decay Rate:");
    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_slider_precision(obj, 0);
    fl_set_slider_bounds(obj, 0, 10000);
    fl_set_slider_value(obj, 20);
    fl_set_slider_size(obj, 0.10);
    fl_set_slider_step(obj, 5);
    fl_set_slider_increment(obj, 10, 10);
  fl_end_form();

  fdui->options->fdui = fdui;

  return fdui;
}
FD_main_frm *create_form_main_frm(void)
{
  FL_OBJECT *obj;
  FD_main_frm *fdui = (FD_main_frm *) fl_calloc(1, sizeof(*fdui));

  fdui->main_frm = fl_bgn_form(FL_NO_BOX, 1010, 710);
  obj = fl_add_box(FL_FLAT_BOX,0,0,1010,710,"Main form");
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_MCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  obj = fl_add_box(FL_ROUNDED_BOX,10,610,230,90,"");
    fl_set_object_color(obj,FL_DARKER_COL1,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_box(FL_ROUNDED3D_DOWNBOX,5,5,850,600,"");
    fl_set_object_color(obj,FL_BLACK,FL_BLACK);
  fdui->sync_lbl = obj = fl_add_text(FL_NORMAL_TEXT,635,15,40,20,"sync");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->rec_lbl = obj = fl_add_text(FL_NORMAL_TEXT,720,15,40,20,"rec");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->pwr1_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,20,45,300,110,"Power");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->pwr2_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,330,45,300,110,"Power");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->rx2_lbl = obj = fl_add_text(FL_NORMAL_TEXT,345,10,80,40,"RX 2");
    fl_set_object_color(obj,FL_BLACK,FL_MCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lsize(obj,FL_HUGE_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->noise1_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,20,170,300,110,"N0/SNR");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->noise2_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,330,170,300,110,"N0/SNR");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch11_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,15,310,140,110,"CH TX1");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch12_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,180,310,140,110,"CH TX2");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch13_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,15,450,140,110,"CH TX3");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch14_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,180,450,140,110,"CH TX4");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch21_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,325,310,140,110,"CH TX1");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch22_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,490,310,140,110,"CH TX2");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch23_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,325,450,140,110,"CH TX3");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->ch24_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,490,450,140,110,"CH TX4");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->error_lbl = obj = fl_add_text(FL_NORMAL_TEXT,680,15,40,20,"error");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->gps_lbl = obj = fl_add_text(FL_NORMAL_TEXT,640,65,60,30,"gps");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->date_lbl = obj = fl_add_text(FL_NORMAL_TEXT,655,130,170,30,"date: ");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->gps_lat_lbl = obj = fl_add_text(FL_NORMAL_TEXT,700,65,150,30,"lat: 0");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->gps_lon_lbl = obj = fl_add_text(FL_NORMAL_TEXT,700,95,150,30,"lon: 0");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->mode_lbl = obj = fl_add_text(FL_NORMAL_TEXT,640,160,90,20,"Mode: SGL");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->idx_lbl = obj = fl_add_text(FL_NORMAL_TEXT,730,160,110,20,"Idx: ");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_RIGHT|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  obj = fl_add_box(FL_ROUNDED_BOX,460,610,140,90,"");
    fl_set_object_color(obj,FL_DARKCYAN,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->power_btn = obj = fl_add_button(FL_NORMAL_BUTTON,130,620,100,70,"PWR");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
    fl_set_object_callback(obj,power_callback,0);
  fdui->buffer_lbl = obj = fl_add_text(FL_NORMAL_TEXT,760,15,90,20,"Buffer: 100%");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->cap_xyp = obj = fl_add_xyplot(FL_NORMAL_XYPLOT,640,310,200,250,"Capacity");
    fl_set_object_color(obj,FL_BLACK,FL_RIGHT_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fdui->refresh_lbl = obj = fl_add_text(FL_NORMAL_TEXT,655,185,170,20,"Refresh interval: 1s");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  obj = fl_add_box(FL_ROUNDED_BOX,860,90,140,220,"");
    fl_set_object_color(obj,FL_DARKER_COL1,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->refresh_dial = obj = fl_add_dial(FL_NORMAL_DIAL,890,110,80,70,"screen refresh rate");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_RIGHT_BCOL);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_object_callback(obj,refresh_callback,0);
    fl_set_dial_bounds(obj, 0, 5);
    fl_set_dial_angles(obj, 45, 315);
    fl_set_dial_value(obj, 1);
    fl_set_dial_step(obj, 1);
    fl_set_dial_return(obj, FL_RETURN_CHANGED);
  obj = fl_add_box(FL_ROUNDED_BOX,860,460,140,140,"");
    fl_set_object_color(obj,FL_INDIANRED,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->bler_lbl = obj = fl_add_text(FL_NORMAL_TEXT,650,210,180,20,"BLER:: 0");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->n_recd_frames_lbl = obj = fl_add_text(FL_NORMAL_TEXT,650,235,180,20,"Rec'd frms: 0");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->msg_text = obj = fl_add_text(FL_NORMAL_TEXT,25,570,810,30,"");
    fl_set_object_color(obj,FL_BLACK,FL_MCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_pixmapbutton(FL_NORMAL_BUTTON,860,5,140,70,"");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_WHITE,FL_YELLOW);
    fl_set_pixmapbutton_file(obj, "Eurecom_Logo.xpm");
  fdui->rx1_lbl = obj = fl_add_text(FL_NORMAL_TEXT,35,10,80,40,"RX 1");
    fl_set_object_color(obj,FL_BLACK,FL_MCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lsize(obj,FL_HUGE_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  obj = fl_add_box(FL_ROUNDED_BOX,610,610,180,90,"");
    fl_set_object_color(obj,FL_WHEAT,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->terminal_mode_btn = obj = fl_add_button(FL_NORMAL_BUTTON,635,620,130,20,"terminal mode");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,terminal_mode_callback,0);
  fdui->single_led = obj = fl_add_box(FL_EMBOSSED_BOX,640,650,10,10,"Single user");
    fl_set_object_color(obj,FL_RIGHT_BCOL,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_RIGHT);
  fdui->multi_led = obj = fl_add_box(FL_EMBOSSED_BOX,640,670,10,10,"Multi user");
    fl_set_object_color(obj,FL_RIGHT_BCOL,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_RIGHT);
  fdui->mmse_btn = obj = fl_add_button(FL_PUSH_BUTTON,480,655,100,20,"MMSE");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,rx_mode_button_callback,1);
  fdui->ml_btn = obj = fl_add_button(FL_PUSH_BUTTON,480,675,100,20,"ML");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,rx_mode_button_callback,2);
  fdui->cbmimo_lbl = obj = fl_add_text(FL_NORMAL_TEXT,665,40,70,20,"cbmimo");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->file_index_dial = obj = fl_add_dial(FL_NORMAL_DIAL,890,485,80,70,"file index");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_RIGHT_BCOL);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_object_callback(obj,file_index_callback,0);
    fl_set_dial_bounds(obj, 0, 100);
    fl_set_dial_angles(obj, 10, 350);
    fl_set_dial_value(obj, 0);
    fl_set_dial_step(obj, 10);
  obj = fl_add_button(FL_NORMAL_BUTTON,870,560,40,30,"+");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,file_index_callback,1);
  obj = fl_add_button(FL_NORMAL_BUTTON,950,560,40,30,"-");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,file_index_callback,-1);
  obj = fl_add_box(FL_ROUNDED_BOX,860,320,140,130,"");
    fl_set_object_color(obj,FL_PALEGREEN,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->num_sym_dial = obj = fl_add_dial(FL_NORMAL_DIAL,890,340,80,70,"number of symbols");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_RIGHT_BCOL);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_TOP);
    fl_set_dial_bounds(obj, 0, 5);
    fl_set_dial_angles(obj, 30, 360);
    fl_set_dial_value(obj, 0);
    fl_set_dial_step(obj, 0.5);
  fdui->fix_lbl = obj = fl_add_text(FL_NORMAL_TEXT,640,95,60,30,"NO");
    fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  obj = fl_add_box(FL_ROUNDED_BOX,800,610,200,90,"");
    fl_set_object_color(obj,FL_INDIANRED,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->rec_btn = obj = fl_add_button(FL_PUSH_BUTTON,820,620,160,70,"Record");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,record_callback,0);
  fdui->exit_btn = obj = fl_add_button(FL_NORMAL_BUTTON,20,660,90,30,"exit");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_TOMATO,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,exit_callback,0);
  fdui->config_btn = obj = fl_add_button(FL_NORMAL_BUTTON,20,620,90,30,"config");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,config_btn_callback,0);
  obj = fl_add_box(FL_ROUNDED_BOX,250,610,200,90,"");
    fl_set_object_color(obj,FL_PALEGREEN,FL_COL1);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fdui->terminal_btn1 = obj = fl_add_button(FL_PUSH_BUTTON,270,650,40,40,"CH1");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,terminal_button_callback,1);
  fdui->terminal_btn2 = obj = fl_add_button(FL_PUSH_BUTTON,310,650,40,40,"CH2");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,terminal_button_callback,2);
  fdui->terminal_btn3 = obj = fl_add_button(FL_PUSH_BUTTON,350,650,40,40,"MR1");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,terminal_button_callback,3);
  fdui->terminal_btn4 = obj = fl_add_button(FL_PUSH_BUTTON,390,650,40,40,"MR2");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,terminal_button_callback,4);
  obj = fl_add_text(FL_NORMAL_TEXT,300,620,110,20,"terminal number");
    fl_set_object_color(obj,FL_PALEGREEN,FL_MCOL);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  obj = fl_add_button(FL_NORMAL_BUTTON,870,180,40,30,"+");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,refresh_callback,1);
  obj = fl_add_button(FL_NORMAL_BUTTON,950,180,40,30,"-");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
    fl_set_object_callback(obj,refresh_callback,-1);
  fdui->time_domain_btn = obj = fl_add_button(FL_PUSH_BUTTON,870,235,60,20,"time");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,time_freq_callback,0);
  fdui->freq_domain_btn = obj = fl_add_button(FL_PUSH_BUTTON,930,235,60,20,"freq");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,time_freq_callback,1);
  obj = fl_add_text(FL_NORMAL_TEXT,875,215,110,20,"channel display");
    fl_set_object_color(obj,FL_DARKER_COL1,FL_MCOL);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fdui->refresh_timer = obj = fl_add_timer(FL_HIDDEN_TIMER,810,720,10,10,"timer");
    fl_set_object_callback(obj,refresh_timer_callback,0);
  obj = fl_add_text(FL_NORMAL_TEXT,875,260,110,20,"N0/SNR");
    fl_set_object_color(obj,FL_DARKER_COL1,FL_MCOL);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fdui->n0_btn = obj = fl_add_button(FL_PUSH_BUTTON,870,280,60,20,"N0");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,noise_snr_callback,0);
  fdui->snr_btn = obj = fl_add_button(FL_PUSH_BUTTON,930,280,60,20,"SNR");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,noise_snr_callback,1);
  fdui->num_sym_plus = obj = fl_add_button(FL_NORMAL_BUTTON,870,415,40,30,"+");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->num_sym_minus = obj = fl_add_button(FL_NORMAL_BUTTON,950,415,40,30,"-");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->rx_mode_lbl = obj = fl_add_text(FL_NORMAL_TEXT,650,260,180,20,"RX mode:");
    fl_set_object_color(obj,FL_BLACK,FL_TOP_BCOL);
    fl_set_object_lcolor(obj,FL_RIGHT_BCOL);
    fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fdui->single_btn = obj = fl_add_button(FL_PUSH_BUTTON,480,635,100,20,"SINGLE");
    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
    fl_set_object_color(obj,FL_LIGHTER_COL1,FL_COL1);
    fl_set_object_lsize(obj,FL_TINY_SIZE);
    fl_set_object_callback(obj,rx_mode_button_callback,0);
  obj = fl_add_text(FL_NORMAL_TEXT,480,615,100,20,"receiver mode");
    fl_set_object_boxtype(obj,FL_NO_BOX);
    fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
  fl_end_form();

  fdui->main_frm->fdui = fdui;

  return fdui;
}