Blame test/forms.cxx

Packit 328d5c
//
Packit 328d5c
// "$Id: forms.cxx 10666 2015-04-03 12:18:31Z AlbrechtS $"
Packit 328d5c
//
Packit 328d5c
// Another forms demo for the Fast Light Tool Kit (FLTK).
Packit 328d5c
//
Packit 328d5c
// This is an XForms program with some changes for FLTK.
Packit 328d5c
//
Packit 328d5c
// This demo show the different boxtypes. Note that some
Packit 328d5c
// boxtypes are not appropriate for some objects
Packit 328d5c
//
Packit 328d5c
// Copyright 1998-2015 by Bill Spitzak and others.
Packit 328d5c
//
Packit 328d5c
// This library is free software. Distribution and use rights are outlined in
Packit 328d5c
// the file "COPYING" which should have been included with this file.  If this
Packit 328d5c
// file is missing or damaged, see the license at:
Packit 328d5c
//
Packit 328d5c
//     http://www.fltk.org/COPYING.php
Packit 328d5c
//
Packit 328d5c
// Please report all bugs and problems on the following page:
Packit 328d5c
//
Packit 328d5c
//     http://www.fltk.org/str.php
Packit 328d5c
//
Packit 328d5c
Packit 328d5c
#include <FL/forms.H> // changed for fltk
Packit 328d5c
Packit 328d5c
static int border = 1; // changed from FL_TRANSIENT for fltk
Packit 328d5c
// (this is so the close box and Esc work to close the window)
Packit 328d5c
Packit 328d5c
typedef struct { Fl_Boxtype val; const char *name; } VN_struct;
Packit 328d5c
Packit 328d5c
static VN_struct btypes[]=
Packit 328d5c
{
Packit 328d5c
   {FL_NO_BOX,"no box"},
Packit 328d5c
   {FL_UP_BOX, "up box"},
Packit 328d5c
   {FL_DOWN_BOX,"down box"},
Packit 328d5c
   {FL_BORDER_BOX,"border box"},
Packit 328d5c
   {FL_SHADOW_BOX,"shadow box"},
Packit 328d5c
   {FL_FLAT_BOX,"flat box"},
Packit 328d5c
   {FL_FRAME_BOX,"frame box"},
Packit 328d5c
   {FL_EMBOSSED_BOX,"embossed box"},
Packit 328d5c
   {FL_ROUNDED_BOX,"rounded box"},
Packit 328d5c
   {FL_RFLAT_BOX,"rflat box"},
Packit 328d5c
   {FL_RSHADOW_BOX,"rshadow box"}, // renamed for fltk
Packit 328d5c
   {FL_OVAL_BOX,"oval box"},
Packit 328d5c
   {FL_ROUNDED3D_UPBOX,"rounded3d upbox"},
Packit 328d5c
   {FL_ROUNDED3D_DOWNBOX,"rounded3d downbox"},
Packit 328d5c
   {FL_OVAL3D_UPBOX,"oval3d upbox"},
Packit 328d5c
   {FL_OVAL3D_DOWNBOX,"oval3d downbox"},
Packit 328d5c
   {FL_PLASTIC_UP_BOX,"plastic upbox"},
Packit 328d5c
   {FL_PLASTIC_DOWN_BOX,"plastic downbox"},
Packit 328d5c
   {FL_GTK_UP_BOX,"GTK up box"},
Packit 328d5c
   {FL_GTK_ROUND_UP_BOX,"GTK round up box"},
Packit 328d5c
   {FL_GLEAM_UP_BOX,"Gleam up box"},
Packit 328d5c
   /* sentinel */
Packit 328d5c
   {(Fl_Boxtype)(-1)}
Packit 328d5c
};
Packit 328d5c
Packit 328d5c
#include "pixmaps/srs.xbm"
Packit 328d5c
Packit 328d5c
/*************** Callback **********************/
Packit 328d5c
Packit 328d5c
FL_FORM *form;
Packit 328d5c
Fl_Widget *tobj[18], *exitob, *btypeob, *modeob;
Packit 328d5c
Packit 328d5c
void
Packit 328d5c
boxtype_cb (Fl_Widget * ob, long)
Packit 328d5c
{
Packit 328d5c
  int i, req_bt = fl_get_choice(ob) - 1;
Packit 328d5c
  static int lastbt = -1;
Packit 328d5c
Packit 328d5c
  if(lastbt != req_bt)
Packit 328d5c
  {
Packit 328d5c
     fl_freeze_form (form);
Packit 328d5c
     fl_redraw_form (form);
Packit 328d5c
     for (i = 0; i < 18; i++)
Packit 328d5c
        fl_set_object_boxtype (tobj[i], btypes[req_bt].val);
Packit 328d5c
     fl_unfreeze_form (form);
Packit 328d5c
     lastbt = req_bt;
Packit 328d5c
     fl_redraw_form(form); // added for fltk
Packit 328d5c
  }
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
void
Packit 328d5c
mode_cb (Fl_Widget *, long) {
Packit 328d5c
  // empty
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
/*************** Creation Routines *********************/
Packit 328d5c
Packit 328d5c
void
Packit 328d5c
create_form_form (void)
Packit 328d5c
{
Packit 328d5c
  Fl_Widget *obj;
Packit 328d5c
Packit 328d5c
  form = fl_bgn_form(FL_NO_BOX, 720, 520);
Packit 328d5c
  obj = fl_add_box(FL_UP_BOX, 0, 0, 720, 520, "");
Packit 328d5c
  fl_set_object_color(obj, FL_BLUE, FL_COL1);
Packit 328d5c
  obj = fl_add_box(FL_DOWN_BOX, 10, 90, 700, 420, "");
Packit 328d5c
  fl_set_object_color(obj, FL_COL1, FL_COL1);
Packit 328d5c
  obj = fl_add_box(FL_DOWN_BOX, 10, 10, 700, 70, "");
Packit 328d5c
  fl_set_object_color(obj, FL_SLATEBLUE, FL_COL1);
Packit 328d5c
  tobj[0] = obj = fl_add_box(FL_UP_BOX, 30, 110, 110, 110, "Box");
Packit 328d5c
  tobj[1] = obj = fl_add_text(FL_NORMAL_TEXT, 30, 240, 110, 30, "Text");
Packit 328d5c
  tobj[2] = obj = fl_add_bitmap(FL_NORMAL_BITMAP, 40, 280, 90, 80, "Bitmap");
Packit 328d5c
  fl_set_object_lcol(obj, FL_BLUE);
Packit 328d5c
  tobj[3] = obj = fl_add_chart(FL_BAR_CHART, 160, 110, 160, 110, "Chart");
Packit 328d5c
  tobj[4] = obj = fl_add_clock(FL_ANALOG_CLOCK, 40, 390, 90, 90, "Clock");
Packit 328d5c
//fl_set_object_dblbuffer(tobj[4],1); // removed for fltk
Packit 328d5c
  tobj[5]=obj=fl_add_button(FL_NORMAL_BUTTON, 340, 110, 120, 30, "Button");
Packit 328d5c
  tobj[6]=obj=fl_add_lightbutton(FL_PUSH_BUTTON,340,150,120,30,"Lightbutton");
Packit 328d5c
  tobj[7]=obj=fl_add_roundbutton(FL_PUSH_BUTTON,340,190,120,30,"Roundbutton");
Packit 328d5c
  tobj[8]=obj=fl_add_slider(FL_VERT_SLIDER, 160, 250, 40, 230, "Slider");
Packit 328d5c
  tobj[9]=obj=fl_add_valslider(FL_VERT_SLIDER, 220, 250, 40, 230, "Valslider");
Packit 328d5c
  tobj[10]=obj=fl_add_dial (FL_LINE_DIAL, 280, 250, 100, 100, "Dial");
Packit 328d5c
  tobj[11]=obj=fl_add_positioner(FL_NORMAL_POSITIONER,280,380,150,100, "Positioner");
Packit 328d5c
  tobj[12]=obj=fl_add_counter (FL_NORMAL_COUNTER,480,110,210,30, "Counter");
Packit 328d5c
  tobj[13]=obj=fl_add_input (FL_NORMAL_INPUT, 520,170,170,30, "Input");
Packit 328d5c
  tobj[14]=obj=fl_add_menu (FL_PUSH_MENU, 400, 240, 100, 30, "Menu");
Packit 328d5c
  tobj[15]=obj=fl_add_choice (FL_NORMAL_CHOICE, 580, 250, 110, 30, "Choice");
Packit 328d5c
  tobj[16]=obj=fl_add_timer (FL_VALUE_TIMER, 580, 210, 110, 30, "Timer");
Packit 328d5c
//fl_set_object_dblbuffer(tobj[16], 1); // removed for fltk
Packit 328d5c
  tobj[17]=obj=fl_add_browser (FL_NORMAL_BROWSER,450,300,240, 180, "Browser");
Packit 328d5c
  exitob=obj= fl_add_button (FL_NORMAL_BUTTON, 590, 30, 100, 30, "Exit");
Packit 328d5c
  btypeob=obj= fl_add_choice (FL_NORMAL_CHOICE,110,30, 130, 30, "Boxtype");
Packit 328d5c
  fl_set_object_callback (obj, boxtype_cb, 0);
Packit 328d5c
  modeob = obj=fl_add_choice(FL_NORMAL_CHOICE,370,30,130,30,"Graphics mode");
Packit 328d5c
  fl_set_object_callback (obj, mode_cb, 0);
Packit 328d5c
  fl_end_form ();
Packit 328d5c
}
Packit 328d5c
/*---------------------------------------*/
Packit 328d5c
Packit 328d5c
void
Packit 328d5c
create_the_forms (void)
Packit 328d5c
{
Packit 328d5c
  create_form_form ();
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
/*************** Main Routine ***********************/
Packit 328d5c
Packit 328d5c
const char *browserlines[] = {
Packit 328d5c
   " ", "@C1@c@l@bObjects Demo",   " ",
Packit 328d5c
   "This demo shows you all",      "objects that currently",
Packit 328d5c
   "exist in the Forms Library.",  " ",
Packit 328d5c
   "You can change the boxtype",   "of the different objects",
Packit 328d5c
   "using the buttons at the",     "top of the form. Note that",
Packit 328d5c
   "some combinations might not",  "look too good. Also realize",
Packit 328d5c
   "that for all object classes",  "many different types are",
Packit 328d5c
   "available with different",     "behaviour.", " ",
Packit 328d5c
   "With this demo you can also",  "see the effect of the drawing",
Packit 328d5c
   "mode on the appearance of the","objects.",
Packit 328d5c
   0
Packit 328d5c
};
Packit 328d5c
Packit 328d5c
Packit 328d5c
int
Packit 328d5c
main (int argc, char *argv[])
Packit 328d5c
{
Packit 328d5c
  FL_COLOR c = FL_BLACK;
Packit 328d5c
  const char **p;
Packit 328d5c
  VN_struct *vn;
Packit 328d5c
Packit 328d5c
  fl_initialize(&argc, argv, "FormDemo", 0, 0);
Packit 328d5c
  create_the_forms ();
Packit 328d5c
  fl_set_bitmap_data (tobj[2], sorceress_width, sorceress_height, sorceress_bits);
Packit 328d5c
  fl_add_chart_value (tobj[3], 15, "item 1", c++);
Packit 328d5c
  fl_add_chart_value (tobj[3], 5, "item 2", c++);
Packit 328d5c
  fl_add_chart_value (tobj[3], -10, "item 3", c++);
Packit 328d5c
  fl_add_chart_value (tobj[3], 25, "item 4", c++);
Packit 328d5c
  fl_set_menu (tobj[14], "item 1|item 2|item 3|item 4|item 5");
Packit 328d5c
  fl_addto_choice (tobj[15], "item 1");
Packit 328d5c
  fl_addto_choice (tobj[15], "item 2");
Packit 328d5c
  fl_addto_choice (tobj[15], "item 3");
Packit 328d5c
  fl_addto_choice (tobj[15], "item 4");
Packit 328d5c
  fl_addto_choice (tobj[15], "item 5");
Packit 328d5c
  fl_set_timer (tobj[16], 1000.0);
Packit 328d5c
Packit 328d5c
  for ( p = browserlines; *p; p++)
Packit 328d5c
     fl_add_browser_line (tobj[17], *p);
Packit 328d5c
Packit 328d5c
  for ( vn = btypes; vn->val >= 0; vn++)
Packit 328d5c
    fl_addto_choice(btypeob, vn->name);
Packit 328d5c
Packit 328d5c
  fl_show_form (form, FL_PLACE_MOUSE, border, "Box types");
Packit 328d5c
Packit 328d5c
  while (fl_do_forms () != exitob)
Packit 328d5c
     ;
Packit 328d5c
Packit 328d5c
  return 0;
Packit 328d5c
}
Packit 328d5c
Packit 328d5c
//
Packit 328d5c
// End of "$Id: forms.cxx 10666 2015-04-03 12:18:31Z AlbrechtS $".
Packit 328d5c
//