Blame test/preferences.fl

Packit 328d5c
# data file for the Fltk User Interface Designer (fluid)
Packit 328d5c
version 1.0304
Packit 328d5c
header_name {.h}
Packit 328d5c
code_name {.cxx}
Packit 328d5c
decl {\#include <FL/Fl_Preferences.H>} {public local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {\#include <stdio.h>} {public local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {\#include <stdlib.h>} {private local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {\#include <FL/filename.H>} {private local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {\#include <FL/fl_ask.H>} {private local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {void readPrefs();} {public local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {void writePrefs();} {public local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {const char *project = "fltk.org";} {private local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
decl {const char *application = "test/preferences";} {private local
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
Function {closeWindowCB( Fl_Widget*, void* )} {open private return_type void
Packit 328d5c
} {
Packit 328d5c
  code {Fl::delete_widget(myWindow);} {}
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
Function {saveAndCloseWindowCB( Fl_Widget*, void* )} {open private return_type void
Packit 328d5c
} {
Packit 328d5c
  code {writePrefs();
Packit 328d5c
Fl::delete_widget(myWindow);} {}
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
Function {} {open return_type int
Packit 328d5c
} {
Packit 328d5c
  Fl_Window myWindow {
Packit 328d5c
    label {My Preferences}
Packit 328d5c
    callback closeWindowCB open
Packit 328d5c
    xywh {408 202 298 311} type Double hide
Packit 328d5c
  } {
Packit 328d5c
    Fl_Button {} {
Packit 328d5c
      label Cancel
Packit 328d5c
      callback closeWindowCB
Packit 328d5c
      xywh {210 275 75 25}
Packit 328d5c
    }
Packit 328d5c
    Fl_Button {} {
Packit 328d5c
      label OK
Packit 328d5c
      callback saveAndCloseWindowCB
Packit 328d5c
      xywh {125 275 75 25}
Packit 328d5c
    }
Packit 328d5c
    Fl_Group {} {
Packit 328d5c
      label {Get Up:} open
Packit 328d5c
      xywh {20 30 115 225} box ENGRAVED_FRAME align 5
Packit 328d5c
    } {
Packit 328d5c
      Fl_Input wAlarm {
Packit 328d5c
        label {Alarm at:}
Packit 328d5c
        xywh {25 55 45 20} align 5
Packit 328d5c
      }
Packit 328d5c
      Fl_Choice wAmPm {open
Packit 328d5c
        xywh {75 55 55 20} down_box BORDER_BOX
Packit 328d5c
      } {
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label {a.m.}
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label {p.m.}
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
      }
Packit 328d5c
      Fl_Choice wWear {
Packit 328d5c
        label {Wear:} open
Packit 328d5c
        xywh {25 100 105 20} down_box BORDER_BOX align 5
Packit 328d5c
      } {
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label shoes
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label sandals
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label {flip flops}
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label {bare foot}
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
      }
Packit 328d5c
      Fl_Group {} {open
Packit 328d5c
        xywh {35 120 98 60}
Packit 328d5c
      } {
Packit 328d5c
        Fl_Round_Button wLeft {
Packit 328d5c
          label {left side}
Packit 328d5c
          xywh {35 120 95 25} type Radio down_box ROUND_DOWN_BOX
Packit 328d5c
        }
Packit 328d5c
        Fl_Round_Button wRight {
Packit 328d5c
          label {right side}
Packit 328d5c
          xywh {35 140 95 25} type Radio down_box ROUND_DOWN_BOX
Packit 328d5c
        }
Packit 328d5c
        Fl_Box {} {
Packit 328d5c
          label {of the bed}
Packit 328d5c
          xywh {38 160 95 20}
Packit 328d5c
        }
Packit 328d5c
      }
Packit 328d5c
      Fl_Check_Button wShower {
Packit 328d5c
        label shower
Packit 328d5c
        xywh {25 180 105 25} down_box DOWN_BOX
Packit 328d5c
      }
Packit 328d5c
      Fl_Check_Button wShave {
Packit 328d5c
        label shave
Packit 328d5c
        xywh {25 200 105 25} down_box DOWN_BOX
Packit 328d5c
      }
Packit 328d5c
      Fl_Check_Button wBrush {
Packit 328d5c
        label {brush teeth}
Packit 328d5c
        xywh {25 220 105 25} down_box DOWN_BOX
Packit 328d5c
      }
Packit 328d5c
    }
Packit 328d5c
    Fl_Group {} {
Packit 328d5c
      label {Breakfast::} open
Packit 328d5c
      xywh {160 30 115 225} box ENGRAVED_FRAME align 5
Packit 328d5c
    } {
Packit 328d5c
      Fl_Choice wDrink {
Packit 328d5c
        label {Drink:} open
Packit 328d5c
        xywh {165 50 105 20} down_box BORDER_BOX align 5
Packit 328d5c
      } {
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label coffee
Packit 328d5c
          xywh {10 10 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label tea
Packit 328d5c
          xywh {10 10 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label juice
Packit 328d5c
          xywh {10 10 100 20}
Packit 328d5c
        }
Packit 328d5c
      }
Packit 328d5c
      Fl_Check_Button wMilk {
Packit 328d5c
        label {with milk}
Packit 328d5c
        xywh {170 70 100 25} down_box DOWN_BOX
Packit 328d5c
      }
Packit 328d5c
      Fl_Choice wBread {
Packit 328d5c
        label {Bread:} open
Packit 328d5c
        xywh {165 110 105 20} down_box BORDER_BOX align 5
Packit 328d5c
      } {
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label wheat
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label white
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label rye
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
        MenuItem {} {
Packit 328d5c
          label {sour doh}
Packit 328d5c
          xywh {0 0 100 20}
Packit 328d5c
        }
Packit 328d5c
      }
Packit 328d5c
      Fl_Check_Button wButter {
Packit 328d5c
        label {with butter}
Packit 328d5c
        xywh {170 130 100 25} down_box DOWN_BOX
Packit 328d5c
      }
Packit 328d5c
      Fl_Input wEggs {
Packit 328d5c
        label eggs
Packit 328d5c
        xywh {165 163 30 20} type Int align 8
Packit 328d5c
      }
Packit 328d5c
      Fl_Value_Slider wMinutes {
Packit 328d5c
        label {min.}
Packit 328d5c
        xywh {175 185 70 20} type Horizontal align 8 minimum 2 maximum 6 value 3.1
Packit 328d5c
      }
Packit 328d5c
      Fl_Input wPaper {
Packit 328d5c
        label {Newspaper:}
Packit 328d5c
        xywh {165 225 105 20} align 5
Packit 328d5c
      }
Packit 328d5c
    }
Packit 328d5c
  }
Packit 328d5c
  code {readPrefs();} {}
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
Function {readPrefs()} {open return_type void
Packit 328d5c
} {
Packit 328d5c
  code {int boolValue;
Packit 328d5c
int intValue;
Packit 328d5c
char buffer[80];
Packit 328d5c
double doubleValue;
Packit 328d5c
Packit 328d5c
Fl_Preferences app( Fl_Preferences::USER, project, application );
Packit 328d5c
Packit 328d5c
  char path[ FL_PATH_MAX ];
Packit 328d5c
  app.getUserdataPath( path, sizeof(path) );
Packit 328d5c
Packit 328d5c
  Fl_Preferences bed( app, "Bed" );
Packit 328d5c
    bed.get( "alarm", buffer, "8:00", 79 );
Packit 328d5c
    wAlarm->value( buffer );
Packit 328d5c
Packit 328d5c
    bed.get( "ampm", intValue, 0 );
Packit 328d5c
    wAmPm->value( intValue );
Packit 328d5c
Packit 328d5c
    bed.get( "wear", intValue, 1 );
Packit 328d5c
    wWear->value( intValue );
Packit 328d5c
Packit 328d5c
    int side;
Packit 328d5c
    bed.get( "side", side, 2 );
Packit 328d5c
    if ( side == 1 ) wLeft->value( 1 );
Packit 328d5c
    if ( side == 2 ) wRight->value( 1 );
Packit 328d5c
Packit 328d5c
    int tasks;
Packit 328d5c
    bed.get( "taskFlags", tasks, 0x05 );
Packit 328d5c
    if ( tasks & 0x01 ) wShower->value( 1 );
Packit 328d5c
    if ( tasks & 0x02 ) wShave->value( 1 );
Packit 328d5c
    if ( tasks & 0x04 ) wBrush->value( 1 );
Packit 328d5c
Packit 328d5c
  Fl_Preferences eat( app, "Breakfast" );
Packit 328d5c
Packit 328d5c
    eat.get( "drink", intValue, 1 );
Packit 328d5c
    wDrink->value( intValue );
Packit 328d5c
Packit 328d5c
    eat.get( "wMilk", boolValue, 0 );
Packit 328d5c
    wMilk->value( boolValue );
Packit 328d5c
Packit 328d5c
    eat.get( "bread", intValue, 0 );
Packit 328d5c
    wBread->value( intValue );
Packit 328d5c
Packit 328d5c
    eat.get( "wButter", boolValue, 1 );
Packit 328d5c
    wButter->value( boolValue );
Packit 328d5c
Packit 328d5c
    eat.get( "nEggs", intValue, 2 );
Packit 328d5c
    sprintf( buffer, "%d", intValue );
Packit 328d5c
    wEggs->value( buffer );
Packit 328d5c
Packit 328d5c
    eat.get( "minutes", doubleValue, 3.2 );
Packit 328d5c
    wMinutes->value( doubleValue );
Packit 328d5c
Packit 328d5c
    char *flexBuffer;
Packit 328d5c
    eat.get( "newspaper", flexBuffer, "NY Tymes" );
Packit 328d5c
    wPaper->value( flexBuffer );
Packit 328d5c
    if ( flexBuffer ) free( flexBuffer );
Packit 328d5c
Packit 328d5c
    eat.get( "foo", buffer, "bar", 80 );
Packit 328d5c
Packit 328d5c
  /** sample code only:
Packit 328d5c
  Fl_Preferences prev( app, "PreviousStarts" );
Packit 328d5c
  {
Packit 328d5c
    int i, n;
Packit 328d5c
    prev.get( "n", n, 0 );
Packit 328d5c
    for ( i=0; i
Packit 328d5c
      prev.get( Fl_Preferences::Name( i ), flexBuffer, "" );
Packit 328d5c
  }
Packit 328d5c
Packit 328d5c
    unsigned int hex;
Packit 328d5c
    eat.get( "binFoo", (void*)&hex, 0, 0, sizeof( unsigned int ) );
Packit 328d5c
    void *data;
Packit 328d5c
    eat.get( "binFoo2", data, 0, 0 );
Packit 328d5c
  **/} {selected
Packit 328d5c
  }
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
Function {writePrefs()} {open return_type void
Packit 328d5c
} {
Packit 328d5c
  code {Fl_Preferences app( Fl_Preferences::USER, project, application );
Packit 328d5c
Packit 328d5c
  Fl_Preferences bed( app, "Bed" );
Packit 328d5c
Packit 328d5c
    bed.set( "alarm", wAlarm->value() );
Packit 328d5c
    bed.set( "ampm", wAmPm->value() );
Packit 328d5c
Packit 328d5c
    bed.set( "wear", wWear->value() );
Packit 328d5c
Packit 328d5c
    int side = 0;
Packit 328d5c
    if ( wLeft->value() ) side = 1;
Packit 328d5c
    if ( wRight->value() ) side = 2;
Packit 328d5c
    bed.set( "side", side );
Packit 328d5c
Packit 328d5c
    int tasks = 0;
Packit 328d5c
    if ( wShower->value() ) tasks |= 0x01;
Packit 328d5c
    if ( wShave->value() ) tasks |= 0x02;
Packit 328d5c
    if ( wBrush->value() ) tasks |= 0x04;
Packit 328d5c
    bed.set( "taskFlags", tasks );
Packit 328d5c
Packit 328d5c
  Fl_Preferences eat( app, "Breakfast" );
Packit 328d5c
Packit 328d5c
    eat.set( "drink", wDrink->value() );
Packit 328d5c
    eat.set( "wMilk", wMilk->value() );
Packit 328d5c
    eat.set( "bread", wBread->value() );
Packit 328d5c
    eat.set( "wButter", wButter->value() );
Packit 328d5c
Packit 328d5c
    eat.set( "nEggs", wEggs->value() );
Packit 328d5c
    eat.set( "minutes", wMinutes->value() );
Packit 328d5c
Packit 328d5c
    eat.set( "newspaper", wPaper->value() );
Packit 328d5c
Packit 328d5c
    eat.set( "foo", "bar\\nfly\\rBackslash: \\\\ and bell: \\007 and delete: \\177\\n" );
Packit 328d5c
Packit 328d5c
    eat.set( Fl_Preferences::Name( 3 ), "Test3" );
Packit 328d5c
Packit 328d5c
  /* sample: create a sub-sub-group */
Packit 328d5c
  Fl_Preferences eatMore( eat, "More" );
Packit 328d5c
Packit 328d5c
    eatMore.set( "more", "stuff" );
Packit 328d5c
Packit 328d5c
  /* all the following searches should return 1 */
Packit 328d5c
  int sum = 0;
Packit 328d5c
  sum += app.groupExists( "Breakfast" ); /* find 'eat' relative to 'app' */
Packit 328d5c
  sum += app.groupExists( "Breakfast/More" ); /* find 'eat.eatMore' relative to 'app' */
Packit 328d5c
  sum += app.groupExists( "./Breakfast/More" ); /* find 'eat.eatMore' relative to Preferences */
Packit 328d5c
  sum += eat.groupExists( "More" ); /* find 'eatMore' relative to 'eat' */
Packit 328d5c
  sum += eat.groupExists( "./Breakfast/More" ); /* find 'eat.eatMore' relative to Preferences */
Packit 328d5c
  sum += eat.groupExists( "." ); /* find myself ('eat') */
Packit 328d5c
  sum += eat.groupExists( "./" ); /* find the topmost group ('app') */
Packit 328d5c
  if ( sum != 7 )
Packit 328d5c
    fl_message( "Assertion failed:\\nNot all group entries were found!" );
Packit 328d5c
Packit 328d5c
  /* sample code only: */
Packit 328d5c
  unsigned int hex = 0x2387efcd;
Packit 328d5c
  eat.set( "binFoo", (void*)&hex, sizeof( unsigned int ) );
Packit 328d5c
  eat.set( "binFoo2", (void*)&bed, 256 );} {}
Packit 328d5c
}