Example #1
0
Widget MakeDrawArea(int width, int height, RedisplayCB redisplay, void *data)
{
  int    n = 0;
  Arg    wargs[5];              /* Used to set widget resources */
  Widget draw_widget;
  DrawInfo *di;

  if (lsx_curwin->toplevel == NULL && OpenDisplay(0, NULL) == 0)
    return NULL;

  di = (DrawInfo *)calloc(sizeof(DrawInfo), 1);
  if (di == NULL)
    return NULL;

  n = 0;
  XtSetArg(wargs[n], XtNwidth, width);          n++;
  XtSetArg(wargs[n], XtNheight,height);         n++;

  draw_widget = XtCreateManagedWidget("drawing_area", drawingAreaWidgetClass,
                                      lsx_curwin->form_widget,wargs,n);

  if (draw_widget == NULL)
   {
     free(di);
     return NULL;
   }

  di->drawgc     = setup_gc(draw_widget);
  di->foreground = BlackPixel(lsx_curwin->display, lsx_curwin->screen);
  di->background = WhitePixel(lsx_curwin->display, lsx_curwin->screen);
  di->mask       = 0xffffffff;

  di->user_data   = data;
  di->redisplay   = redisplay;

  XtAddCallback(draw_widget, XtNexposeCallback, (XtCallbackProc)_redisplay,di);
  XtAddCallback(draw_widget, XtNresizeCallback, (XtCallbackProc)_resize,   di);
  XtAddCallback(draw_widget, XtNinputCallback,  (XtCallbackProc)_do_input, di);
  XtAddCallback(draw_widget, XtNmotionCallback, (XtCallbackProc)_do_motion,di);

  lsx_curwin->last_draw_widget = draw_widget;

  di->widget = draw_widget;
  di->next = draw_info_head;
  draw_info_head = di;
  cur_di = di;

  /*
   * Make sure the font is set to something sane.
   */
  if (lsx_curwin->font == NULL)
    lsx_curwin->font = GetFont("fixed");
  SetWidgetFont(draw_widget, lsx_curwin->font);

  return draw_widget;
}
Example #2
0
int init_display(int argc, char **argv, MyProgram *me)
{
  Widget w[25];

  argc = OpenDisplay(argc, argv);
  if (argc == FALSE)
    return argc;


  w[0]  = MakeMenu("File");
  w[1]  = MakeMenuItem(w[0], "Load...",  load, me);
  w[2]  = MakeMenuItem(w[0], "Save...",  save, me);
  w[3]  = MakeMenuItem(w[0], "Quit",     quit, me);
 
  w[4]  = MakeMenu("Edit");
  w[5]  = MakeMenuItem(w[4], "Check me", check_me, me);
  w[6]  = MakeMenuItem(w[4], "Copy",  NULL, NULL);
  w[7]  = MakeMenuItem(w[4], "Paste", NULL, NULL);
  
  w[8]  = MakeButton("Color Stuff", do_stuff,   me); 
  w[9]  = MakeButton("More Stuff",  more_stuff, me);
  w[10] = MakeButton("Quit!",       quit,       me);

  w[11] = MakeDrawArea(X_SIZE, Y_SIZE, redisplay, me);
  w[12] = MakeScrollList(string_table, 125, 275, list_callback, NULL);
  
  w[13] = MakeHorizScrollbar(X_SIZE, scroll_func, me);
  w[14] = MakeHorizScrollbar(X_SIZE, scroll_func, me);
  w[15] = MakeVertScrollbar(Y_SIZE, scroll_func, me);

  w[16] = MakeToggle("Slow",    TRUE,  NULL,  toggle1, me);
  w[17] = MakeToggle("Fast",    FALSE, w[16], toggle2, me);
  w[18] = MakeToggle("Faster",  FALSE, w[16], toggle3, me);
  w[19] = MakeToggle("Fastest", FALSE, w[16], toggle4, me);

  w[20] = MakeToggle("Toggle me", FALSE, NULL, other_toggle, me);

  w[21] = MakeStringEntry("button.c", 435, string_func, me);
  w[22] = MakeTextWidget("button.c", TRUE, TRUE, 435, 200);
  w[23] = MakeLabel("   A Sample Libsx Demo Program (cool huh?)");


  SetWidgetPos(w[4],  PLACE_RIGHT, w[0], NO_CARE, NULL);

  SetWidgetPos(w[8],  PLACE_UNDER, w[0], NO_CARE,     NULL);
  SetWidgetPos(w[9],  PLACE_UNDER, w[0], PLACE_RIGHT, w[8]);
  SetWidgetPos(w[10], PLACE_UNDER, w[0], PLACE_RIGHT, w[9]);

  SetWidgetPos(w[11], PLACE_UNDER, w[8], NO_CARE, NULL); 

  SetWidgetPos(w[13], PLACE_UNDER, w[11], NO_CARE, NULL);
  SetWidgetPos(w[14], PLACE_UNDER, w[13], NO_CARE, NULL);
  SetWidgetPos(w[15], PLACE_RIGHT, w[11], PLACE_UNDER, w[8]);

  SetWidgetPos(w[12], PLACE_RIGHT, w[15], PLACE_UNDER, w[8]);

  SetWidgetPos(w[16], PLACE_RIGHT, w[13], PLACE_UNDER, w[15]);
  SetWidgetPos(w[17], PLACE_RIGHT, w[16], PLACE_UNDER, w[15]);
  SetWidgetPos(w[18], PLACE_RIGHT, w[13], PLACE_UNDER, w[16]);
  SetWidgetPos(w[19], PLACE_RIGHT, w[18], PLACE_UNDER, w[16]);

  SetWidgetPos(w[20], PLACE_RIGHT, w[10], PLACE_UNDER, w[0]);
  SetWidgetPos(w[21], PLACE_UNDER, w[18], NO_CARE, NULL);
  SetWidgetPos(w[22], PLACE_UNDER, w[21], NO_CARE, NULL);
  SetWidgetPos(w[23], PLACE_RIGHT, w[4],  NO_CARE, NULL);


  /*
   * initialize the state of the toggle variables.
   */
  me->toggle1 = TRUE;
  me->toggle2 = me->toggle3 = me->toggle4 = me->other_toggle = FALSE;

  me->list         = w[12];   /* save these widget values for later */
  me->str_entry    = w[21];
  me->text_widget  = w[22];
  me->draw_widget  = w[11];
  me->quit         = w[10];
  me->color_widget = w[8];

  me->draw_font = GetFont("10x20");
  if (me->draw_font == NULL)
    me->draw_font = GetFont("fixed");

  SetWidgetFont(me->draw_widget, me->draw_font);

  SetButtonDownCB(w[11], button_down);
  SetButtonUpCB(w[11],   button_up);
  SetKeypressCB(w[11],   keypress);

  SetScrollbar(w[13],   3.0,  14.0, 14.0);
  SetScrollbar(w[14], 250.0, 255.0,  1.0);
  SetScrollbar(w[15],  30.0, 100.0, 25.0);

  /*
   * Now actually put the display on the screen.
   */
  ShowDisplay();


  /*
   * Get some colors for drawing with.
   */
  GetStandardColors();

  me->col1 = GetNamedColor("peachpuff2");
  if (me->col1 == -1)
    fprintf(stderr, "Error getting color peachpuff\n");

  me->col2 = GetRGBColor(255, 0, 255);
  if (me->col2 == -1)
    fprintf(stderr, "Error getting RGB color 0 255 255\n");

  return argc;
}