/** colorgcc xforms_yesno.c -lforms * * FLCFLAGS := -I/local/include $$(pkg-config --cflags freetype2) * FLLIBS := -L/local/lib -lforms * * problem is the latin-1 only, for imput and output. */ #include "forms.h" #include typedef struct struct_data { char* org_msg; FL_OBJECT* input; } t_data; void on_ok( FL_OBJECT* obj, long dummy ) { t_data* data = obj->u_vdata; FL_OBJECT* input = data->input; puts(fl_get_input(input)); fl_finish(); exit(0); } void on_cancel( FL_OBJECT* obj, long dummy ) { t_data* data = obj->u_vdata; char* org_msg = data->org_msg; puts(org_msg); fl_finish(); exit(0); } void on_input( FL_OBJECT* obj, long dummy ) { // do nothing } int main( int argc, char* argv[] ){ FL_FORM* form; FL_OBJECT* ok_btn; FL_OBJECT* cancel_btn; FL_OBJECT* input; t_data data; fl_initialize (&argc, argv, "fledit", 0, 0 ); if(argc>1) { data.org_msg = argv[1]; } else { fl_finish(); printf("(E) missing argument.\n"); exit(0); } // design form = fl_bgn_form ( FL_FLAT_BOX, 320,120 ); // begin and input = fl_add_input ( FL_MULTILINE_INPUT, 0, 0, 320,95, NULL); cancel_btn = fl_add_button( FL_NORMAL_BUTTON, 160,96, 80,24,"CANCEL"); ok_btn = fl_add_button( FL_NORMAL_BUTTON, 240,96, 80,24,"OK"); fl_end_form (); data.input = input; cancel_btn->u_vdata = &data; ok_btn ->u_vdata = &data; // cfg fl_set_object_boxtype(cancel_btn,FL_FRAME_BOX); fl_set_object_boxtype(ok_btn, FL_FRAME_BOX); fl_set_input(input,data.org_msg); fl_set_focus_object(form,input); //sizers fl_set_object_resize(input, FL_RESIZE_ALL ); fl_set_object_resize(cancel_btn,FL_RESIZE_NONE); fl_set_object_resize(ok_btn, FL_RESIZE_NONE); fl_set_object_gravity(input, FL_NorthWest,FL_SouthEast); fl_set_object_gravity(cancel_btn,FL_SouthEast,FL_SouthEast); fl_set_object_gravity(ok_btn, FL_SouthEast,FL_SouthEast); // binding fl_set_object_callback( ok_btn, on_ok, 0 ); fl_set_object_callback( cancel_btn, on_cancel, 0 ); fl_set_object_callback( input, on_input, 0 ); // pop up fl_show_form( form, // the form FL_PLACE_FREE, // window title FL_FULLBORDER, // "fl edit" ); fl_set_form_position(form,0,680-20-2); // loop fl_do_forms(); return 0; }