fltk/test/preferences.fl
Matthias Melcher dc5fa8454c Fl_Preferences: fixed delete/free confusion, updated docu and sample on buffer size issue (buffer needs to allow for additional byte for trailing zero)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2242 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2002-05-17 21:17:05 +00:00

307 lines
7.1 KiB
Plaintext

# data file for the Fltk User Interface Designer (fluid)
version 1.0100
header_name {.h}
code_name {.cxx}
gridx 5
gridy 5
snap 3
decl {\#include <FL/Fl_Preferences.H>} {public
}
decl {\#include <stdio.h>} {public
}
decl {\#include <stdlib.h>} {}
decl {\#include <FL/filename.H>} {selected
}
decl {void readPrefs();} {public
}
decl {void writePrefs();} {public
}
Function {closeWindowCB( Fl_Widget*, void* )} {open private return_type void
} {
code {delete myWindow;} {}
}
Function {saveAndCloseWindowCB( Fl_Widget*, void* )} {open private return_type void
} {
code {writePrefs();
delete myWindow;} {}
}
Function {} {open return_type int
} {
Fl_Window myWindow {
label {My Preferences}
callback closeWindowCB open
xywh {394 64 298 311} visible
} {
Fl_Button {} {
label Cancel
callback closeWindowCB
xywh {210 275 75 25}
}
Fl_Button {} {
label OK
callback saveAndCloseWindowCB
xywh {125 275 75 25}
}
Fl_Group {} {
label {Get Up:} open
xywh {20 30 115 225} box ENGRAVED_FRAME align 5
} {
Fl_Input wAlarm {
label {Alarm at:}
xywh {25 55 45 20} align 5
}
Fl_Choice wAmPm {open
xywh {75 55 55 20} down_box BORDER_BOX
} {
menuitem {} {
label {a.m.}
xywh {0 0 100 20}
}
menuitem {} {
label {p.m.}
xywh {0 0 100 20}
}
}
Fl_Choice wWear {
label {Wear:} open
xywh {25 100 105 20} down_box BORDER_BOX align 5
} {
menuitem {} {
label shoes
xywh {0 0 100 20}
}
menuitem {} {
label sandals
xywh {0 0 100 20}
}
menuitem {} {
label {flip flops}
xywh {0 0 100 20}
}
menuitem {} {
label {bare foot}
xywh {0 0 100 20}
}
}
Fl_Round_Button wLeft {
label {left side}
xywh {35 120 95 25} down_box ROUND_DOWN_BOX
}
Fl_Round_Button wRight {
label {right side}
xywh {35 140 95 25} down_box ROUND_DOWN_BOX
}
Fl_Box {} {
label {of the bed}
xywh {38 160 95 20}
}
Fl_Check_Button wShower {
label shower
xywh {25 180 105 25} down_box DOWN_BOX
}
Fl_Check_Button wShave {
label shave
xywh {25 200 105 25} down_box DOWN_BOX
}
Fl_Check_Button wBrush {
label {brush teeth}
xywh {25 220 105 25} down_box DOWN_BOX
}
}
Fl_Group {} {
label {Breakfast::} open
xywh {160 30 115 225} box ENGRAVED_FRAME align 5
} {
Fl_Choice wDrink {
label {Drink:} open
xywh {165 50 105 20} down_box BORDER_BOX align 5
} {
menuitem {} {
label coffee
xywh {10 10 100 20}
}
menuitem {} {
label tea
xywh {10 10 100 20}
}
menuitem {} {
label juice
xywh {10 10 100 20}
}
}
Fl_Check_Button wMilk {
label {with milk}
xywh {170 70 100 25} down_box DOWN_BOX
}
Fl_Choice wBread {
label {Bread:} open
xywh {165 110 105 20} down_box BORDER_BOX align 5
} {
menuitem {} {
label wheat
xywh {0 0 100 20}
}
menuitem {} {
label white
xywh {0 0 100 20}
}
menuitem {} {
label rye
xywh {0 0 100 20}
}
menuitem {} {
label {sour doh}
xywh {0 0 100 20}
}
}
Fl_Check_Button wButter {
label {with butter}
xywh {170 130 100 25} down_box DOWN_BOX
}
Fl_Input wEggs {
label eggs
xywh {165 163 30 20} type Int align 8
}
Fl_Value_Slider wMinutes {
label {min.}
xywh {175 185 70 20} type Horizontal align 8 minimum 2 maximum 6 value 3.1
}
Fl_Input wPaper {
label {Newspaper:}
xywh {165 225 105 20} align 5
}
}
}
code {readPrefs();} {}
}
Function {readPrefs()} {open return_type void
} {
code {char 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 todo;
bed.get( "todoFlags", todo, 0x05 );
if ( todo & 0x01 ) wShower->value( 1 );
if ( todo & 0x02 ) wShave->value( 1 );
if ( todo & 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; i<n; i++ )
prev.get( Fl_Preferences::Name( i ), flexBuffer, "" );
}
unsigned int hex;
eat.get( "binFoo", (void*)&hex, 0, 0, sizeof( unsigned int ) );
void *data;
eat.get( "binFoo2", data, 0, 0 );
**/} {}
}
Function {writePrefs()} {open return_type void
} {
code {Fl_Preferences app( Fl_Preferences::USER, "fltk.org", "test/preferences" );
Fl_Preferences bed( app, "Bed" );
bed.set( "alarm", wAlarm->value() );
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 todo = 0;
if ( wShower->value() ) todo |= 0x01;
if ( wShave->value() ) todo |= 0x02;
if ( wBrush->value() ) todo |= 0x04;
bed.set( "todoFlags", todo );
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 code only:
unsigned int hex = 0x2387efcd;
eat.set( "binFoo", (void*)&hex, sizeof( unsigned int ) );
eat.set( "binFoo2", (void*)&writePrefs, 1024 );
**/} {}
}