// generated by Fast Light User Interface Designer (fluid) version 1.0300 #include "preferences.h" #include #include #include void readPrefs(); void writePrefs(); static void closeWindowCB( Fl_Widget*, void* ) { Fl::delete_widget(myWindow); } static void saveAndCloseWindowCB( Fl_Widget*, void* ) { writePrefs(); Fl::delete_widget(myWindow); } Fl_Double_Window *myWindow=(Fl_Double_Window *)0; Fl_Input *wAlarm=(Fl_Input *)0; Fl_Choice *wAmPm=(Fl_Choice *)0; Fl_Menu_Item menu_wAmPm[] = { {"a.m.", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"p.m.", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Choice *wWear=(Fl_Choice *)0; Fl_Menu_Item menu_wWear[] = { {"shoes", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"sandals", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"flip flops", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"bare foot", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Round_Button *wLeft=(Fl_Round_Button *)0; Fl_Round_Button *wRight=(Fl_Round_Button *)0; Fl_Check_Button *wShower=(Fl_Check_Button *)0; Fl_Check_Button *wShave=(Fl_Check_Button *)0; Fl_Check_Button *wBrush=(Fl_Check_Button *)0; Fl_Choice *wDrink=(Fl_Choice *)0; Fl_Menu_Item menu_wDrink[] = { {"coffee", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"tea", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"juice", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Check_Button *wMilk=(Fl_Check_Button *)0; Fl_Choice *wBread=(Fl_Choice *)0; Fl_Menu_Item menu_wBread[] = { {"wheat", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"white", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"rye", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {"sour doh", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Check_Button *wButter=(Fl_Check_Button *)0; Fl_Int_Input *wEggs=(Fl_Int_Input *)0; Fl_Value_Slider *wMinutes=(Fl_Value_Slider *)0; Fl_Input *wPaper=(Fl_Input *)0; int main(int argc, char **argv) { { myWindow = new Fl_Double_Window(298, 311, "My Preferences"); myWindow->callback((Fl_Callback*)closeWindowCB); { Fl_Button* o = new Fl_Button(210, 275, 75, 25, "Cancel"); o->callback((Fl_Callback*)closeWindowCB); } // Fl_Button* o { Fl_Button* o = new Fl_Button(125, 275, 75, 25, "OK"); o->callback((Fl_Callback*)saveAndCloseWindowCB); } // Fl_Button* o { Fl_Group* o = new Fl_Group(20, 30, 115, 225, "Get Up:"); o->box(FL_ENGRAVED_FRAME); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); { wAlarm = new Fl_Input(25, 55, 45, 20, "Alarm at:"); wAlarm->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Input* wAlarm { wAmPm = new Fl_Choice(75, 55, 55, 20); wAmPm->down_box(FL_BORDER_BOX); wAmPm->menu(menu_wAmPm); } // Fl_Choice* wAmPm { wWear = new Fl_Choice(25, 100, 105, 20, "Wear:"); wWear->down_box(FL_BORDER_BOX); wWear->align(Fl_Align(FL_ALIGN_TOP_LEFT)); wWear->menu(menu_wWear); } // Fl_Choice* wWear { Fl_Group* o = new Fl_Group(35, 120, 98, 60); { wLeft = new Fl_Round_Button(35, 120, 95, 25, "left side"); wLeft->type(102); wLeft->down_box(FL_ROUND_DOWN_BOX); } // Fl_Round_Button* wLeft { wRight = new Fl_Round_Button(35, 140, 95, 25, "right side"); wRight->type(102); wRight->down_box(FL_ROUND_DOWN_BOX); } // Fl_Round_Button* wRight { new Fl_Box(38, 160, 95, 20, "of the bed"); } // Fl_Box* o o->end(); } // Fl_Group* o { wShower = new Fl_Check_Button(25, 180, 105, 25, "shower"); wShower->down_box(FL_DOWN_BOX); } // Fl_Check_Button* wShower { wShave = new Fl_Check_Button(25, 200, 105, 25, "shave"); wShave->down_box(FL_DOWN_BOX); } // Fl_Check_Button* wShave { wBrush = new Fl_Check_Button(25, 220, 105, 25, "brush teeth"); wBrush->down_box(FL_DOWN_BOX); } // Fl_Check_Button* wBrush o->end(); } // Fl_Group* o { Fl_Group* o = new Fl_Group(160, 30, 115, 225, "Breakfast::"); o->box(FL_ENGRAVED_FRAME); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); { wDrink = new Fl_Choice(165, 50, 105, 20, "Drink:"); wDrink->down_box(FL_BORDER_BOX); wDrink->align(Fl_Align(FL_ALIGN_TOP_LEFT)); wDrink->menu(menu_wDrink); } // Fl_Choice* wDrink { wMilk = new Fl_Check_Button(170, 70, 100, 25, "with milk"); wMilk->down_box(FL_DOWN_BOX); } // Fl_Check_Button* wMilk { wBread = new Fl_Choice(165, 110, 105, 20, "Bread:"); wBread->down_box(FL_BORDER_BOX); wBread->align(Fl_Align(FL_ALIGN_TOP_LEFT)); wBread->menu(menu_wBread); } // Fl_Choice* wBread { wButter = new Fl_Check_Button(170, 130, 100, 25, "with butter"); wButter->down_box(FL_DOWN_BOX); } // Fl_Check_Button* wButter { wEggs = new Fl_Int_Input(165, 163, 30, 20, "eggs"); wEggs->type(2); wEggs->align(Fl_Align(FL_ALIGN_RIGHT)); } // Fl_Int_Input* wEggs { wMinutes = new Fl_Value_Slider(175, 185, 70, 20, "min."); wMinutes->type(1); wMinutes->minimum(2); wMinutes->maximum(6); wMinutes->value(3.1); wMinutes->align(Fl_Align(FL_ALIGN_RIGHT)); } // Fl_Value_Slider* wMinutes { wPaper = new Fl_Input(165, 225, 105, 20, "Newspaper:"); wPaper->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Input* wPaper o->end(); } // Fl_Group* o myWindow->end(); } // Fl_Double_Window* myWindow readPrefs(); myWindow->show(argc, argv); return Fl::run(); } void readPrefs() { int boolValue; int intValue; char buffer[80]; double doubleValue; Fl_Preferences app( Fl_Preferences::USER, "fltk.org", "test/preferences" ); char path[ FL_PATH_MAX ]; app.getUserdataPath( path, sizeof(path) ); Fl_Preferences bed( app, "Bed" ); bed.get( "alarm", buffer, "8:00", 79 ); wAlarm->value( buffer ); bed.get( "ampm", intValue, 0 ); wAmPm->value( intValue ); bed.get( "wear", intValue, 1 ); wWear->value( intValue ); int side; bed.get( "side", side, 2 ); if ( side == 1 ) wLeft->value( 1 ); if ( side == 2 ) wRight->value( 1 ); int tasks; bed.get( "taskFlags", tasks, 0x05 ); if ( tasks & 0x01 ) wShower->value( 1 ); if ( tasks & 0x02 ) wShave->value( 1 ); if ( tasks & 0x04 ) wBrush->value( 1 ); Fl_Preferences eat( app, "Breakfast" ); eat.get( "drink", intValue, 1 ); wDrink->value( intValue ); eat.get( "wMilk", boolValue, 0 ); wMilk->value( boolValue ); eat.get( "bread", intValue, 0 ); wBread->value( intValue ); eat.get( "wButter", boolValue, 1 ); wButter->value( boolValue ); eat.get( "nEggs", intValue, 2 ); sprintf( buffer, "%d", intValue ); wEggs->value( buffer ); eat.get( "minutes", doubleValue, 3.2 ); wMinutes->value( doubleValue ); char *flexBuffer; eat.get( "newspaper", flexBuffer, "NY Tymes" ); wPaper->value( flexBuffer ); if ( flexBuffer ) free( flexBuffer ); eat.get( "foo", buffer, "bar", 80 ); /** sample code only: Fl_Preferences prev( app, "PreviousStarts" ); { int i, n; prev.get( "n", n, 0 ); for ( i=0; ivalue() ); bed.set( "ampm", wAmPm->value() ); bed.set( "wear", wWear->value() ); int side = 0; if ( wLeft->value() ) side = 1; if ( wRight->value() ) side = 2; bed.set( "side", side ); int tasks = 0; if ( wShower->value() ) tasks |= 0x01; if ( wShave->value() ) tasks |= 0x02; if ( wBrush->value() ) tasks |= 0x04; bed.set( "taskFlags", tasks ); Fl_Preferences eat( app, "Breakfast" ); eat.set( "drink", wDrink->value() ); eat.set( "wMilk", wMilk->value() ); eat.set( "bread", wBread->value() ); eat.set( "wButter", wButter->value() ); eat.set( "nEggs", wEggs->value() ); eat.set( "minutes", wMinutes->value() ); eat.set( "newspaper", wPaper->value() ); eat.set( "foo", "bar\nfly\rBackslash: \\ and bell: \007 and delete: \177\n" ); eat.set( Fl_Preferences::Name( 3 ), "Test3" ); /* sample: create a sub-sub-group */ Fl_Preferences eatMore( eat, "More" ); eatMore.set( "more", "stuff" ); /* all the following searches should return 1 */ int sum = 0; sum += app.groupExists( "Breakfast" ); /* find 'eat' relative to 'app' */ sum += app.groupExists( "Breakfast/More" ); /* find 'eat.eatMore' relative to 'app' */ sum += app.groupExists( "./Breakfast/More" ); /* find 'eat.eatMore' relative to Preferences */ sum += eat.groupExists( "More" ); /* find 'eatMore' relative to 'eat' */ sum += eat.groupExists( "./Breakfast/More" ); /* find 'eat.eatMore' relative to Preferences */ sum += eat.groupExists( "." ); /* find myself ('eat') */ sum += eat.groupExists( "./" ); /* find the topmost group ('app') */ if ( sum != 7 ) fl_message( "Assertion failed:\nNot all group entries were found!" ); /* sample code only: */ unsigned int hex = 0x2387efcd; eat.set( "binFoo", (void*)&hex, sizeof( unsigned int ) ); eat.set( "binFoo2", (void*)&bed, 256 ); }