Example #1
0
void popup_message_always(char *banner, char *message) {
    XmString msg_str;
    int j,i;
    Atom delw;


    if (disable_all_popups)
        return;

    if (banner == NULL || message == NULL)
        return;

    i=0;
    for (j=0; j<MAX_POPUPS; j++) {
        if (!pw[j].popup_message_dialog) {
            i=j;
            j=MAX_POPUPS+1;
        }
    }

    if(!pw[i].popup_message_dialog) {
        if (banner!=NULL && message!=NULL) {

begin_critical_section(&popup_message_dialog_lock, "popup_gui.c:popup_message" );

            pw[i].popup_message_dialog = XtVaCreatePopupShell(banner,
                xmDialogShellWidgetClass, appshell,
                XmNdeleteResponse, XmDESTROY,
                XmNdefaultPosition, FALSE,
                XmNtitleString,banner,
// An half-hearted attempt at fixing the problem where a popup
// comes up extremely small.  Setting a minimum size for the popup.
XmNminWidth, 220,
XmNminHeight, 80,
                XmNfontList, fontlist1,
                NULL);

            pw[i].pane = XtVaCreateWidget("popup_message pane",xmPanedWindowWidgetClass, pw[i].popup_message_dialog,
                          XmNbackground, colors[0xff],
                          NULL);

            pw[i].form =  XtVaCreateWidget("popup_message form",xmFormWidgetClass, pw[i].pane,
                            XmNfractionBase, 5,
                            XmNbackground, colors[0xff],
                            XmNautoUnmanage, FALSE,
                            XmNshadowThickness, 1,
                            NULL);

            pw[i].popup_message_data = XtVaCreateManagedWidget("popup_message message",xmLabelWidgetClass, pw[i].form,
                                      XmNtopAttachment, XmATTACH_FORM,
                                      XmNtopOffset, 10,
                                      XmNbottomAttachment, XmATTACH_NONE,
                                      XmNleftAttachment, XmATTACH_FORM,
                                      XmNleftOffset, 10,
                                      XmNrightAttachment, XmATTACH_FORM,
                                      XmNrightOffset, 10,
                                      XmNbackground, colors[0xff],
                                      XmNfontList, fontlist1,
                                      NULL);

            pw[i].button_close = XtVaCreateManagedWidget(langcode("UNIOP00003"),xmPushButtonGadgetClass, pw[i].form,
                                      XmNtopAttachment, XmATTACH_WIDGET,
                                      XmNtopWidget, pw[i].popup_message_data,
                                      XmNtopOffset, 10,
                                      XmNbottomAttachment, XmATTACH_FORM,
                                      XmNbottomOffset, 5,
                                      XmNleftAttachment, XmATTACH_POSITION,
                                      XmNleftPosition, 2,
                                      XmNrightAttachment, XmATTACH_POSITION,
                                      XmNrightPosition, 3,
                                      XmNbackground, colors[0xff],
                                      XmNfontList, fontlist1,
                                      NULL);

            sprintf(pw[i].name,"%d",i);

            msg_str=XmStringCreateLtoR(message,XmFONTLIST_DEFAULT_TAG);
            XtVaSetValues(pw[i].popup_message_data,XmNlabelString,msg_str,NULL);
            XmStringFree(msg_str);

            XtAddCallback(pw[i].button_close, XmNactivateCallback, popup_message_destroy_shell,(XtPointer)pw[i].name);

            delw = XmInternAtom(XtDisplay(pw[i].popup_message_dialog),"WM_DELETE_WINDOW", FALSE);

            XmAddWMProtocolCallback(pw[i].popup_message_dialog, delw, popup_message_destroy_shell, (XtPointer)pw[i].name);

            pos_dialog(pw[i].popup_message_dialog);

            XtManageChild(pw[i].form);
            XtManageChild(pw[i].pane);

end_critical_section(&popup_message_dialog_lock, "popup_gui.c:popup_message" );

            XtPopup(pw[i].popup_message_dialog,XtGrabNone);

// An half-hearted attempt at fixing the problem where a popup
// comes up extremely small.  Commenting out the below so we can
// change the size if necessary to read the message.
//            fix_dialog_size(pw[i].popup_message_dialog);

            pw[i].sec_opened=sec_now();
        }
    }
}
Example #2
0
File: popup.c Project: aosm/X11
void
PopupPopup(Widget parent, Widget popup, Bool transient, Bool first_time,
    int offset_x, int offset_y, String delAction)
{
    if (!transient && !first_time)
    {
	/*
	 * For non-transient windows, if this isn't the first time
	 * it's being popped up, just pop it up in the old position.
	 */

	XtPopup (popup, XtGrabNone);
	return;
    }
    else
    {
	Position parent_x, parent_y;
	Position root_x, root_y;
	Position popup_x, popup_y;
	Dimension parent_width, parent_height, parent_border;
	Dimension popup_width, popup_height, popup_border;
	char geom[16];
	Bool repos = 0;

	/*
	 * The window we pop up must be visible on the screen.  We first
	 * try to position it at the desired location (relative to the
	 * parent widget).  Once we are able to compute the popup's
	 * geometry (after it's realized), we can determine if we need
	 * to reposition it.
	 */

	XtVaGetValues (parent,
	    XtNx, &parent_x,
	    XtNy, &parent_y,
	    XtNwidth, &parent_width,
	    XtNheight, &parent_height,
	    XtNborderWidth, &parent_border,
	    NULL);

	XtTranslateCoords (parent, parent_x, parent_y, &root_x, &root_y);

	popup_x = root_x + offset_x;
	popup_y = root_y + offset_y;

	if (transient)
	{
	    XtVaSetValues (popup,
	        XtNx, popup_x,
	        XtNy, popup_y,
                NULL);
	}
	else
	{
	    sprintf (geom, "+%d+%d", popup_x, popup_y);

	    XtVaSetValues (popup,
	        XtNgeometry, geom,
                NULL);
	}

	if (first_time)
	{
	    /*
	     * Realize it for the first time
	     */

	    XtRealizeWidget (popup);


	    /*
	     * Set support for WM_DELETE_WINDOW
	     */

	    (void) SetWM_DELETE_WINDOW (popup, delAction);
	}

	/*
	 * Now make sure it's visible.
	 */

	XtVaGetValues (popup,
	    XtNwidth, &popup_width,
	    XtNheight, &popup_height,
	    XtNborderWidth, &popup_border,
	    NULL);

	popup_border <<= 1;

	if ((int) (popup_x + popup_width + popup_border) >
	    WidthOfScreen (XtScreen (topLevel)))
	{
	    popup_x = WidthOfScreen (XtScreen (topLevel)) -
		popup_width - popup_border - parent_width - parent_border;

	    repos = 1;
	}

	if ((int) (popup_y + popup_height + popup_border) >
	    HeightOfScreen (XtScreen (topLevel)))
	{
	    popup_y = HeightOfScreen (XtScreen (topLevel)) -
		popup_height - popup_border - parent_height - parent_border;

	    repos = 1;
	}

	if (repos)
	{
	    if (transient)
	    {
		XtVaSetValues (popup,
	            XtNx, popup_x,
	            XtNy, popup_y,
                    NULL);
	    }
	    else
	    {
		/*
		 * The only way we can reposition a non-transient
		 * is by unrealizing it, setting the position, then
		 * doing a realize.
		 */

		XtUnrealizeWidget (popup);

		sprintf (geom, "+%d+%d", popup_x, popup_y);

		XtVaSetValues (popup,
	            XtNgeometry, geom,
                    NULL);

		XtRealizeWidget (popup);

		(void) SetWM_DELETE_WINDOW (popup, delAction);
	    }
	}

	XtPopup (popup, XtGrabNone);
    }
}
Example #3
0
Widget CreateDialog(Widget parent, char *msg, char *deft,
		    char **buttons, int buttcnt, 
		    XtCallbackProc dialogCB,
		    int DialType)
/*- 
  this routine merely creates a dialog, it dosn't manage it, or wait for a
  response. Note: these dialogs are NOT auto-unmanaging.

  parent:  The parent of the dialog.
  msg:     message for the dialog to display.
  deft:    the default return string for prompt dialogs.
  buttons: array of null-terminated button names.
           the first one is the default button.
  buttcnt: the number of elements in buttons.
  dialogCB: a callback that is to be called when any button is pressed.  
            the button number is passed to the routine as client_data.
	    -1 is passed for the to dialogCB if the cancelCallback of the
	    dialog is invoked.
  DialType: one of
	    XmDIALOG_ERROR,
	    XmDIALOG_WARNING,
	    XmDIALOG_MESSAGE,
	    XmDIALOG_QUESTION,
	    XmDIALOG_WORKING.
 -*/
{
  Arg args[10];
  XmString xmstr[5], xmstr2;
  Widget dial, button, w, DefaultButton;
  int i, n;

  /* make the dialog box */
  n = 0;
  XtSetArg(args[n], XmNautoUnmanage, FALSE);  n++;

  dial = XmCreateMessageDialog(parent, "GXDialog", args, n);
  xmstr[0] = XmStringCreateLtoR(msg, XmFONTLIST_DEFAULT_TAG);
  if (deft)
    xmstr[1] = XmStringCreateLtoR(deft, XmFONTLIST_DEFAULT_TAG);
  else
    xmstr[1] = XmStringCreateLtoR("\0", XmFONTLIST_DEFAULT_TAG);
  xmstr[2] = XmStringCreateLtoR("test10", XmFONTLIST_DEFAULT_TAG);
  /* create buttons */
  DefaultButton = NULL;
  for (i = 0; i < buttcnt; i++) {
    n = 0;
    xmstr2 = XmStringCreateLtoR(buttons[i], XmFONTLIST_DEFAULT_TAG);
    XtSetArg(args[n], XmNlabelString, xmstr2);
    n++;
    button = XmCreatePushButton(dial, "button", args, n);
    XtAddCallback(button, XmNactivateCallback,
		  (XtCallbackProc) dialogCB, (XtPointer) i);
    XtManageChild(button);
    if (!DefaultButton)
      DefaultButton = button;
    XmStringFree(xmstr2);
  }
  XtVaSetValues(dial,
		XmNmessageString, xmstr[0],
		XmNdialogType, DialType,
		XmNdialogTitle, xmstr[2],
		XmNdefaultButton, DefaultButton,
		NULL);
    
  if (dialogCB)
    XtAddCallback(dial, XmNcancelCallback, (XtCallbackProc) dialogCB,
		  (XtPointer) - 1);
  /* unmanage default buttons */
  w=XmMessageBoxGetChild(dial, XmDIALOG_OK_BUTTON);
  if (w)
    XtUnmanageChild(w);
  w=XmMessageBoxGetChild(dial, XmDIALOG_HELP_BUTTON);
  if (w)
    XtUnmanageChild(w);
  w=XmMessageBoxGetChild(dial, XmDIALOG_CANCEL_BUTTON);
  if (w) {
    printf("Destroying cancel button %p\n",w);
    XtDestroyWidget(w);
  }
  XtManageChild(dial);

  XmStringFree(xmstr[0]);
  XmStringFree(xmstr[1]);
  XmStringFree(xmstr[2]);

  return (dial);
}
Example #4
0
/*
**  DisplayHistogram
*/
VBoolean 
DisplayHistogram(float *histo,VLong nvals,VRepnKind repn,double xmin,double xmax,
		 double average,double sigma)
{
  VImage image;
  int nbands = 1;
  int i,nrows,ncols;
  int r0,c0,xlen,ylen;
  int margin = 40;
  int right_margin = 40;
  int xstep,ystep,modu1,modu2;
  int ymax;
  int r1,r2,c1;
  char str[80];
  float nels,imax,u,d;
  Widget widget;


  imax = 0;
  nels = 0;
  for (i=0; i<nvals; i++) {
    if (histo[i] > imax) imax = i;
    nels += histo[i];
  }

  ymax = 0;
  for (i=0; i<nvals; i++) {
    histo[i] = (histo[i] * 100.0) / nels;
    if (histo[i] > ymax) ymax = (int) histo[i];
  }
  ymax += 2;


  /* get display size */
  ncols = 4 * nvals + margin + right_margin;
  if (ncols > WIDTH) 
    ncols = 3 * nvals + margin + right_margin;
  if (ncols > WIDTH) 
    ncols = 2 * nvals + margin + right_margin;
  if (ncols > WIDTH) 
    ncols = nvals + margin + right_margin;

  if (ncols < WIDTH) ncols= WIDTH;

  nrows = 512;


  widget = VXGetApplicationShell();
  XtVaSetValues(widget,XmNwidth,ncols + 100,XmNheight,nrows + 50,NULL);

  /* Display a white background image: */
  image = VCreateImage(nbands,nrows,ncols,VBitRepn);
  if (!image) VError("Error creating image");
  VFillImage(image,VAllBands,1);

  VXClearLines ();
  sprintf(str,"mean: %g  sigma: %g\n",average,sigma);
  VXDisplayMessage (TRUE,str);
  VXSetImage (image, 0, 1.0, 0, 0);

  /* set style */
  VXSetLineColor("black");
  VXSetTextColor("black");
  /*
  VXSetTextFont("times_roman10");
  */


  r0 = nrows - margin;      /* origin of coordinate axes */
  c0 = margin;

  xlen = ncols - margin - right_margin;    /* length of x axis */
  ylen = nrows - margin - right_margin;    /* length of y axis */

  xstep = xlen / nvals;   /* tics on x-axis */
  ystep = ylen / ymax;    /* tics on y-axis */


  /* 
  ** x-axis 
  */
  VXDrawLine(r0,c0-10,r0,c0 + xlen);

  r1 = r0;
  c1 = c0;
  if (xstep == 2) modu1 = 20;
  else if (xstep == 1) modu1 = 50;
  else modu1 = 10;
  if (xstep >= 3)
    modu2 = 1;
  else
    modu2 = 5;


  if (nvals == 256) modu1 = 20;
  else modu1 = 20;

  d = xmax - xmin;

  for (i=0; i<nvals; i++) {
    VXDrawLine(r1,c1,r1+8,c1);
    u = xmin + (float)i * (xmax - xmin)/(float)(nvals-1);

    if (nvals != 256) {
      if (d < 0.01) sprintf(str,"%.3f",u);
      else if (d < 1) sprintf(str,"%.3f",u);
      else if (d < 11) sprintf(str,"%.3f",u);
      else if (d < 110) sprintf(str,"%.2f",u);
      else if (d < 501) sprintf(str,"%.0f",u);
      else if (d < 1010) sprintf(str,"%.0f",u);
      else sprintf(str,"%.0f",u);
    }
    else 
      sprintf(str,"%.0f",u);

    VXDrawLine(r1,c1,r1+4,c1);
    if (i%modu1 == 0)
      VXDrawText(str,r1+25,c1-5);

    c1 += xstep;
  }


  /* 
  ** y axis 
  */
  VXDrawLine(r0+10,c0,r0 - ylen,c0);
  
  r1 = r0;
  c1 = c0;
  if (ymax < 30) {
    modu1 = 5;
    modu2 = 1;
  }
  else {
    modu1 = 10;
    modu2 = 2;
  }

  for (i=0; i<=ymax; i++) {
    if (i % modu1 == 0) {
      VXDrawLine(r1,c1-8,r1,c1);
      sprintf(str,"%d",i);
      VXDrawText(str,r1+5,c1-30);
      
    }
    else if (i % modu2 == 0) {
      VXDrawLine(r1,c1-4,r1,c1);
    }
    r1 -= ystep;
  }
  VXDrawText("% ",r1 + ystep / 2,c1-25);

  /*
  ** draw histogram
  */
  VXSetLineWidth((double) 2.0);
  r1 = r0;
  c1 = c0;
  for (i=0; i<nvals; i++) {
    r2 = r1 - histo[i] * ystep;
    VXDrawLine(r1,c1,r2,c1);
    c1 += xstep;
  }

  return TRUE;
}
Example #5
0
int MwDialogInputIcon(Widget pw, char *title,
		char *prompt, char *buffr, Pixmap icon)
{
	XtAppContext app_context = XtWidgetToApplicationContext(pw);
	String string;
	static int init_done = 0;

	status = MW_WAITING;

	if (!init_done) {
		XpmAttributes xpm_attr;
		static XpmColorSymbol none_color = { NULL, "None", (Pixel)0 };

		xpm_attr.valuemask = XpmReturnPixels|XpmColorSymbols;
		xpm_attr.colorsymbols = &none_color;
		xpm_attr.numsymbols = 1;
		XtVaGetValues(pw,
			XtNbackground, &none_color.pixel,
			(char *)0);
		XpmCreatePixmapFromData(XtDisplay(pw),
			DefaultRootWindow(XtDisplay(pw)),
			unknown_xpm, &default_icon, NULL, &xpm_attr);

		XtAppAddActions(app_context, actions, XtNumber(actions));
		init_done = 1;
	}

	pshell = XtVaCreatePopupShell("pshell",
		transientShellWidgetClass, pw,
		XtNtitle, _("Dialog"),
		(char *)0);
	dialog = XtVaCreateManagedWidget("dialog",
		formWidgetClass, pshell,
		(char *)0);
	dialogIcon = XtVaCreateManagedWidget("dialogIcon",
		labelWidgetClass, dialog,
		XtNleft, XtChainLeft,
		XtNright, XtChainLeft,
		XtNtop, XtChainTop,
		XtNright, XtChainTop,
		XtNpixmap, default_icon,
		(char *)0);
	dialogLabel = XtVaCreateManagedWidget("dialogLabel",
		labelWidgetClass, dialog,
		XtNleft, XtChainLeft,
		XtNright, XtChainRight,
		XtNtop, XtChainTop,
		XtNbottom, XtChainTop,
		XtNfromHoriz, dialogIcon,
		(char *)0);
	dialogText = XtVaCreateManagedWidget("dialogText",
		mwTextfieldWidgetClass, dialog,
		XtNwidth, 400,
		XtNleft, XtChainLeft,
		XtNright, XtChainRight,
		XtNtop, XtChainTop,
		XtNbottom, XtChainTop,
		XtNfromHoriz, dialogIcon,
		XtNfromVert, dialogLabel,
		(char *)0);
	wm_delete_window = XInternAtom(XtDisplay(pshell),
				"WM_DELETE_WINDOW", False);
	XtOverrideTranslations(pshell,
		XtParseTranslationTable(
			"<Message>WM_PROTOCOLS:	dialog-cancel()"));

	XtOverrideTranslations(dialogText,
		XtParseTranslationTable(
			"<Key>Return:	dialog-done()\n"
			"<Key>Escape:	dialog-cancel()"));

	dialogDone = add_button(dialog, "dialogDone", "OK",
		DialogDone, NULL);
	XtVaSetValues(dialogDone,
		XtNwidth, 80,
		XtNleft, XtChainLeft,
		XtNright, XtChainLeft,
		XtNtop, XtChainBottom,
		XtNbottom, XtChainBottom,
		XtNfromVert, dialogText,
		(char *)0);
	dialogCancel = add_button(dialog, "dialogCancel", "Cancel",
		DialogAbort, NULL);
	XtVaSetValues(dialogCancel,
		XtNwidth, 80,
		XtNleft, XtChainLeft,
		XtNright, XtChainLeft,
		XtNtop, XtChainBottom,
		XtNbottom, XtChainBottom,
		XtNfromVert, dialogText,
		XtNfromHoriz, dialogDone,
		(char *)0);

	if (icon == None) icon = default_icon;

	XtVaSetValues(dialogIcon,
		XtNbitmap, icon,
		(char *)0);
	XtVaSetValues(pshell,
		XtNtitle, title,
		(char *)0);
	MwLabelSet(dialogLabel, prompt);
	XtVaSetValues(dialogText,
		XtNstring, buffr,
		XtNinsertPosition, strlen(buffr),
		(char *)0);
	MwCenter(pshell);
	XtPopup(pshell, XtGrabExclusive);
	XSetWMProtocols(XtDisplay(pshell), XtWindow(pshell),
			&wm_delete_window, 1);
	XtSetKeyboardFocus(pshell, dialogText);

	while (status == MW_WAITING) {
		XEvent event_return;

		XtAppNextEvent(app_context, &event_return);
		XtDispatchEvent(&event_return);
	}

	XtVaGetValues(dialogText,
		XtNstring, &string,
		(char *)0);
	strcpy(buffr, string);
	XtDestroyWidget(pshell);
	return status;
}
Example #6
0
void activateCB_open_FindSet (Widget find_set_button, XtPointer cdata,
                              XmFileSelectionBoxCallbackStruct *cbstruct)
{
  Widget filter;
  Boolean use_bm = False;
  static char *use_bm_filter = "*.m.bm";
  static char *use_pm_filter = "*.m.pm";
  char *search_path;
  char *filter_field_title = NULL;
  int use_filter_field = False;
  char *file_filter;

  char **directories_list = GetIconSearchPathList();
  int numberOfTopButtons = 0;
  void *top_button_one_cb = NULL;
  void *top_button_two_cb = NULL;
  void *top_button_three_cb = NULL;
  char *top_button_one_label = NULL;
  char *top_button_two_label = NULL;
  char *top_button_three_label = NULL;
  int use_icon_name_field = True;
  int numberOfBottomButtons = 3;
  void *bottom_button_one_cb = (void *)load_icons;
  void *bottom_button_two_cb = NULL;
  void *bottom_button_three_cb = NULL;
  void *bottom_button_four_cb = NULL;
  char *bottom_button_one_label = NULL;   /* use default */
  char *bottom_button_two_label = NULL;   /* use default */
  char *bottom_button_three_label = NULL; /* use default */
  char *bottom_button_four_label = NULL;  /* use default */

  char *name_field_title;
  char *container_title;
  char *directory_title;
  char *dialog_title, *pre, *suf;

  name_field_title = XtNewString(GETMESSAGE(11, 12, "Enter Icon Filename"));
  container_title = XtNewString(GETMESSAGE(11, 11, "Icon Files"));
  directory_title = XtNewString(GETMESSAGE(11, 30, "Icon Folders"));

  pre = GETMESSAGE(3, 10, "Create Action");
  suf = GETMESSAGE(6, 18, "Find Set");
  dialog_title = XtMalloc(strlen(pre) + strlen(suf) + 4);
  sprintf(dialog_title, "%s - %s", pre, suf);

#ifdef DEBUG
  printf("activate Find Set button; client_data = %p\n", cdata); /* debug */
#endif

  XtVaGetValues (COLOR_MONO_OPTION, XmNset, &use_bm, NULL);

  if (use_bm) file_filter = use_bm_filter;
  else file_filter = use_pm_filter;

#ifndef _ICONSELECTOR_DESTROY_ENABLED
  if (!IconSelector) {
#endif  /* _ICONSELECTOR_DESTROY_ENABLED */
     IconSelector = create_icon_selection_dialog ((swidget) CreateActionAppShell,
                                               (unsigned char *)dialog_title,
                                               (unsigned char *)filter_field_title,
                                               use_filter_field,
                                               (unsigned char *)file_filter,
                                               (unsigned char *)directory_title,
                                               (unsigned char **)directories_list,
                                               (unsigned char *)container_title,
                                               numberOfTopButtons,
                                               (unsigned char *)top_button_one_label,
                                               (void (*)())top_button_one_cb,
                                               (unsigned char *)top_button_two_label,
                                               (void (*)())top_button_two_cb,
                                               (unsigned char *)top_button_three_label,
                                               (void (*)())top_button_three_cb,
                                               use_icon_name_field,
                                               (unsigned char *)name_field_title,
                                               numberOfBottomButtons,
                                               (unsigned char *)bottom_button_one_label,
                                               (void (*)())bottom_button_one_cb,
                                               (unsigned char *)bottom_button_two_label,
                                               (void (*)())bottom_button_two_cb,
                                               (unsigned char *)bottom_button_three_label,
                                               (void (*)())bottom_button_three_cb,
                                               (unsigned char *)bottom_button_four_label,
                                               (void (*)())bottom_button_four_cb);
#ifndef _ICONSELECTOR_DESTROY_ENABLED
  }
#endif  /* _ICONSELECTOR_DESTROY_ENABLED */
  XtFree(name_field_title);
  XtFree(container_title);
  XtFree(directory_title);
  XtFree(dialog_title);
  FreeIconSearchPathList(directories_list);
  XtVaSetValues (IconSelector, XmNuserData, cdata, NULL);
  UxPopupInterface (IconSelector, no_grab);
  XmProcessTraversal(ISD_SelectedIconTextField, XmTRAVERSE_CURRENT);
  return;
}
Example #7
0
Widget	CreateTabletControls(
  Widget	parent)
{
  Widget	form, form1, label, slider, frame, widget;

  /* create a parent form to hold all the tracking controls */
  form = XtVaCreateWidget("tablet_controls_form", xmFormWidgetClass,
			  parent,
			  XmNtopAttachment,     XmATTACH_FORM,
			  XmNbottomAttachment,	XmATTACH_FORM,
			  XmNleftAttachment,    XmATTACH_FORM,
			  XmNrightAttachment,  	XmATTACH_FORM,
			  NULL);

  /* create frame, form and label for the tracking parameters */
  frame = XtVaCreateManagedWidget("frame", xmFrameWidgetClass,
				  form,
				  XmNtopAttachment,     XmATTACH_FORM,
				  XmNleftAttachment,    XmATTACH_FORM,
				  XmNrightAttachment,  	XmATTACH_FORM,
				  NULL);

  form1 = XtVaCreateWidget("tablet_form1", xmFormWidgetClass,
			  frame,
			  XmNtopAttachment,     XmATTACH_FORM,
			  XmNbottomAttachment,	XmATTACH_FORM,
			  XmNleftAttachment,    XmATTACH_FORM,
			  XmNrightAttachment,  	XmATTACH_FORM,
			  NULL);

  label = XtVaCreateManagedWidget("tablet_ref_points", xmLabelWidgetClass,
				  frame,
				  XmNchildType,		XmFRAME_TITLE_CHILD,
				  XmNborderWidth,	0,
				  NULL);

  /* create sliders for the reference coordinates */
  slider = HGU_XmCreateHorizontalSlider("x1", form1,
					0.0, -1000.0, 2000.0, 0,
					NULL, NULL);
  XtVaSetValues(slider,
		XmNtopAttachment,	XmATTACH_FORM,
		XmNleftAttachment,	XmATTACH_FORM,
		XmNrightAttachment,	XmATTACH_FORM,
		NULL);
  widget = slider;

  slider = HGU_XmCreateHorizontalSlider("y1", form1,
					0.0, -1000.0, 2000.0, 0,
					NULL, NULL);
  XtVaSetValues(slider,
		XmNtopAttachment,	XmATTACH_WIDGET,
		XmNtopWidget,		widget,
		XmNleftAttachment,	XmATTACH_FORM,
		XmNrightAttachment,	XmATTACH_FORM,
		NULL);
  widget = slider;

  slider = HGU_XmCreateHorizontalSlider("x2", form1,
					150.0, -1000.0, 2000.0, 0,
					NULL, NULL);
  XtVaSetValues(slider,
		XmNtopAttachment,	XmATTACH_WIDGET,
		XmNtopWidget,		widget,
		XmNleftAttachment,	XmATTACH_FORM,
		XmNrightAttachment,	XmATTACH_FORM,
		NULL);
  widget = slider;

  slider = HGU_XmCreateHorizontalSlider("y2", form1,
					100.0, -1000.0, 2000.0, 0,
					NULL, NULL);
  XtVaSetValues(slider,
		XmNtopAttachment,	XmATTACH_WIDGET,
		XmNtopWidget,		widget,
		XmNleftAttachment,	XmATTACH_FORM,
		XmNrightAttachment,	XmATTACH_FORM,
		NULL);
  widget = slider;

  XtManageChild( form1 );

  tablet_controls = form;

  return( form );
}
Widget SelectionAttrDialog::createValueEditor(Widget mainForm)
{

    /////////////////////////////////////////////////////////////
    // Create the widgets from left to right and top to bottom.//
    /////////////////////////////////////////////////////////////

    // XtVaSetValues(mainForm,XmNautoUnmanage, False, NULL);

    XtVaSetValues(this->valueList,XmNvisibleItemCount, 10, NULL);

    //
    // The OK and CANCEL buttons. 
    //

    this->ok =  XtVaCreateManagedWidget(
        "okButton", xmPushButtonWidgetClass, mainForm, 
			XmNleftAttachment  , XmATTACH_FORM,
			XmNleftOffset	   , 5,
			XmNbottomAttachment, XmATTACH_FORM,
			XmNbottomOffset	   , 10,
			XmNrecomputeSize   , False,
			XmNwidth	   , 75,
			NULL);
		

    this->cancel =  XtVaCreateManagedWidget(
        "cancelButton", xmPushButtonWidgetClass, mainForm,
			XmNrightAttachment , XmATTACH_FORM,
			XmNrightOffset	   , 5,
			XmNbottomAttachment, XmATTACH_FORM,
			XmNbottomOffset	   , 10,
			XmNrecomputeSize   , False,
			XmNwidth	   , 75,
			NULL);

    Widget separator = XtVaCreateManagedWidget(
        "separator", xmSeparatorWidgetClass, mainForm, 
			XmNbottomAttachment, XmATTACH_WIDGET,
			XmNbottomWidget    , this->ok,
			XmNbottomOffset	   , 10,
			XmNleftAttachment  , XmATTACH_FORM,
			XmNleftOffset	   , 2, 
			XmNrightAttachment , XmATTACH_FORM,
			XmNrightOffset	   , 2, 
			NULL);

    //
    // The value text window 
    //
    this->valueText = XtVaCreateManagedWidget("valueText",
			xmTextWidgetClass , mainForm,
			XmNbottomAttachment, 	XmATTACH_WIDGET,
			XmNbottomWidget, 	separator,
			XmNbottomOffset,	10,
			XmNleftAttachment, 	XmATTACH_FORM,
			XmNleftOffset,		5,
			XmNcolumns,		14,
			NULL); 

    this->installValueEditorCallback(this->valueText, XmNactivateCallback);

    //
    // The label text window 
    //
    this->labelText = XtVaCreateManagedWidget("labelText",
			xmTextWidgetClass , mainForm,
			XmNbottomAttachment, 	XmATTACH_WIDGET,
			XmNbottomWidget, 	separator,
			XmNbottomOffset,	10,
			XmNleftAttachment, 	XmATTACH_WIDGET,
			XmNleftWidget, 		this->valueText,
			XmNleftOffset,		10,
			XmNrightAttachment, 	XmATTACH_FORM,
			XmNrightOffset,		5,
			NULL); 

    this->installValueEditorCallback(this->labelText, XmNactivateCallback);


    //
    // The Value label 
    //
    Widget valueLabel = XtVaCreateManagedWidget("valueLabel",
			xmLabelWidgetClass , 	mainForm,
			XmNbottomAttachment, 	XmATTACH_WIDGET,
			XmNbottomWidget, 	this->valueText,
			XmNbottomOffset,	5,
			XmNleftAttachment, 	XmATTACH_FORM,
			XmNleftOffset,		5,
			NULL); 
    //
    // The Label label 
    //
    Widget labelLabel = XtVaCreateManagedWidget("labelLabel",
			xmLabelWidgetClass, 	mainForm,
			XmNbottomAttachment, 	XmATTACH_WIDGET,
			XmNbottomWidget, 	this->valueText,
			XmNbottomOffset,	5,
			XmNleftAttachment, 	XmATTACH_OPPOSITE_WIDGET,
			XmNleftWidget, 		this->labelText,
			XmNleftOffset, 	 	0,
			NULL); 

    return valueLabel;
}
Example #9
0
Widget 
MenuBar::createPulldown ( 
	Widget parent, 
	CmdList *list, 
	Boolean help ,
	unsigned char type)
{
    int    i;
    Widget pulldown, cascade;
    Arg  args2[2];
    char * helpId;
    XmString label_str;

    if(type != XmMENU_POPUP)
	type = XmMENU_BAR;
    
    // Create a pulldown menu pane for this list of commands
    
    if( type == XmMENU_BAR) {
		pulldown = XmCreatePulldownMenu( parent,
				(char *) list->name(), NULL, 0 );
		label_str = XmStringCreateLocalized(list->getLabel());
		XtVaSetValues(pulldown,
			      XmNlabelString, label_str,
			      NULL);
		printHelpId("pulldown", pulldown);
		/* install callback */
		// XtAddCallback(pulldown, XmNhelpCallback, HelpCB, helpId);

		
		// Each entry in the menu bar must have a cascade button
		// from which the user can pull down the pane

		XtSetArg(args2[0], XmNsubMenuId, pulldown);
		cascade = XtCreateWidget ( list->name(), 
			       xmCascadeButtonWidgetClass,
			       parent, 
			       args2, 1);
		XtVaSetValues(cascade,
			      XmNlabelString, label_str,
			      NULL);
		if (help) {
			XtSetArg (args2[0], XmNmenuHelpWidget, cascade);
			XtSetValues (parent, args2, 1);
		}
		
		XtManageChild ( cascade );
		printHelpId("cascade", cascade);
		/* install callback */


		// Install callbacks for each of the 
		// pulldown menus so we can get
		// On Item help for them.

		helpId = XtName(cascade);
		if (helpId == "Mailbox") {
			XtAddCallback(cascade, XmNhelpCallback, 
				HelpCB, (void *)DTMAILCONTAINERMENUID);
		} else if (helpId == "Edit") {
			XtAddCallback(cascade, XmNhelpCallback, 
				HelpCB, (void *)DTMAILEDITMENUID);
		} else if (helpId == "Message") {
			XtAddCallback(cascade, XmNhelpCallback, 
				HelpCB, (void *)DTMAILMESSAGEMENUID);
		} else if (helpId == "Attachments") {
			XtAddCallback(cascade, XmNhelpCallback, 
				HelpCB, (void *)DTMAILATTACHMENUID);
		} else if (helpId == "View") {
			XtAddCallback(cascade, XmNhelpCallback, 
				HelpCB, (void *)DTMAILVIEWMENUID);
		} else if (helpId == "Compose") {
			XtAddCallback(cascade, XmNhelpCallback, 
				HelpCB, (void *)DTMAILCOMPOSEMENUID);
		}
     } else
		pulldown = _w;
	
	
    
    // Loop through the cmdList, creating a menu 
    // entry for each command. 
    
    for ( i = 0; i < list->size(); i++)
    {

	if(!strcmp((*list)[i]->className(), "CmdList")) {
	    Widget pane = createPulldown(pulldown, 
			(CmdList*) (*list)[i], FALSE, XmMENU_BAR);
	    ((CmdList *)(*list)[i])->setPaneWidget(pane);
	    label_str = XmStringCreateLocalized((*list)[i]->getLabel());
	    XtVaSetValues(pane, 
			  XmNlabelString, label_str,
			  NULL);
	} else {
	    if ( !strcmp((*list)[i]->className(),"SeparatorCmd")) {
		XtCreateManagedWidget ( (*list)[i]->name(),
					  xmSeparatorWidgetClass,
					  pulldown,
					  NULL, 0);
	    } else if (!strcmp((*list)[i]->className(),"ToggleButtonCmd")) {
		CmdInterface *ci;
		ci = new ToggleButtonInterface(pulldown, (*list)[i]);
		ci->manage();
	    } else if(!strcmp((*list)[i]->className(),"LabelCmd")) {
		Widget	_i18n;
		Arg _args[1];
		XmString xms;
		
		_i18n = XtCreateManagedWidget(
					(*list)[i]->name(),
					xmLabelWidgetClass,
					pulldown,
					NULL, 0
					);

		xms = XmStringCreateLocalized((char*) (*list)[i]->getLabel());
		XtSetArg( _args[0], XmNlabelString, xms );
		XtSetValues( _i18n, _args, 1 );
		XmStringFree(xms);
	    } else {
		CmdInterface *ci;
		ci  = new ButtonInterface ( pulldown, (*list)[i] );
		ci->manage();
	    }
	}
    }
    return(pulldown);
}
Example #10
0
/* Parse args and go */
int
main(int argc, char *argv[])
{
    XtAppContext context;

#ifndef HAVE_XTVAOPENAPPLICATION
    Display *display;
#endif
    XTickertapeRec rc;
    elvin_handle_t handle;
    elvin_error_t error;
    const char *user;
    const char *domain;
    const char *ticker_dir;
    const char *config_file;
    const char *groups_file;
    const char *usenet_file;
    const char *keys_file;
    const char *keys_dir;
    Widget top;
    const char *names[AN_MAX + 1];
    int i;

    /* Determine the name of the executable. */
    progname = xbasename(argv[0]);

#ifdef HAVE_XTVAOPENAPPLICATION
    /* Create the toplevel widget */
    top = XtVaOpenApplication(
        &context, "XTickertape",
        NULL, 0,
        &argc, argv, NULL,
        applicationShellWidgetClass,
        XtNborderWidth, 0,
        NULL);
#else
    /* Initialize the X Toolkit */
    XtToolkitInitialize();

    /* Create an application context */
    context = XtCreateApplicationContext();

    /* Open the display */
    display = XtOpenDisplay(context, NULL, NULL, "XTickertape",
                            NULL, 0, &argc, argv);
    if (display == NULL) {
        fprintf(stderr, "Error: Can't open display\n");
        exit(1);
    }

    /* Create the toplevel widget */
    top = XtAppCreateShell(NULL, "XTickertape", applicationShellWidgetClass,
                           display, NULL, 0);
#endif

    /* Load the application shell resources */
    XtGetApplicationResources(top, &rc, resources, XtNumber(resources),
                              NULL, 0);

    /* Make sure our app-defaults file has a version number */
    if (rc.version_tag == NULL) {
        app_defaults_version_error("app-defaults file not found or "
                                   "out of date");
        exit(1);
    }

    /* Make sure that version number is the one we want */
    if (strcmp(rc.version_tag, PACKAGE "-" VERSION) != 0) {
        app_defaults_version_error("app-defaults file has the wrong "
                                   "version number");
        exit(1);
    }

    /* Add a calback for when it gets destroyed */
    XtAppAddActions(context, actions, XtNumber(actions));

#if !defined(ELVIN_VERSION_AT_LEAST)
    /* Initialize the elvin client library */
    error = elvin_xt_init(context);
    if (error == NULL) {
        fprintf(stderr, "*** elvin_xt_init(): failed\n");
        exit(1);
    }

    /* Double-check that the initialization worked */
    if (elvin_error_is_error(error)) {
        eeprintf(error, "elvin_xt_init failed\n");
        exit(1);
    }

    /* Create a new elvin connection handle */
    handle = elvin_handle_alloc(error);
    if (handle == NULL) {
        eeprintf(error, "elvin_handle_alloc failed\n");
        exit(1);
    }

#elif ELVIN_VERSION_AT_LEAST(4, 1, -1)
    /* Allocate an error context */
    error = elvin_error_alloc(NULL, NULL);
    if (error == NULL) {
        fprintf(stderr, "%s: error: elvin_error_alloc failed\n", progname);
        exit(1);
    }

    /* Initialize the elvin client library */
    client = elvin_xt_init_default(context, error);
    if (client == NULL) {
        eeprintf(error, "elvin_xt_init failed\n");
        exit(1);
    }

    /* Create a new elvin connection handle */
    handle = elvin_handle_alloc(client, error);
    if (handle == NULL) {
        eeprintf(error, "elvin_handle_alloc failed\n");
        exit(1);
    }
#else /* ELVIN_VERSION_AT_LEAST */
# error "Unsupported Elvin library version"
#endif /* ELVIN_VERSION_AT_LEAST */

    /* Scan what's left of the arguments */
    parse_args(argc, argv, handle, &user, &domain,
               &ticker_dir, &config_file,
               &groups_file, &usenet_file,
               &keys_file, &keys_dir,
               error);

    /* Intern a bunch of atoms.  We jump through a few hoops in order
     * in order to do this in a single RPC to the X server. */
#ifdef USE_ASSERT
    memset(names, 0, sizeof(names));
#endif /* USE_ASSERT */
    for (i = 0; i <= AN_MAX; i++) {
        ASSERT(names[atom_list[i].index] == NULL);
        names[atom_list[i].index] = atom_list[i].name;
    }

    /* Make sure we've specified a name for each atom. */
    for (i = 0; i <= AN_MAX; i++) {
        ASSERT(names[i] != NULL);
    }

    /* Intern the atoms. */
    if (!XInternAtoms(XtDisplay(top), (char **)names, AN_MAX + 1,
                      False, atoms)) {
        fprintf(stderr, "%s: error: XInternAtoms failed\n", progname);
        exit(1);
    }

    /* Create an Icon for the root shell */
    XtVaSetValues(top, XtNiconWindow, create_icon(top), NULL);

    /* Create a tickertape */
    tickertape = tickertape_alloc(
        &rc, handle,
        user, domain,
        ticker_dir, config_file,
        groups_file, usenet_file,
        keys_file, keys_dir,
        top,
        error);

    /* Set up SIGHUP to reload the subscriptions */
    signal(SIGHUP, reload_subs);

#ifdef USE_VALGRIND
    /* Set up SIGUSR1 to invoke valgrind. */
    signal(SIGUSR1, count_leaks);
#endif /* USE_VALGRIND */

#ifdef HAVE_LIBXMU
    /* Enable editres support */
    XtAddEventHandler(top, (EventMask)0, True, _XEditResCheckMessages, NULL);
#endif /* HAVE_LIBXMU */

    /* Let 'er rip! */
    XtAppMainLoop(context);

    /* Keep the compiler happy */
    return 0;
}
Example #11
0
static Widget        _Uxbuild_kuipCommandP()
{
        Widget                _UxParent;


        /* Creation of kuipCommandP */
        _UxParent = XtVaCreatePopupShell( "kuipCommandP_shell",
                        xmDialogShellWidgetClass, UxTopLevel,
                        XmNallowShellResize, TRUE,
                        XmNtitle, "kuipCommandP",
                        NULL );

        kuipCommandP = XtVaCreateWidget( "kuipCommandP",
                        xmFormWidgetClass,
                        _UxParent,
                        XmNautoUnmanage, FALSE,
                        RES_CONVERT( XmNdialogTitle, "Command" ),
                        XmNdefaultPosition, FALSE,
                        XmNresizePolicy, XmRESIZE_ANY,
                        NULL );
        UxPutContext( kuipCommandP, (char *) UxKuipCommandPContext );


        /* Creation of commandSep */
        commandSep = XtVaCreateManagedWidget( "commandSep",
                        xmSeparatorGadgetClass,
                        kuipCommandP,
                        XmNheight, 10,
                        XmNbottomAttachment, XmATTACH_FORM,
                        XmNbottomOffset, 45,
                        XmNleftAttachment, XmATTACH_FORM,
                        XmNleftOffset, 0,
                        XmNrightAttachment, XmATTACH_FORM,
                        XmNrightOffset, 0,
                        NULL );
        UxPutContext( commandSep, (char *) UxKuipCommandPContext );


        /* Creation of km_cmdOK */
        km_cmdOK = XtVaCreateManagedWidget( "km_cmdOK",
                        xmPushButtonGadgetClass,
                        kuipCommandP,
                        XmNwidth, 80,
                        XmNheight, 30,
                        RES_CONVERT( XmNlabelString, "OK" ),
                        XmNshowAsDefault, 1,
                        XmNbottomAttachment, XmATTACH_FORM,
                        XmNbottomOffset, 5,
                        XmNleftAttachment, XmATTACH_FORM,
                        XmNleftOffset, 5,
                        XmNtopAttachment, XmATTACH_NONE,
                        XmNrightAttachment, XmATTACH_POSITION,
                        XmNrightOffset, 5,
                        XmNrightPosition, 20,
                        XmNmnemonicCharSet, "O",
                        NULL );
        UxPutContext( km_cmdOK, (char *) UxKuipCommandPContext );


        /* Creation of km_cmdEX */
        km_cmdEX = XtVaCreateManagedWidget( "km_cmdEX",
                        xmPushButtonGadgetClass,
                        kuipCommandP,
                        XmNwidth, 80,
                        XmNheight, 30,
                        RES_CONVERT( XmNlabelString, "Execute" ),
                        XmNbottomAttachment, XmATTACH_FORM,
                        XmNbottomOffset, 5,
                        XmNleftAttachment, XmATTACH_WIDGET,
                        XmNleftOffset, 5,
                        XmNleftWidget, km_cmdOK,
                        XmNrightAttachment, XmATTACH_POSITION,
                        XmNrightOffset, 5,
                        XmNrightPosition, 40,
                        RES_CONVERT( XmNmnemonic, "E" ),
                        NULL );
        UxPutContext( km_cmdEX, (char *) UxKuipCommandPContext );


        /* Creation of km_cmdRE */
        km_cmdRE = XtVaCreateManagedWidget( "km_cmdRE",
                        xmPushButtonGadgetClass,
                        kuipCommandP,
                        XmNwidth, 80,
                        XmNheight, 30,
                        XmNbottomAttachment, XmATTACH_FORM,
                        XmNbottomOffset, 5,
                        XmNleftAttachment, XmATTACH_WIDGET,
                        XmNleftOffset, 5,
                        XmNleftWidget, km_cmdEX,
                        XmNrightAttachment, XmATTACH_POSITION,
                        XmNrightOffset, 5,
                        XmNrightPosition, 60,
                        XmNtopAttachment, XmATTACH_NONE,
                        RES_CONVERT( XmNlabelString, "Reset" ),
                        RES_CONVERT( XmNmnemonic, "R" ),
                        NULL );
        UxPutContext( km_cmdRE, (char *) UxKuipCommandPContext );


        /* Creation of km_cmdCA */
        km_cmdCA = XtVaCreateManagedWidget( "km_cmdCA",
                        xmPushButtonGadgetClass,
                        kuipCommandP,
                        XmNwidth, 80,
                        XmNheight, 30,
                        XmNbottomAttachment, XmATTACH_FORM,
                        XmNbottomOffset, 5,
                        XmNleftAttachment, XmATTACH_WIDGET,
                        XmNleftOffset, 5,
                        XmNleftWidget, km_cmdRE,
                        XmNrightAttachment, XmATTACH_POSITION,
                        XmNrightOffset, 5,
                        XmNrightPosition, 80,
                        RES_CONVERT( XmNlabelString, "Cancel" ),
                        RES_CONVERT( XmNmnemonic, "C" ),
                        NULL );
        UxPutContext( km_cmdCA, (char *) UxKuipCommandPContext );


        /* Creation of km_cmdHE */
        km_cmdHE = XtVaCreateManagedWidget( "km_cmdHE",
                        xmPushButtonGadgetClass,
                        kuipCommandP,
                        XmNwidth, 80,
                        XmNheight, 30,
                        XmNbottomAttachment, XmATTACH_FORM,
                        XmNbottomOffset, 5,
                        XmNrightAttachment, XmATTACH_POSITION,
                        XmNrightOffset, 5,
                        XmNleftAttachment, XmATTACH_WIDGET,
                        XmNleftOffset, 5,
                        XmNleftWidget, km_cmdCA,
                        XmNrightPosition, 100,
                        RES_CONVERT( XmNlabelString, "Help" ),
                        RES_CONVERT( XmNmnemonic, "H" ),
                        NULL );
        UxPutContext( km_cmdHE, (char *) UxKuipCommandPContext );

        XtVaSetValues(kuipCommandP,
                        XmNdefaultButton, km_cmdOK,
                        NULL );


        XtAddCallback( kuipCommandP, XmNdestroyCallback,
                (XtCallbackProc) UxDestroyContextCB,
                (XtPointer) UxKuipCommandPContext);


        return ( kuipCommandP );
}
Example #12
0
static void
internal_print_statusline(Boolean error,
			  statusTimerT timeout,
			  const char *old_content,
			  const char *fmt,
			  va_list argp)
{
    if (!XtIsRealized(globals.widgets.top_level)
	|| !initialized
	|| (resource.expert_mode & XPRT_SHOW_STATUSLINE) == 0) {

	/* only print errors to stdout */
	if (!error)
	    return;
	
	if (!resource.hush_stdout && strlen(fmt) > 0) { /* check for strlen since sometimes we clear the statusline
							   by printing "" to it, and we don't want that on stdout */
	    fprintf(stdout, "xdvi: ");
	    if (old_content != NULL)
		(void)fputs(old_content, stdout);
	    (void)vfprintf(stdout, fmt, argp);
	    fputc('\n', stdout);
	    fflush(stdout);
	}
    }
    else {
	char buf[MAX_LEN + 1];
	size_t offset = 0;
	
	if (old_content != NULL && old_content[0] != '\0') {
	    offset += strlen(old_content);
	    strncpy(buf, old_content, MAX_LEN);
	    /* append separating space */
	    if (strlen(old_content) < MAX_LEN - 1) {
		strcat(buf, " ");
		offset++;
	    }
	}
	VSNPRINTF(buf + offset, MAX_LEN - offset, fmt, argp);	/* just throw away strings longer than MAX_LEN */
	buf[MAX_LEN] = '\0'; /* terminate buf */
	/*
	 * save current contents of statusline so that toggling the statusline
	 * on and off will display the same text again
	 */
	strcpy(g_string_savebuf, buf);
#ifdef MOTIF
	XmTextFieldSetString(statusline, buf);
#else
	XtVaSetValues(statusline, XtNlabel, buf, NULL);
#endif
	/* 	fprintf(stderr, "timeout: %d, id: %ld\n", timeout, clear_timeout_id); */
	if (timeout > 0) {
	    timeout *= 1000;	/* convert to miliseconds */

	    if (clear_timeout_id) {
		/* 		fprintf(stderr, "clearing!\n"); */
		if (globals.debug & DBG_EVENT)
		    fprintf(stderr, "%s:%d: removing timeout %ld\n", __FILE__, __LINE__, clear_timeout_id);
		XtRemoveTimeOut(clear_timeout_id);
	    }
	    clear_timeout_id = XtAppAddTimeOut(globals.app, timeout,
					       clear_statusline_timer_proc, (XtPointer) NULL);
	}
    }
}
Example #13
0
File: frame.cpp Project: EdgarTx/wx
bool wxFrame::XmDoCreateTLW(wxWindow* WXUNUSED(parent),
                            wxWindowID WXUNUSED(id),
                            const wxString& WXUNUSED(title),
                            const wxPoint& WXUNUSED(pos),
                            const wxSize& WXUNUSED(size),
                            long style,
                            const wxString& name)
{
    Widget frameShell;

    frameShell = XtCreatePopupShell( name, topLevelShellWidgetClass,
                                     (Widget)wxTheApp->GetTopLevelWidget(),
                                     NULL, 0 );

    XtVaSetValues(frameShell,
        // Allows menu to resize
        XmNallowShellResize, True,
        XmNdeleteResponse, XmDO_NOTHING,
        XmNmappedWhenManaged, False,
        XmNiconic, (style & wxICONIZE) ? True : False,
        NULL);

    m_frameShell = (WXWidget)frameShell;

    m_mainWidget = (WXWidget) XtVaCreateManagedWidget("main_window",
        xmMainWindowWidgetClass, frameShell,
        XmNresizePolicy, XmRESIZE_NONE,
        NULL);

    m_workArea = (WXWidget) XtVaCreateWidget("form",
        xmFormWidgetClass, (Widget) m_mainWidget,
        XmNresizePolicy, XmRESIZE_NONE,
        NULL);

    m_clientArea = (WXWidget) XtVaCreateWidget("client",
        xmBulletinBoardWidgetClass, (Widget) m_workArea,
        XmNmarginWidth, 0,
        XmNmarginHeight, 0,
        XmNrightAttachment, XmATTACH_FORM,
        XmNleftAttachment, XmATTACH_FORM,
        XmNtopAttachment, XmATTACH_FORM,
        XmNbottomAttachment, XmATTACH_FORM,
        NULL);

    XtVaSetValues((Widget) m_mainWidget,
        XmNworkWindow, (Widget) m_workArea,
        NULL);

    XtManageChild((Widget) m_clientArea);
    XtManageChild((Widget) m_workArea);

    XtTranslations ptr = XtParseTranslationTable( "<Configure>: resize()" );
    XtOverrideTranslations( (Widget) m_workArea, ptr );
    XtFree( (char *)ptr );

    /* Part of show-&-hide fix */
    XtAddEventHandler( frameShell, StructureNotifyMask,
                       False, (XtEventHandler)wxFrameMapProc,
                       (XtPointer)this );

    XtRealizeWidget(frameShell);

    wxAddWindowToTable( (Widget)m_workArea, this);
    wxAddWindowToTable( (Widget)m_clientArea, this);

    wxModelessWindows.Append( this );

    return true;
}
Example #14
0
File: frame.cpp Project: EdgarTx/wx
bool wxFrame::Create(wxWindow *parent,
                     wxWindowID id,
                     const wxString& title,
                     const wxPoint& pos,
                     const wxSize& size,
                     long style,
                     const wxString& name)
{
    if( !wxTopLevelWindow::Create( parent, id, title, pos, size, style,
                                   name ) )
        return false;

    m_backgroundColour =
        wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE);
    m_foregroundColour = *wxBLACK;
    m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);

    int x = pos.x, y = pos.y;
    int width = size.x, height = size.y;

    // Set reasonable values for position and size if defaults have been
    // requested
    //
    // MB TODO: something better than these arbitrary values ?
    // VZ       should use X resources for this...
    if ( width == -1 )
        width = 400;
    if ( height == -1 )
        height = 400;

    int displayW, displayH;
    wxDisplaySize( &displayW, &displayH );

    if ( x == -1 )
    {
        x = (displayW - width) / 2;
        if (x < 10) x = 10;
    }
    if ( y == -1 )
    {
        y = (displayH - height) / 2;
        if (y < 10) y = 10;
    }

    SetTitle( title );

    wxLogTrace(wxTRACE_Messages,
               "Created frame (0x%p) with work area 0x%p and client "
               "area 0x%p", m_mainWidget, m_workArea, m_clientArea);

    XtAddEventHandler((Widget) m_clientArea, ExposureMask,False,
        wxUniversalRepaintProc, (XtPointer) this);

    if (x > -1)
        XtVaSetValues((Widget) m_frameShell, XmNx, x, NULL);
    if (y > -1)
        XtVaSetValues((Widget) m_frameShell, XmNy, y, NULL);
    if (width > -1)
        XtVaSetValues((Widget) m_frameShell, XmNwidth, width, NULL);
    if (height > -1)
        XtVaSetValues((Widget) m_frameShell, XmNheight, height, NULL);

    ChangeFont(false);

    ChangeBackgroundColour();

    PreResize();

    wxSize newSize(width, height);
    wxSizeEvent sizeEvent(newSize, GetId());
    sizeEvent.SetEventObject(this);

    GetEventHandler()->ProcessEvent(sizeEvent);

    return true;
}
Example #15
0
void grayOut(Widget w)
{
  XtVaSetValues(w, XtNsensitive, (XtArgVal) False, NULL);
}
Example #16
0
Widget
MenuBar::addCommands(
    Widget pulldown,
    CmdList *new_list
)
{
    // if(isValidMenuPane(pulldown) == FALSE)
    // 	return NULL;

    int    i, num_children;
    WidgetList children;
    Boolean haveNoSeparator;
    int newItemIndex, numPBUnmanaged, tmpPBUnmanaged;

    XtVaGetValues(pulldown,
	XmNnumChildren, &num_children,
	NULL);
    
    children = (WidgetList)XtMalloc(sizeof(Widget) * num_children);
    
    XtVaGetValues(pulldown,
	XmNchildren, &children,
	NULL);

    // Handle the creation or management of the Separator.

    haveNoSeparator = TRUE;
    numPBUnmanaged = 0;
    
    for (i=0; (i < num_children); i++) {
	Widget wid = (Widget) children[i];
	if (XtIsSubclass(wid, xmSeparatorWidgetClass)) {
	    XtManageChild(wid);
	    haveNoSeparator = FALSE;
	}
	else if (XtIsSubclass(wid, xmPushButtonWidgetClass)) {
	    if (!XtIsManaged(wid)) { // If widget is unmanaged
		numPBUnmanaged++;
	    }
	}
    }
    if (haveNoSeparator) {
	XtCreateManagedWidget ("Separator",
		xmSeparatorWidgetClass,
		pulldown,
		NULL, 0);
	haveNoSeparator = FALSE;
    }
    
    // Now handle the pushButton case

    newItemIndex = 0;
    tmpPBUnmanaged = 0;

    // Loop through the cmdList, creating a menu 
    // entry for each command. 
	
    for (newItemIndex = 0; newItemIndex < new_list->size(); newItemIndex++) {

	tmpPBUnmanaged = numPBUnmanaged;

	if (numPBUnmanaged > 0) { // If there exists unmanaged PBs
	    for (i = 0; 
		 (i < num_children) && 
		 (tmpPBUnmanaged == numPBUnmanaged); 
		 i++) {

		Widget wid = (Widget) children[i];
		
		if (XtIsSubclass(wid, xmPushButtonWidgetClass)) {
		    if (!XtIsManaged(wid)) { 
			// If widget is unmanaged
			// Set its label to be the newItemIndex widget's.
			// Manage it.
			// Bump up newItemIndex
			XtVaSetValues(wid,
			    XmNlabelString, XmStringCreateLocalized(
				(char *) (*new_list)[newItemIndex]->getLabel()),
			    NULL);
			XtManageChild(wid);
			numPBUnmanaged--;
		    }
		}
	    }
	}
	else {		// No unmanaged push buttons available
	    CmdInterface *ci;
	    ci  = new ButtonInterface ( 
		pulldown, (*new_list)[newItemIndex] 
	    );
	    ci->manage();
	}
    }

    return(pulldown);
}
Example #17
0
void noTick(Widget w)
{
  XtVaSetValues(w, XtNleftBitmap, (XtArgVal) bm[NOTICK_BM], NULL);
}
Example #18
0
void
MenuBar::rotateLabels(
    Widget pulldown,
    int startindex,
    int endindex
)
{
    // if(isValidMenuPane(pulldown) == FALSE)
    // 	return;

    int    num_managed_wids=0, i, j, num_children, num_to_change;
    WidgetList children;
    XmString label, endlabel;
    Widget prevwid, wid;

    if (startindex < 0 || endindex < 0)
	return;

    XtVaGetValues(pulldown,
	XmNnumChildren, &num_children,
	NULL);

    if (startindex >= num_children || endindex >= num_children)
	return;
    
    num_to_change = endindex - startindex;
    if (num_children < num_to_change || num_to_change == 0) 
	return;

    children = (WidgetList)XtMalloc(sizeof(Widget) * num_children);

    XtVaGetValues(pulldown,
	XmNchildren, &children,
	NULL);

    // Some of the widgets may be unmanaged: find the first managed widget
    for (i = startindex; i < num_children; i++) {
        if (XtIsManaged(children[i]))
		break;
	startindex++;
    }

    if (startindex == num_children) 
	return;

    // Find the real endindex
    endindex = startindex+1;
    while (endindex < num_children) {
        if (XtIsManaged(children[endindex])) 
		num_managed_wids++;
	if (num_managed_wids == num_to_change)
		// We have found the endindex at this point
		break;
	endindex++;
    } 
 
    if (endindex == num_children) 
	return;

    wid = (Widget) children[endindex];
    XtVaGetValues(wid,
	XmNlabelString, &label,
	NULL);
    endlabel = XmStringCopy(label);

    j = i = endindex; 
    while (i > startindex) {

	do {
		if (--j < startindex) break;
		prevwid = (Widget) children[j];
	} while (!XtIsManaged(prevwid));

	XtVaGetValues(prevwid,
		XmNlabelString, &label,
		NULL);

	XtVaSetValues(wid,
		XmNlabelString, label,
		NULL);

	i = j;

	wid = (Widget) children[i];
    }

    wid = (Widget) children[startindex];
    XtVaSetValues(wid,
	XmNlabelString, endlabel,
	NULL);
    
    XmStringFree(endlabel);
}
Example #19
0
void MAPaintTabletInit(
  ThreeDViewStruct	*view_struct)
{
  TabletEvent	event;
  int		quitFlag;
  Widget	dialog;
  XmString	text, title;
  WlzDVertex2	tabVtxs[2], wlzVtxs[2];
  Widget	slider;
  WlzAffineTransform	*trans;

  /* ignore if already open */
  if( tablet ){
    return;
  }

  /* open the tablet */
  if( (tablet = TabletOpen(WACOM_IV_TABLET_TYPE,
			   "/dev/term/b", NULL)) == NULL ){
    HGU_XmUserError(globals.topl,
		    "Open Wacom Tablet:\n"
		    "    Failed to open the tablet, please check\n"
		    "    the tablet is connected to serial line b\n"
		    "    and switched on, then try again.",
		    XmDIALOG_FULL_APPLICATION_MODAL);
    return;
  }

  /* set tilt mode and start the tablet */
  TabletSetMode(tablet, TABLET_TILTMODE_MASK);
  tablet->cntrlMode2 |= TABLET_CORRECT_TILT_MASK;
  tablet->cntrlMode2 |= TABLET_TRANSFORM_MASK;
  TabletStart(tablet);

  /* if the tablet needs the coordinates set then do so here */
  if( !view_struct->tablet_initialised ){
    /* get first coordinate */
    /* put up an application modal dialog to request first
       coordinate */
    dialog = XmCreateMessageDialog(view_struct->canvas,
				   "MAPaint Message", NULL, 0);
    XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_CANCEL_BUTTON));
    XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_OK_BUTTON));
    XtSetSensitive(XmMessageBoxGetChild(dialog, XmDIALOG_HELP_BUTTON),
		   False);
    text  = XmStringCreateLtoR("Input tablet reference point 1 please",
			       XmSTRING_DEFAULT_CHARSET);
    title = XmStringCreateSimple("MAPaint Tablet Message");

    XtVaSetValues(dialog,
		  XmNmessageString,	text,
		  XmNdialogTitle,	title,
		  XmNdialogStyle,	XmDIALOG_FULL_APPLICATION_MODAL,
		  NULL);

    XmStringFree( text );
    XmStringFree( title );

    /* popup widget and process events */
    XtManageChild( dialog );
    XSync(XtDisplay(view_struct->canvas), False);
    quitFlag = 0;
    while( quitFlag < 100 ){
      if((XtAppPending(globals.app_con) > 0) ){
	XtAppProcessEvent(globals.app_con, XtIMAll);
      }
      else {
	XSync(XtDisplay(view_struct->canvas), False);
	usleep(1000);
	quitFlag++;
      }
    }
    
    quitFlag = 0;
    while( !quitFlag ){
      if( TabletNextEvent(tablet, &event) == TABLET_ERR_NONE ){
	if(event.buttonPressed && 
	   ((event.buttons == 1) || (event.buttons == 3))){
	  tabVtxs[0].vtX = event.x;
	  tabVtxs[0].vtY = event.y;
	  quitFlag = 1;
	  XBell(XtDisplay(view_struct->canvas), 100);
	  XFlush(XtDisplay(view_struct->canvas));
	}
      }
      else {
	TabletClose(tablet);
	tablet = NULL;
	XtDestroyWidget(dialog);
	return;
      }
    }

    /* get second coordinate */
    text  = XmStringCreateLtoR("Input tablet reference point 2 please",
			       XmSTRING_DEFAULT_CHARSET);

    XtVaSetValues(dialog,
		  XmNmessageString,	text,
		  NULL);

    XmStringFree( text );

    /* popup widget and process events */
    XtManageChild( dialog );
    XSync(XtDisplay(view_struct->canvas), False);
    while( (XtAppPending(globals.app_con) > 0) ){
      XtAppProcessEvent(globals.app_con, XtIMAll);
      XSync(XtDisplay(view_struct->canvas), False);
    }
    
    quitFlag = 0;
    sleep(1);
    TabletClearEvents(tablet);
    while( !quitFlag ){
      if( TabletNextEvent(tablet, &event) == TABLET_ERR_NONE ){
	if(event.buttonPressed && 
	   ((event.buttons == 1) || (event.buttons == 3))){
	  tabVtxs[1].vtX = event.x;
	  tabVtxs[1].vtY = event.y;
	  quitFlag = 1;
	  XBell(XtDisplay(view_struct->canvas), 100);
	  XFlush(XtDisplay(view_struct->canvas));
	}
      }
      else {
	TabletClose(tablet);
	XtDestroyWidget(dialog);
	tablet = NULL;
	return;
      }
    }
    TabletStop(tablet);
    XtDestroyWidget(dialog);
    usleep(10000);
    TabletClearEvents(tablet);

    /* set the reference coordinates */
    view_struct->ref1.vtX = tabVtxs[0].vtX;
    view_struct->ref1.vtY = tabVtxs[0].vtY;
    view_struct->ref2.vtX = tabVtxs[1].vtX;
    view_struct->ref2.vtY = tabVtxs[1].vtY;
  }
  else {
    tabVtxs[0].vtX = view_struct->ref1.vtX;
    tabVtxs[0].vtY = view_struct->ref1.vtY;
    tabVtxs[1].vtX = view_struct->ref2.vtX;
    tabVtxs[1].vtY = view_struct->ref2.vtY;
  }

  /* set tablet transform parameters */
  if((slider = XtNameToWidget(tablet_controls, "*.x1")) )
  {
    wlzVtxs[0].vtX = HGU_XmGetSliderValue(slider);
  }
  if((slider = XtNameToWidget(tablet_controls, "*.y1")) )
  {
    wlzVtxs[0].vtY = HGU_XmGetSliderValue(slider);
  }
  if((slider = XtNameToWidget(tablet_controls, "*.x2")) )
  {
    wlzVtxs[1].vtX = HGU_XmGetSliderValue(slider);
  }
  if( (slider = XtNameToWidget(tablet_controls, "*.y2")))
  {
    wlzVtxs[1].vtY = HGU_XmGetSliderValue(slider);
  }
  trans = WlzAffineTransformLSq2D(2, tabVtxs, 2, wlzVtxs, 0, NULL,
				  WLZ_TRANSFORM_2D_NOSHEAR, NULL);
  tablet->xTrans[0] = trans->mat[0][0];
  tablet->xTrans[1] = trans->mat[0][1];
  tablet->xTrans[2] = trans->mat[0][2];
  tablet->yTrans[0] = trans->mat[1][0];
  tablet->yTrans[1] = trans->mat[1][1];
  tablet->yTrans[2] = trans->mat[1][2];
  WlzFreeAffineTransform(trans);
  view_struct->tablet_initialised = 1;

  /* initialise the globals */
  modifiers = 0;
  tabletDrawingFlag = 0;
  quitDrawingTrigger = 0;
  if( tabletPoly ){
    WlzFreePolyDmn(tabletPoly);
    tabletPoly = NULL;
  }

  /* now add the tablet stream as an event input source */
  TabletStart(tablet);
  TabletClearEvents(tablet);
  tabletInputId = XtAppAddInput(globals.app_con, tablet->fd,
				(XtPointer) XtInputReadMask,
				tabletInputProc, (XtPointer) view_struct);

  return;
}
Example #20
0
/*######################### setup_mon_window() #########################*/
void
setup_mon_window(char *font_name)
{
   int             i,
                   his_log_length,
                   led_width,
                   new_max_bar_length;
   XmFontListEntry entry;

   /* Get width and height of font and fid for the GC. */
   if (font_struct != NULL)
   {
      XFreeFont(display, font_struct);
      font_struct = NULL;
   }
   if (fontlist != NULL)
   {
      XmFontListFree(fontlist);
      fontlist = NULL;
   }
   if ((font_struct = XLoadQueryFont(display, font_name)) == NULL)
   {
      (void)fprintf(stderr, "Could not load %s font.\n", font_name);
      if ((font_struct = XLoadQueryFont(display, DEFAULT_FONT)) == NULL)
      {
         (void)fprintf(stderr, "Could not load %s font.\n", DEFAULT_FONT);
         exit(INCORRECT);
      }
      else
      {
         (void)strcpy(font_name, DEFAULT_FONT);
      }
   }
   if ((entry = XmFontListEntryLoad(display, font_name, XmFONT_IS_FONT, "TAG1")) == NULL)
   {
       (void)fprintf(stderr,
                     "Failed to load font with XmFontListEntryLoad() : %s (%s %d)\n",
                     strerror(errno), __FILE__, __LINE__);
       exit(INCORRECT);
   }
   fontlist = XmFontListAppendEntry(NULL, entry);
   XmFontListEntryFree(&entry);

   if (line_height != 0)
   {
      /* Set the font for the monitor pulldown. */
      XtVaSetValues(mw[MON_W], XmNfontList, fontlist, NULL);
      if ((mcp.show_ms_log != NO_PERMISSION) ||
          (mcp.show_mon_log != NO_PERMISSION) ||
          (mcp.mon_info != NO_PERMISSION) ||
          (mcp.retry != NO_PERMISSION) ||
          (mcp.switch_afd != NO_PERMISSION) ||
          (mcp.disable != NO_PERMISSION))
      {
         if (mcp.show_ms_log != NO_PERMISSION)
         {
            XtVaSetValues(ow[MON_SYS_LOG_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(pw[0], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_mon_log != NO_PERMISSION)
         {
            XtVaSetValues(ow[MON_LOG_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(pw[1], XmNfontList, fontlist, NULL);
         }
         if (mcp.mon_info != NO_PERMISSION)
         {
            XtVaSetValues(ow[MON_INFO_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(pw[4], XmNfontList, fontlist, NULL);
         }
         if (mcp.retry != NO_PERMISSION)
         {
            XtVaSetValues(ow[MON_RETRY_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(pw[2], XmNfontList, fontlist, NULL);
         }
         if (mcp.switch_afd != NO_PERMISSION)
         {
            XtVaSetValues(ow[MON_SWITCH_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(pw[3], XmNfontList, fontlist, NULL);
         }
         if (mcp.disable != NO_PERMISSION)
         {
            XtVaSetValues(ow[MON_DISABLE_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(pw[5], XmNfontList, fontlist, NULL);
         }
         if ((ping_cmd != NULL) || (traceroute_cmd != NULL))
         {
            XtVaSetValues(ow[MON_TEST_W], XmNfontList, fontlist, NULL);
            if (ping_cmd != NULL)
            {
               XtVaSetValues(tw[PING_W], XmNfontList, fontlist, NULL);
            }
            if (traceroute_cmd != NULL)
            {
               XtVaSetValues(tw[TRACEROUTE_W], XmNfontList, fontlist, NULL);
            }
         }
      }
      XtVaSetValues(ow[MON_SELECT_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(ow[MON_EXIT_W], XmNfontList, fontlist, NULL);

      /* Set the font for the RAFD pulldown. */
      if ((mcp.afd_ctrl != NO_PERMISSION) ||
          (mcp.show_slog != NO_PERMISSION) ||
          (mcp.show_elog != NO_PERMISSION) ||
          (mcp.show_rlog != NO_PERMISSION) ||
          (mcp.show_tlog != NO_PERMISSION) ||
          (mcp.show_ilog != NO_PERMISSION) ||
          (mcp.show_plog != NO_PERMISSION) ||
          (mcp.show_olog != NO_PERMISSION) ||
          (mcp.show_dlog != NO_PERMISSION) ||
          (mcp.show_queue != NO_PERMISSION) ||
          (mcp.afd_load != NO_PERMISSION))
      {
         XtVaSetValues(mw[LOG_W], XmNfontList, fontlist, NULL);
         if (mcp.afd_ctrl != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_AFD_CTRL_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_slog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_SYSTEM_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_elog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_EVENT_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_rlog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_RECEIVE_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_tlog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_TRANS_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_ilog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_INPUT_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_plog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_PRODUCTION_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_olog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_OUTPUT_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_dlog != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_DELETE_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.show_queue != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_SHOW_QUEUE_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.afd_load != NO_PERMISSION)
         {
            XtVaSetValues(vw[MON_VIEW_LOAD_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(lw[FILE_LOAD_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(lw[KBYTE_LOAD_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(lw[CONNECTION_LOAD_W], XmNfontList, fontlist, NULL);
            XtVaSetValues(lw[TRANSFER_LOAD_W], XmNfontList, fontlist, NULL);
         }
      }

      /* Set the font for the Control pulldown. */
      if ((mcp.amg_ctrl != NO_PERMISSION) ||
          (mcp.fd_ctrl != NO_PERMISSION) ||
          (mcp.rr_dc != NO_PERMISSION) ||
          (mcp.rr_hc != NO_PERMISSION) ||
          (mcp.edit_hc != NO_PERMISSION) ||
          (mcp.dir_ctrl != NO_PERMISSION) ||
          (mcp.startup_afd != NO_PERMISSION) ||
          (mcp.shutdown_afd != NO_PERMISSION))
      {
         XtVaSetValues(mw[CONTROL_W], XmNfontList, fontlist, NULL);
         if (mcp.amg_ctrl != NO_PERMISSION)
         {
            XtVaSetValues(cw[AMG_CTRL_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.fd_ctrl != NO_PERMISSION)
         {
            XtVaSetValues(cw[FD_CTRL_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.rr_dc != NO_PERMISSION)
         {
            XtVaSetValues(cw[RR_DC_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.rr_hc != NO_PERMISSION)
         {
            XtVaSetValues(cw[RR_HC_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.edit_hc != NO_PERMISSION)
         {
            XtVaSetValues(cw[EDIT_HC_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.dir_ctrl != NO_PERMISSION)
         {
            XtVaSetValues(cw[DIR_CTRL_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.startup_afd != NO_PERMISSION)
         {
            XtVaSetValues(cw[STARTUP_AFD_W], XmNfontList, fontlist, NULL);
         }
         if (mcp.shutdown_afd != NO_PERMISSION)
         {
            XtVaSetValues(cw[SHUTDOWN_AFD_W], XmNfontList, fontlist, NULL);
         }
      }

      /* Set the font for the Setup pulldown. */
      XtVaSetValues(mw[CONFIG_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(sw[FONT_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(sw[ROWS_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(sw[STYLE_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(sw[HISTORY_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(sw[MON_OTHER_W], XmNfontList, fontlist, NULL);
      if (have_groups == YES)
      {
         XtVaSetValues(sw[MON_OPEN_ALL_GROUPS_W], XmNfontList, fontlist, NULL);
         XtVaSetValues(sw[MON_CLOSE_ALL_GROUPS_W], XmNfontList, fontlist, NULL);
      }
      XtVaSetValues(sw[MON_SAVE_W], XmNfontList, fontlist, NULL);

      /* Set the font for the Help pulldown. */
#ifdef _WITH_HELP_PULLDOWN
      XtVaSetValues(mw[HELP_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(hw[ABOUT_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(hw[HYPER_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(hw[VERSION_W], XmNfontList, fontlist, NULL);
#endif

      /* Set the font for the Row pulldown. */
      XtVaSetValues(rw[ROW_0_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_1_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_2_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_3_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_4_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_5_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_6_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_7_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_8_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_9_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_10_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_11_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_12_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_13_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_14_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_15_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_16_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_17_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_18_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_19_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(rw[ROW_20_W], XmNfontList, fontlist, NULL);

      /* Set the font for the Line Style pulldown. */
      XtVaSetValues(lsw[STYLE_0_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(lsw[STYLE_1_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(lsw[STYLE_2_W], XmNfontList, fontlist, NULL);

      /* Set the font for the history pulldown. */
      for (i = 0; i < NO_OF_HISTORY_LOGS; i++)
      {
         XtVaSetValues(hlw[i], XmNfontList, fontlist, NULL);
      }

      /* Set the font for the Other options pulldown. */
      XtVaSetValues(oow[FORCE_SHIFT_SELECT_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(oow[AUTO_SAVE_W], XmNfontList, fontlist, NULL);
      XtVaSetValues(oow[FRAMED_GROUPS_W], XmNfontList, fontlist, NULL);
   }

   glyph_height       = font_struct->ascent + font_struct->descent;
   glyph_width        = font_struct->per_char->width;
   new_max_bar_length = glyph_width * BAR_LENGTH_MODIFIER;

   /* We now have to recalculate the length of all */
   /* bars and the scale, because a font change    */
   /* might have occurred.                         */
   if (new_max_bar_length != max_bar_length)
   {
      unsigned int new_bar_length;

      max_bar_length = new_max_bar_length;
      step_size = MAX_INTENSITY / max_bar_length;

      /* NOTE: We do not care what the line style is because the */
      /*       following could happen: font size = 7x13 style =  */
      /*       chars + bars, the user now wants chars only and   */
      /*       then reduces the font to 5x7. After a while he    */
      /*       wants the bars again. Thus we always need to re-  */
      /*       calculate the bar length and queue scale!         */
      for (i = 0; i < no_of_afds; i++)
      {
         /* Calculate new scale for active transfers bar. */
         if (connect_data[i].max_connections < 1)
         {
            connect_data[i].scale[ACTIVE_TRANSFERS_BAR_NO - 1] = (double)max_bar_length;
         }
         else
         {
            connect_data[i].scale[ACTIVE_TRANSFERS_BAR_NO - 1] = max_bar_length / connect_data[i].max_connections;
         }
         if (connect_data[i].no_of_transfers == 0)
         {
            new_bar_length = 0;
         }
         else if (connect_data[i].no_of_transfers >= connect_data[i].max_connections)
              {
                 new_bar_length = max_bar_length;
              }
              else
              {
                 new_bar_length = connect_data[i].no_of_transfers * connect_data[i].scale[ACTIVE_TRANSFERS_BAR_NO - 1];
              }
         if (new_bar_length >= max_bar_length)
         {
            connect_data[i].bar_length[ACTIVE_TRANSFERS_BAR_NO] = max_bar_length;
            connect_data[i].blue_color_offset = MAX_INTENSITY;
            connect_data[i].green_color_offset = 0;
         }
         else
         {
            connect_data[i].bar_length[ACTIVE_TRANSFERS_BAR_NO] = new_bar_length;
            connect_data[i].blue_color_offset = new_bar_length * step_size;
            connect_data[i].green_color_offset = MAX_INTENSITY - connect_data[i].blue_color_offset;
         }

         /* Calculate new scale for error bar. */
         if (connect_data[i].no_of_hosts < 1)
         {
            connect_data[i].scale[HOST_ERROR_BAR_NO - 1] = (double)max_bar_length;
         }
         else
         {
            connect_data[i].scale[HOST_ERROR_BAR_NO - 1] = max_bar_length / connect_data[i].no_of_hosts;
         }
         if (connect_data[i].host_error_counter == 0)
         {
            connect_data[i].bar_length[HOST_ERROR_BAR_NO] = 0;
         }
         else if (connect_data[i].host_error_counter >= connect_data[i].no_of_hosts)
              {
                 connect_data[i].bar_length[HOST_ERROR_BAR_NO] = max_bar_length;
              }
              else
              {
                 connect_data[i].bar_length[HOST_ERROR_BAR_NO] = connect_data[i].host_error_counter *
                                                                 connect_data[i].scale[HOST_ERROR_BAR_NO - 1];
              }

         /* Calculate new bar length for the transfer rate. */
         if (connect_data[i].average_tr > 1.0)
         {
            /* First ensure we do not divide by zero. */
            if (connect_data[i].max_average_tr < 2.0)
            {
               connect_data[i].bar_length[MON_TR_BAR_NO] =
                 log10(connect_data[i].average_tr) *
                 max_bar_length /
                 log10((double) 2.0);
            }
            else
            {
               connect_data[i].bar_length[MON_TR_BAR_NO] =
                 log10(connect_data[i].average_tr) *
                 max_bar_length /
                 log10(connect_data[i].max_average_tr);
            }
         }
         else
         {
            connect_data[i].bar_length[MON_TR_BAR_NO] = 0;
         }
      } /* for (i = 0; i < no_of_afds; i++) */
   }

   text_offset     = font_struct->ascent;
   line_height     = SPACE_ABOVE_LINE + glyph_height + SPACE_BELOW_LINE;
   bar_thickness_3 = glyph_height / 3;
   y_offset_led    = (glyph_height - glyph_width) / 2;
   led_width       = glyph_height / 3;
   y_center_log    = SPACE_ABOVE_LINE + (glyph_height / 2);
   if (his_log_set > 0)
   {
      his_log_length  = (his_log_set * bar_thickness_3) + DEFAULT_FRAME_SPACE;
   }
   else
   {
      his_log_length  = 0;
   }
   line_length     = DEFAULT_FRAME_SPACE +
                     (MAX_AFDNAME_LENGTH * glyph_width) +
                     DEFAULT_FRAME_SPACE +
                     (3 * (led_width + PROC_LED_SPACING)) +
                     glyph_height + (glyph_height / 2) + DEFAULT_FRAME_SPACE +
                     his_log_length + DEFAULT_FRAME_SPACE;

   if (line_style == BARS_ONLY)
   {
      line_length += (int)max_bar_length + DEFAULT_FRAME_SPACE;
   }
   else  if (line_style == CHARACTERS_ONLY)
         {
            line_length += (32 * glyph_width) + DEFAULT_FRAME_SPACE;
         }
         else
         {
            line_length += (32 * glyph_width) + DEFAULT_FRAME_SPACE +
                           (int)max_bar_length + DEFAULT_FRAME_SPACE;
         }

   x_offset_led = DEFAULT_FRAME_SPACE + (MAX_AFDNAME_LENGTH * glyph_width) +
                  DEFAULT_FRAME_SPACE;
   x_offset_log_status = x_offset_led + (3 * (led_width + PROC_LED_SPACING)) +
                         (glyph_height / 2) + DEFAULT_FRAME_SPACE;
   x_center_log_status = x_offset_log_status + (glyph_height / 2);
   x_offset_log_history = x_offset_log_status + glyph_height +
                          DEFAULT_FRAME_SPACE;
   for (i = 0; i < LOG_FIFO_SIZE; i++)
   {
      coord[i].x = x_center_log_status +
                   (int)((glyph_height / 2) *
                   cos((double)((log_angle * i * PI) / 180)));
      coord[i].y = y_center_log -
                   (int)((glyph_height / 2) *
                   sin((double)((log_angle * i * PI) / 180)));
   }
   if (line_style == BARS_ONLY)
   {
      x_offset_bars = x_offset_log_history + his_log_length;
   }
   else  if (line_style == CHARACTERS_ONLY)
         {
            x_offset_characters = x_offset_log_history + his_log_length;
            x_offset_ec = x_offset_characters + (27 * glyph_width);
            x_offset_eh = x_offset_ec + (3 *glyph_width);
         }
         else
         {
            x_offset_characters = x_offset_log_history + his_log_length;
            x_offset_bars = x_offset_characters + (32 * glyph_width) +
                            DEFAULT_FRAME_SPACE;
            x_offset_ec = x_offset_characters + (27 * glyph_width);
            x_offset_eh = x_offset_ec + (3 *glyph_width);
         }

   return;
}
Example #21
0
static void
ToolTipPost (XtPointer client_data,
             XtIntervalId * id)
{
    Widget w = (Widget) client_data;

    int rx,
        ry,
        x,
        y;
    unsigned int key;
    Window root,
           child;
    XtWidgetGeometry geo;
    Position destX,
             destY;

    XmToolTipConfigTrait ttp; /* ToolTip pointer */

    ttp = ToolTipGetData (w);

    if (ttp == NULL)
    {
        XtWarning ("ToolTipGetData() returned NULL in ToolTipPost()");
        return;
    }

    ttp->timer = (XtIntervalId) NULL;

    XQueryPointer (XtDisplay (w),
                   XtWindow (w), &root, &child, &rx, &ry, &x, &y, &key);

    if (ttp->duration_timer != (XtIntervalId) NULL)
    {
        XtRemoveTimeOut (ttp->duration_timer);
        ttp->duration_timer = (XtIntervalId) NULL;
    }

    if (XmIsPrimitive(w) || XmIsGadget(w))
    {
        XtVaSetValues (ttp->label,
                       XmNlabelString,
                       XmGetToolTipString(w),
                       NULL);
    }
    else
    {
        XmString string;

        string = XmStringCreateLocalized (XtName (w));
        XtVaSetValues (ttp->label, XmNlabelString, string, NULL);
        XmStringFree (string);
    }
    XtQueryGeometry (ttp->label, NULL, &geo);

    /* rws 25 Feb 2001
       Fix for Bug #1153
       Don't let the tip be off the right/bottom of the screen
     */
    destX = rx + (XmIsGadget (w) ? XtX (w) : 0) - x + XtWidth (w) / 2;
    if (destX + geo.width > WidthOfScreen (XtScreen (w)))
    {
        destX = WidthOfScreen (XtScreen (w)) - geo.width;
    }
    destY = ry + (XmIsGadget (w) ? XtY (w) : 0) - y + XtHeight (w);
    if (destY + geo.height > HeightOfScreen (XtScreen (w)))
    {
        destY = ry + (XmIsGadget (w) ? XtY (w) : 0) - y - geo.height;
    }

    XtVaSetValues (XtParent (ttp->label),
                   XmNx, rx + 1,
                   XmNy, ry + 1, XmNwidth, 1, XmNheight, 1, NULL);
    ttp->slider =
        XtVaCreateWidget ("ToolTipSlider", xmSlideContextWidgetClass,
                          XmGetXmDisplay (XtDisplay (w)), XmNslideWidget,
                          XtParent (ttp->label),
                          XmNslideDestX, destX,
                          XmNslideDestY, destY,
                          XmNslideDestWidth, geo.width,
                          XmNslideDestHeight, geo.height, NULL);

    XtAddCallback (ttp->slider, XmNslideFinishCallback,
                   (XtCallbackProc) ToolTipPostFinish, ttp);

    XtPopup (XtParent (ttp->label), XtGrabNone);
}
Example #22
0
static int motFileDlgPopup(Ihandle* ih, int x, int y)
{
  InativeHandle* parent = iupDialogGetNativeParent(ih);
  Widget filebox, dialog;
  int dialogtype, style = XmDIALOG_FULL_APPLICATION_MODAL;
  IFnss file_cb = NULL;
  Widget preview_canvas = NULL;
  char* value;

  iupAttribSetInt(ih, "_IUPDLG_X", x);   /* used in iupDialogUpdatePosition */
  iupAttribSetInt(ih, "_IUPDLG_Y", y);

  value = iupAttribGetStr(ih, "DIALOGTYPE");
  if (iupStrEqualNoCase(value, "SAVE"))
    dialogtype = IUP_DIALOGSAVE;
  else if (iupStrEqualNoCase(value, "DIR"))
    dialogtype = IUP_DIALOGDIR;
  else
    dialogtype = IUP_DIALOGOPEN;
  iupAttribSetInt(ih, "_IUPDLG_DIALOGTYPE", dialogtype);

  if (parent)
  {
    filebox = XmCreateFileSelectionDialog(parent, "filedialog", NULL, 0);
    dialog = XtParent(filebox);
  }
  else
  {
    dialog = XtAppCreateShell(NULL, "filedialog", topLevelShellWidgetClass, iupmot_display, NULL, 0);
    filebox = XmCreateFileSelectionBox(dialog, "filebox", NULL, 0);
    style = XmDIALOG_MODELESS;
    XtVaSetValues(dialog,
      XmNmwmInputMode, MWM_INPUT_FULL_APPLICATION_MODAL,
      XmNmappedWhenManaged, False,
      XmNsaveUnder, True,
      NULL);
  }
  if (!filebox)
    return IUP_NOERROR;

  if (!iupAttribGetBoolean(ih, "SHOWHIDDEN"))
    XtVaSetValues(filebox, XmNfileFilterStyle, XmFILTER_HIDDEN_FILES, NULL);

  value = iupAttribGet(ih, "TITLE");
  if (!value)
  {
    if (dialogtype == IUP_DIALOGSAVE)
      value = "IUP_SAVEAS";
    else if (dialogtype == IUP_DIALOGOPEN)
      value = "IUP_OPEN";
    else
      value = "IUP_SELECTDIR";
    iupAttribSetStr(ih, "TITLE", iupStrMessageGet(value));
  }
  iupmotSetString(filebox, XmNdialogTitle, value);

  XtVaSetValues(filebox,
                XmNdialogStyle, style,
                XmNautoUnmanage, False,
                NULL);

  if (dialogtype == IUP_DIALOGDIR)
    XtVaSetValues(filebox, XmNfileTypeMask, XmFILE_DIRECTORY, NULL);

  /* just check for the path inside FILE */
  value = iupAttribGet(ih, "FILE");
  if (value && value[0] == '/')
  {
    char* dir = iupStrFileGetPath(value);
    iupAttribStoreStr(ih, "DIRECTORY", dir);
    free(dir);
  }

  /* set XmNdirectory before XmNpattern and before XmNdirSpec */

  value = iupAttribGet(ih, "DIRECTORY");
  if (value)
    iupmotSetString(filebox, XmNdirectory, value);

  value = iupAttribGet(ih, "FILTER");
  if (value)
  {
    char *filter = value;
    char *p = strchr(value, ';');
    if (p) 
    {
      int size = p-value;
      filter = (char*)malloc(size+1);
      memcpy(filter, value, size);
      filter[size] = 0;
    }

    iupmotSetString(filebox, XmNpattern, filter);

    if (filter != value) 
      free(filter);
  }

  value = iupAttribGet(ih, "FILE");
  if (value)
  {
    char* file = value;

    if (value[0] != '/')  /* if does not contains a full path, then add the directory */
    {
      char* cur_dir = NULL;
      char* dir = iupAttribGet(ih, "DIRECTORY");
      if (!dir)
      {
        cur_dir = iupdrvGetCurrentDirectory();
        dir = cur_dir;
      }

      file = iupStrFileMakeFileName(dir, value);

      if (cur_dir)
        free(cur_dir);
    }

  /* clear value before setting. Do not know why we have to do this, 
     but if not cleared it will fail to set the XmNdirSpec value. */
    iupmotSetString(filebox, XmNdirSpec, "");
    iupmotSetString(filebox, XmNdirSpec, file);

    if (file != value)
      free(file);
  }

  if (!IupGetCallback(ih, "HELP_CB"))
    XtUnmanageChild(XmFileSelectionBoxGetChild(filebox, XmDIALOG_HELP_BUTTON));

  XtAddCallback(filebox, XmNokCallback, (XtCallbackProc)motFileDlgCallback, (XtPointer)ih);
  XtAddCallback(filebox, XmNcancelCallback, (XtCallbackProc)motFileDlgCallback, (XtPointer)ih);
  XtAddCallback(filebox, XmNhelpCallback, (XtCallbackProc)motFileDlgHelpCallback, (XtPointer)ih);

  if (dialogtype == IUP_DIALOGDIR)
  {
    Widget new_folder = XtVaCreateManagedWidget("new_folder", xmPushButtonWidgetClass, filebox, 
                                                XmNlabelType, XmSTRING, 
                                                NULL);
    iupmotSetString(new_folder, XmNlabelString, iupStrMessageGet("IUP_CREATEFOLDER"));
    XtAddCallback(new_folder, XmNactivateCallback, (XtCallbackProc)motFileDlgNewFolderCallback, (XtPointer)filebox);
  }
  else
  {
    file_cb = (IFnss)IupGetCallback(ih, "FILE_CB");
    if (file_cb)
    {
      Widget list = XmFileSelectionBoxGetChild(filebox, XmDIALOG_LIST);
      XtAddCallback(list, XmNbrowseSelectionCallback, (XtCallbackProc)motFileDlgBrowseSelectionCallback, (XtPointer)ih);
      list = XmFileSelectionBoxGetChild(filebox, XmDIALOG_DIR_LIST);
      XtAddCallback(list, XmNbrowseSelectionCallback, (XtCallbackProc)motFileDlgBrowseSelectionCallback, (XtPointer)ih);

      if (iupAttribGetBoolean(ih, "SHOWPREVIEW"))
      {
        Widget frame = XtVaCreateManagedWidget("preview_canvas", xmFrameWidgetClass, filebox, 
                                                        XmNshadowType, XmSHADOW_ETCHED_IN,
                                                        NULL);

        preview_canvas = XtVaCreateManagedWidget("preview_canvas", xmDrawingAreaWidgetClass, frame, 
                                                        XmNwidth, 180, 
                                                        XmNheight, 150,
                                                        XmNresizePolicy, XmRESIZE_GROW,
                                                        NULL);

        XtAddCallback(preview_canvas, XmNexposeCallback, (XtCallbackProc)motFileDlgPreviewCanvasExposeCallback, (XtPointer)ih);
        XtAddCallback(preview_canvas, XmNresizeCallback, (XtCallbackProc)motFileDlgPreviewCanvasResizeCallback,  (XtPointer)ih);

        iupAttribSetStr(ih, "_IUPDLG_FILEBOX", (char*)filebox);
      }
    }
  }

  XmAddWMProtocolCallback(dialog, iupmot_wm_deletewindow, motFileDlgCBclose, (XtPointer)ih);
  XtManageChild(filebox);

  XtRealizeWidget(dialog);
  ih->handle = dialog;
  iupDialogUpdatePosition(ih);
  ih->handle = NULL;  /* reset handle */

  if (file_cb)
  {
    if (preview_canvas)
      motFileDlgPreviewCanvasInit(ih, preview_canvas);

    file_cb(ih, NULL, "INIT");
  }

  if (style == XmDIALOG_MODELESS)
    XtPopup(dialog, XtGrabExclusive);

  /* while the user hasn't provided an answer, simulate main loop.
  ** The answer changes as soon as the user selects one of the
  ** buttons and the callback routine changes its value. */
  iupAttribSetStr(ih, "STATUS", NULL);
  while (iupAttribGet(ih, "STATUS") == NULL)
    XtAppProcessEvent(iupmot_appcontext, XtIMAll);

  if (file_cb)
  {
    if (preview_canvas)
      XFreeGC(iupmot_display, (GC)iupAttribGet(ih, "PREVIEWDC"));

    file_cb(ih, NULL, "FINISH");
  }

  if (!iupAttribGet(ih, "_IUP_WM_DELETE"))
  {
    XtUnmanageChild(filebox);

    if (style == XmDIALOG_MODELESS)
    {
      XtPopdown(dialog);
      XtDestroyWidget(dialog);
    }
  }

  return IUP_NOERROR;
}
Example #23
0
int MwListBox(Widget pw, char *text, char *choices[], int nchoices)
{
	Widget form, buttonframe,
     		buttonbox, label, viewport, listframe, list,
		okbutton, cancelbutton;
	int n;
	XtAppContext app_context = XtWidgetToApplicationContext(pw);
	Screen *s = XtScreen(pw);
	unsigned long white = WhitePixelOfScreen(s);

	listshell = XtVaCreatePopupShell("lsel_shell",
		transientShellWidgetClass, pw,
		XtNtitle, _("List"),
		XtNwidth, 300,
		XtNheight, 300,
		(char *)0);
	form = XtVaCreateManagedWidget("lsel_form",
		mwRudegridWidgetClass, listshell,
		XtNxLayout, "5 100% 5",
		XtNyLayout, "5 100% 5 35",
		(char *)0);
	buttonframe = XtVaCreateManagedWidget("lsel_buttonframe",
		mwFrameWidgetClass, form,
		XtNgridy, 3,
		XtNgridWidth, 3,
		XtNshadowWidth, 1,
		(char *)0);
	buttonbox = XtVaCreateManagedWidget("lsel_buttonbox",
		boxWidgetClass, buttonframe,
		XtNborderWidth, 0,
		(char *)0);
	listframe = XtVaCreateManagedWidget("lsel_listframe",
		mwFrameWidgetClass, form,
		XtNgridx, 1,
		XtNgridy, 1,
		XtNshadowType, Groove,
		XtNmarginWidth, 2,
		XtNmarginHeight, 2,
		XtNallowResize, False,
		(char *)0);
	label = XtVaCreateManagedWidget("lsel_label",
		labelWidgetClass, listframe,
		(char *)0);
	MwLabelSet(label, text);
	XtVaSetValues(listframe,
		XtNtitle, label,
		(char *)0);
	viewport = XtVaCreateManagedWidget("lsel_viewport",
		viewportWidgetClass, listframe,
		XtNforceBars, True,
		XtNborderWidth, 0,
		(char *)0);
	list = XtVaCreateManagedWidget("lsel_list",
		listWidgetClass, viewport,
		XtNbackground, white,
		(char *)0);
	XawListChange(list, choices, nchoices, 0, True);
	XtVaSetValues(list, XtNwidth, MwWidthGet(list)+20, (char *)0);
	okbutton = add_button(buttonbox, "lsel_okbutton",
		"OK", listsel_clicked, (XtPointer)1);
	cancelbutton = add_button(buttonbox, "lsel_cancelbutton",
		"Cancel", listsel_clicked, (XtPointer)0);
	status = MW_WAITING;
	MwCenter(listshell);
	XtPopup(listshell, XtGrabNonexclusive);
	XawListChange(list, choices, nchoices, 0, True);
	wm_del(listshell);

	while (status == MW_WAITING) {
		XEvent event_return;
		XtAppNextEvent(app_context, &event_return);
		XtDispatchEvent(&event_return);
	}
	n = XawListShowCurrent(list)->list_index;
	XtDestroyWidget(listshell);
	if (status != MW_ABORT)	/* clicked OK */
		return n;
	else		/* clicked Cancel */
		return -1;
}
Example #24
0
void wxBitmapButton::OnSetBitmap()
{
    wxBitmapButtonBase::OnSetBitmap();

    if ( m_bitmapsOriginal[State_Normal].IsOk() )
    {
        Pixmap pixmap = 0;
        Pixmap insensPixmap = 0;
        Pixmap armPixmap = 0;

        // Must re-make the bitmap to have its transparent areas drawn
        // in the current widget background colour.
        if ( m_bitmapsOriginal[State_Normal].GetMask() )
        {
            WXPixel backgroundPixel;
            XtVaGetValues((Widget) m_mainWidget,
                          XmNbackground, &backgroundPixel,
                          NULL);

            wxColour col;
            col.SetPixel(backgroundPixel);

            wxBitmap newBitmap =
                wxCreateMaskedBitmap(m_bitmapsOriginal[State_Normal], col);
            m_bitmaps[State_Normal] = newBitmap;
            m_bitmapCache.SetBitmap( m_bitmaps[State_Normal] );

            pixmap = (Pixmap) m_bitmaps[State_Normal].GetDrawable();
        }
        else
        {
            m_bitmapCache.SetBitmap( m_bitmaps[State_Normal] );
            pixmap = (Pixmap) m_bitmapCache.GetLabelPixmap(m_mainWidget);
        }

        if (m_bitmapsOriginal[State_Disabled].IsOk())
        {
            if (m_bitmapsOriginal[State_Disabled].GetMask())
            {
                WXPixel backgroundPixel;
                XtVaGetValues((Widget) m_mainWidget,
                              XmNbackground, &backgroundPixel,
                              NULL);

                wxColour col;
                col.SetPixel(backgroundPixel);

                wxBitmap newBitmap =
                    wxCreateMaskedBitmap(m_bitmapsOriginal[State_Disabled], col);
                m_bitmaps[State_Disabled] = newBitmap;

                insensPixmap = (Pixmap) m_bitmaps[State_Disabled].GetDrawable();
            }
            else
                insensPixmap = (Pixmap) m_bitmapCache.GetInsensPixmap(m_mainWidget);
        }
        else
            insensPixmap = (Pixmap) m_bitmapCache.GetInsensPixmap(m_mainWidget);

        // Now make the bitmap representing the armed state
        if (m_bitmapsOriginal[State_Pressed].IsOk())
        {
            if (m_bitmapsOriginal[State_Pressed].GetMask())
            {
                WXPixel backgroundPixel;
                XtVaGetValues((Widget) m_mainWidget,
                              XmNarmColor, &backgroundPixel,
                              NULL);

                wxColour col;
                col.SetPixel(backgroundPixel);

                wxBitmap newBitmap =
                    wxCreateMaskedBitmap(m_bitmapsOriginal[State_Pressed], col);
                m_bitmaps[State_Pressed] = newBitmap;

                armPixmap = (Pixmap) m_bitmaps[State_Pressed].GetDrawable();
            }
            else
                armPixmap = (Pixmap) m_bitmapCache.GetArmPixmap(m_mainWidget);
        }
        else
            armPixmap = (Pixmap) m_bitmapCache.GetArmPixmap(m_mainWidget);

        XtVaSetValues ((Widget) m_mainWidget,
            XmNlabelPixmap, pixmap,
            XmNlabelInsensitivePixmap, insensPixmap,
            XmNarmPixmap, armPixmap,
            XmNlabelType, XmPIXMAP,
            NULL);
    }
    else
    {
        // Null bitmap: must not use current pixmap
        // since it is no longer valid.
        XtVaSetValues ((Widget) m_mainWidget,
            XmNlabelType, XmSTRING,
            XmNlabelPixmap, XmUNSPECIFIED_PIXMAP,
            XmNlabelInsensitivePixmap, XmUNSPECIFIED_PIXMAP,
            XmNarmPixmap, XmUNSPECIFIED_PIXMAP,
            NULL);
    }
}
Example #25
0
void writesdm(char *filename)
{
  cdmObjectHandle ds, mesh, meshref;
  cdmObjectHandle PtVec3C, PtScalarT, ZoneScalarT, FldHandle;
  cdm_int64 status;

  short flag;
  long i, j, nvect;
  char str2[] = "Error - cannot open file: ";
  XmString string, string1, string2;
  double *temparray, *tempvect1, *tempvect2, *tempvect3;


   /*  Create the dataset that contains the field data. */
   printf("\nStoring Field data in CDM file \"%s\".\n", filename);
   ds = cdmDataset_Create(cdmHDF5, cdmCreate, filename);

   if (ds < 0)
     {
      errorfile = 0;
      string1 = XmStringLtoRCreate(str2,
                                  XmSTRING_DEFAULT_CHARSET);
      string2 = XmStringLtoRCreate(filnam,
                                  XmSTRING_DEFAULT_CHARSET);
      string = XmStringConcat(string1,string2);
      XtVaSetValues(objerrlab,XmNlabelString,string,NULL);
      XmStringFree(string);
      XmStringFree(string1);
      XmStringFree(string2);
      MyManageChild(errorform);
      return;
     }

   mesh = cdmGenPolyhedralMesh_Create(ds, 3, 3, nnodes, "XCMUPoly3DMesh");
   if (mesh < 0)
     {
      printf("Cannot create mesh.\n");
      cdmDataset_Delete(ds);
      return;
     }

   status = cdmGenPolyhedralMesh_Commit(mesh);

   /*  Write velocities.  */
   flag = -1;
   if (nvectin > -1) flag = 1;
   else if (cvectin > -1) flag = 0;
   if (flag > -1)
     {

      /*  Define velocity field template.  */
      PtVec3C = cdmGenPolyhedralMeshFieldTemplate_Create(ds, mesh, 3, 
                    "ThreeCompPtVector");
      if (PtVec3C < 0)
        {
	 printf("Cannot create ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtVec3C, 1, 
                    cdm0Cell);
      if (status < 0)
        {
	 printf("Cannot create ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtVec3C, 1, 
                    cdmFloat64);
      if (status < 0)
        {
	 printf("Cannot create ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtVec3C, 2, 
                  cdm0Cell);
      if (status < 0)
        {
	 printf("Cannot create ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
        }

      status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtVec3C, 2, 
                  cdmFloat64);
      if (status < 0)
        {
	 printf("Cannot create ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtVec3C, 3, 
                  cdm0Cell);
      if (status < 0)
        {
	 printf("Cannot create ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtVec3C, 3, 
                  cdmFloat64);
      if (status < 0)
        {
	 printf("Cannot create ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_Commit(PtVec3C);
      if (status < 0)
        {
	 printf("Cannot commit ThreeCompPtVector template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      /*  Fill vector arrays.  */
      if (flag == 1)
        {
         nvect = nnodes;
         tempvect1 = (double *)malloc((nnodes+1)*sizeof(double));
         tempvect2 = (double *)malloc((nnodes+1)*sizeof(double));
         tempvect3 = (double *)malloc((nnodes+1)*sizeof(double));
         fillnodevalue(vectfldx,tempvect1);
         fillnodevalue(vectfldy,tempvect2);
         fillnodevalue(vectfldz,tempvect3);
        }
      else
        {
         nvect = ncells;
         tempvect1 = (double *)malloc((ncells+1)*sizeof(double));
         tempvect2 = (double *)malloc((ncells+1)*sizeof(double));
         tempvect3 = (double *)malloc((ncells+1)*sizeof(double));
         fillcellvalue(cvectfldx,tempvect1+1);
         fillcellvalue(cvectfldy,tempvect2+1);
         fillcellvalue(cvectfldz,tempvect3+1);
        }

      /*  Store vector data.  */
      FldHandle = cdmGenPolyhedralMeshField_Create(ds, PtVec3C, "Velocity");
      if (FldHandle < 0)
	{
	 printf("Cannot create Velocity field.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      printf("\nStoring first velocity component with %ld values.\n",nvect);
      status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle,1,1,nvect,1, 
                  tempvect1+1);
      if (status < 0)
        {
	 printf("Cannot create Velocity field.\n");
	 cdmGenPolyhedralMeshField_Delete(FldHandle);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      printf("\nStoring second velocity component with %ld values.\n",nvect);
      status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle,1,1,nvect,1, 
                  tempvect2+1);
      if (status < 0)
        {
	 printf("Cannot create Velocity field.\n");
	 cdmGenPolyhedralMeshField_Delete(FldHandle);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      printf("\nStoring third velocity component with %ld values.\n",nvect);
      status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle,1,1,nvect,1, 
                  tempvect3+1);
      if (status < 0)
        {
	 printf("Cannot create Velocity field.\n");
	 cdmGenPolyhedralMeshField_Delete(FldHandle);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      free(tempvect1);  free(tempvect2);  free(tempvect3);

      status = cdmGenPolyhedralMeshField_Commit(FldHandle);
      if (status < 0)
        {
	 printf("Cannot create Velocity field.\n");
	 cdmGenPolyhedralMeshField_Delete(FldHandle);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
        }

      cdmGenPolyhedralMeshField_Delete(FldHandle);
      cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
     }


   /*  Define point scalar field template, if field data exists.  */
   flag = 0; 
   for (i = 0; i < MAXFIELDS; i++) flag += nvars_to_write[i];
   if (flag > 0) 
     {
      PtScalarT = cdmGenPolyhedralMeshFieldTemplate_Create(ds, mesh, 1, 
                     "PointScalarT");
      if (PtScalarT < 0)
        {
	 printf("Cannot create PointScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(PtScalarT, 1, 
                  cdm0Cell);
      if (status < 0)
        {
	 printf("Cannot create PointScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(PtScalarT, 1, 
                  cdmFloat64);
      if (status < 0)
        {
	 printf("Cannot create PointScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_Commit(PtScalarT);
      if (status < 0)
        {
	 printf("Cannot commit PointScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      /*  Loop through node fields and store data.  */
      temparray = (double *)malloc((nnodes+1)*sizeof(double));
      for (i = 0; i < MAXFIELDS; i++)
        {
         if (nvars_to_write[i])
           {
	    FldHandle = cdmGenPolyhedralMeshField_Create(ds, PtScalarT, 
                           fieldname[i]);
	    if (FldHandle < 0)
              {
	       printf("Cannot create point scalar field \"%s\".\n", 
                      fieldname[i]);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	       cdmGenPolyhedralMesh_Delete(mesh);
	       cdmDataset_Delete(ds);
	       return;
	      }

            fillnodevalue(i,temparray);
            printf("\nStoring point component %s with %ld values.\n", 
                   fieldname[i], nnodes);
	    status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle, 1, 1, 
                        nnodes, 1, temparray+1);
	    if (status < 0)
              {
	       printf("Cannot create point scalar field \"%s\".\n",
                      fieldname[i]);
	       cdmGenPolyhedralMeshField_Delete(FldHandle);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	       cdmGenPolyhedralMesh_Delete(mesh);
	       cdmDataset_Delete(ds);
	       return;
	      }

            status = cdmGenPolyhedralMeshField_Commit(FldHandle);
	    if (status < 0)
	      {
	       printf("Cannot create point scalar field \"%s\".\n", 
                      fieldname[i]);
	       cdmGenPolyhedralMeshField_Delete(FldHandle);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	       cdmGenPolyhedralMesh_Delete(mesh);
	       cdmDataset_Delete(ds);
	       return;
	      }
	    cdmGenPolyhedralMeshField_Delete(FldHandle);
           }
        }
      cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
      free(temparray);
     }

   /*  Define cell scalar field template, if field data exists.  */
   flag = 0; 
   for (i = 0; i < MAXFIELDS; i++) flag += cvars_to_write[i];
   if (flag > 0) 
     {
      ZoneScalarT = cdmGenPolyhedralMeshFieldTemplate_Create(ds, mesh, 1, 
                       "ZoneScalarT");
      if (ZoneScalarT < 0)
        {
	 printf("Cannot create ZoneScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefCellCategory(ZoneScalarT, 1,
                  cdm0Cell);
      if (status < 0)
        {
	 printf("Cannot create ZoneScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_DefDataType(ZoneScalarT, 1, 
                  cdmFloat64);
      if (status < 0)
        {
	 printf("Cannot create ZoneScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      status = cdmGenPolyhedralMeshFieldTemplate_Commit(ZoneScalarT);
      if (status < 0)
        {
	 printf("Cannot commit ZoneScalarT template.\n");
	 cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	 cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	 cdmGenPolyhedralMesh_Delete(mesh);
	 cdmDataset_Delete(ds);
	 return;
	}

      /*  Loop through cell fields and store data.  */
      temparray = (double *)malloc((ncells)*sizeof(double));
      for (i = 0; i < MAXFIELDS; i++)
        {
         if (cvars_to_write[i])
           {
	    FldHandle = cdmGenPolyhedralMeshField_Create(ds, ZoneScalarT, 
                           cfieldname[i]);
	    if (FldHandle < 0)
	      {
	       printf("Cannot create zone scalar field \"%s\".\n", 
                      cfieldname[i]);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	       cdmGenPolyhedralMesh_Delete(mesh);
	       cdmDataset_Delete(ds);
	       return;
	      }

            fillcellvalue(i,temparray);
	    printf("\nStoring zone component %s with %ld values.\n", 
                   cfieldname[i], ncells);
	    status = cdmGenPolyhedralMeshField_DefFieldVals(FldHandle, 1, 1, 
                     ncells, 1, temparray);
	    if (status < 0)
	      {
	       printf("Cannot create zone scalar field \"%s\".\n", 
                      cfieldname[i]);
	       cdmGenPolyhedralMeshField_Delete(FldHandle);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	       cdmGenPolyhedralMesh_Delete(mesh);
	       cdmDataset_Delete(ds);
	       return;
	      }

	    status = cdmGenPolyhedralMeshField_Commit(FldHandle);
	    if (status < 0)
	      {
	       printf("Cannot create zone scalar field \"%s\".\n", 
                      cfieldname[i]);
	       cdmGenPolyhedralMeshField_Delete(FldHandle);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtScalarT);
	       cdmGenPolyhedralMeshFieldTemplate_Delete(PtVec3C);
	       cdmGenPolyhedralMesh_Delete(mesh);
	       cdmDataset_Delete(ds);
	       return;
	      }

	    cdmGenPolyhedralMeshField_Delete(FldHandle);
           }
        }
      free(temparray);
      cdmGenPolyhedralMeshFieldTemplate_Delete(ZoneScalarT);
     }

   /*  Cleanup.  */
   cdmGenPolyhedralMesh_Delete(mesh);
   cdmDataset_Delete(ds);
}
Example #26
0
void create_hotlinks_popup(Widget, XtPointer, XtPointer)
{
    int x, y;
    static Widget top, dialog;
    Arg args[3];
    set_wait_cursor();
    if (top == NULL)
    {
        char *label1[5];
        Widget but1[5];
        label1[0] = (char *)"Link";
        label1[1] = (char *)"Files...";
        label1[2] = (char *)"Unlink";
        label1[3] = (char *)"Update";
        label1[4] = (char *)"Close";
        XmGetPos(app_shell, 0, &x, &y);
        top = XmCreateDialogShell(app_shell, (char *)"Hot links", NULL, 0);
        handle_close(top);
        XtVaSetValues(top, XmNx, x, XmNy, y, NULL);
        dialog = XmCreateRowColumn(top, (char *)"dialog_rc", NULL, 0);

        XtSetArg(args[0], XmNlistSizePolicy, XmRESIZE_IF_POSSIBLE);
        XtSetArg(args[1], XmNvisibleItemCount, 5);
        hotlink_list_item = XmCreateScrolledList(dialog, (char *)"list", args, 2);
        XtManageChild(hotlink_list_item);

        hotlink_set_item = CreateSetSelector(dialog, "Link set:",
                                             SET_SELECT_ACTIVE,
                                             FILTER_SELECT_ALL,
                                             GRAPH_SELECT_CURRENT,
                                             SELECTION_TYPE_MULTIPLE);
        DefineSetSelectorFilter(&hotlink_set_item);

        hotlink_file_item = CreateTextItem2(dialog, 30, "To file or pipe:");
        hotlink_source_item = CreatePanelChoice(dialog, "Source: ", 3,
                                                "Disk file",
                                                "Pipe",
                                                NULL,
                                                NULL);

        XtVaCreateManagedWidget("sep", xmSeparatorWidgetClass, dialog, NULL);

        CreateCommandButtons(dialog, 5, but1, label1);
        XtAddCallback(but1[0], XmNactivateCallback, (XtCallbackProc)do_hotlink_proc,
                      (XtPointer)NULL);
        XtAddCallback(but1[1], XmNactivateCallback, (XtCallbackProc)create_hotfiles_popup,
                      (XtPointer)NULL);
        XtAddCallback(but1[2], XmNactivateCallback, (XtCallbackProc)do_hotunlink_proc,
                      (XtPointer)NULL);
        XtAddCallback(but1[3], XmNactivateCallback, (XtCallbackProc)do_hotupdate_proc,
                      (XtPointer)NULL);
        XtAddCallback(but1[4], XmNactivateCallback, (XtCallbackProc)destroy_dialog,
                      (XtPointer)top);

        XtManageChild(dialog);
        hotlink_frame = top;
    }
    XtRaise(top);
    update_hotlinks();
    unset_wait_cursor();
}
Example #27
0
int wxFileDialog::ShowModal()
{
    WX_HOOK_MODAL_DIALOG();

    wxBeginBusyCursor();

    //  static char fileBuf[512];
    Widget parentWidget = (Widget) 0;
    if (m_parent)
        parentWidget = (Widget) m_parent->GetTopWidget();
    else
        parentWidget = (Widget) wxTheApp->GetTopLevelWidget();
    // prepare the arg list
    Display* dpy = XtDisplay(parentWidget);
    Arg args[10];
    int ac = 0;

    if (m_backgroundColour.IsOk())
    {
        wxComputeColours (dpy, & m_backgroundColour, NULL);

        XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++;
        XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++;
        XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++;
        XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++;
    }

    wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);

#if __WXMOTIF20__ && !__WXLESSTIF__
    XtSetArg(args[ac], XmNbuttonRenderTable, font.GetFontTypeC(dpy)); ac++;
    XtSetArg(args[ac], XmNlabelRenderTable, font.GetFontTypeC(dpy)); ac++;
    XtSetArg(args[ac], XmNtextRenderTable, font.GetFontTypeC(dpy)); ac++;
#else
    XtSetArg(args[ac], XmNbuttonFontList, font.GetFontTypeC(dpy)); ac++;
    XtSetArg(args[ac], XmNlabelFontList, font.GetFontTypeC(dpy)); ac++;
    XtSetArg(args[ac], XmNtextFontList, font.GetFontTypeC(dpy)); ac++;
#endif

    Widget fileSel = XmCreateFileSelectionDialog(parentWidget,
                                                 wxMOTIF_STR("file_selector"),
                                                 args, ac);
#define wxFSChild( name ) \
    XmFileSelectionBoxGetChild(fileSel, name)

    XtUnmanageChild(wxFSChild(XmDIALOG_HELP_BUTTON));

    Widget filterWidget = wxFSChild(XmDIALOG_FILTER_TEXT);
    Widget selectionWidget = wxFSChild(XmDIALOG_TEXT);
    Widget dirListWidget = wxFSChild(XmDIALOG_DIR_LIST);
    Widget fileListWidget = wxFSChild(XmDIALOG_LIST);

    // for changing labels
    Widget okWidget = wxFSChild(XmDIALOG_OK_BUTTON);
    Widget applyWidget = wxFSChild(XmDIALOG_APPLY_BUTTON);
    Widget cancelWidget = wxFSChild(XmDIALOG_CANCEL_BUTTON);
    Widget dirlistLabel = wxFSChild(XmDIALOG_DIR_LIST_LABEL);
    Widget filterLabel = wxFSChild(XmDIALOG_FILTER_LABEL);
    Widget listLabel = wxFSChild(XmDIALOG_LIST_LABEL);
    Widget selectionLabel = wxFSChild(XmDIALOG_SELECTION_LABEL);

#undef wxFSChild

    // change labels
    wxXmString btnOK( wxGetStockLabel( wxID_OK, false ) ),
               btnCancel( wxGetStockLabel( wxID_CANCEL, false ) ),
               btnFilter( _("Filter") ), lblFilter( _("Filter") ),
               lblDirectories( _("Directories") ),
               lblFiles( _("Files" ) ), lblSelection( _("Selection") );

    XtVaSetValues( okWidget, XmNlabelString, btnOK(), NULL );
    XtVaSetValues( applyWidget, XmNlabelString, btnFilter(), NULL );
    XtVaSetValues( cancelWidget, XmNlabelString, btnCancel(), NULL );
    XtVaSetValues( dirlistLabel, XmNlabelString, lblDirectories(), NULL );
    XtVaSetValues( filterLabel, XmNlabelString, lblFilter(), NULL );
    XtVaSetValues( listLabel, XmNlabelString, lblFiles(), NULL );
    XtVaSetValues( selectionLabel, XmNlabelString, lblSelection(), NULL );

    Widget shell = XtParent(fileSel);

    if ( !m_message.empty() )
        XtVaSetValues(shell,
                      XmNtitle, (const char*)m_message.mb_str(),
                      NULL);

    if (!m_wildCard.empty())
    {
        // return something understandable by Motif
        wxString wildCard = ParseWildCard( m_wildCard );
        wxString filter;
        if (!m_dir.empty())
            filter = m_dir + wxString("/") + wildCard;
        else
            filter = wildCard;

        XmTextSetString(filterWidget, filter.char_str());
        XmFileSelectionDoSearch(fileSel, NULL);
    }

    // Suggested by Terry Gitnick, 16/9/97, because of change in Motif
    // file selector on Solaris 1.5.1.
    if ( !m_dir.empty() )
    {
        wxXmString thePath( m_dir );

        XtVaSetValues (fileSel,
            XmNdirectory, thePath(),
            NULL);
    }

    wxString entirePath;

    if (!m_dir.empty())
    {
        entirePath = m_dir + wxString("/") + m_fileName;
    }
    else
    {
        entirePath = m_fileName;
    }

    if (!entirePath.empty())
    {
        XmTextSetString(selectionWidget, entirePath.char_str());
    }

    XtAddCallback(fileSel, XmNcancelCallback,
                  (XtCallbackProc)wxFileSelCancel, (XtPointer)NULL);
    XtAddCallback(fileSel, XmNokCallback,
                  (XtCallbackProc)wxFileSelOk, (XtPointer)NULL);
    XtAddCallback(fileSel, XmNunmapCallback,
                  (XtCallbackProc)wxFileSelClose, (XtPointer)this);

    //#if XmVersion > 1000
    // I'm not sure about what you mean with XmVersion.
    // If this is for Motif1.1/Motif1.2, then check XmVersion>=1200
    // (Motif1.1.4 ==> XmVersion 1100 )
    // Nevertheless, I put here a #define, so anyone can choose in (I)makefile.
    //
#if !DEFAULT_FILE_SELECTOR_SIZE
    int width = wxFSB_WIDTH;
    int height = wxFSB_HEIGHT;
    XtVaSetValues(fileSel,
        XmNwidth, width,
        XmNheight, height,
        XmNresizePolicy, XmRESIZE_NONE,
        NULL);
#endif
    wxDoChangeBackgroundColour((WXWidget) filterWidget, *wxWHITE);
    wxDoChangeBackgroundColour((WXWidget) selectionWidget, *wxWHITE);

    wxChangeListBoxColours(this, dirListWidget);
    wxChangeListBoxColours(this, fileListWidget);

    XtManageChild(fileSel);

    m_fileSelectorAnswer = wxEmptyString;
    m_fileSelectorReturned = false;

    wxEndBusyCursor();

    XtAddGrab(XtParent(fileSel), True, False);
    XtAppContext context = (XtAppContext) wxTheApp->GetAppContext();
    XEvent event;
    while (!m_fileSelectorReturned)
    {
        XtAppNextEvent(context, &event);
        XtDispatchEvent(&event);
    }
    XtRemoveGrab(XtParent(fileSel));

    XtUnmapWidget(XtParent(fileSel));
    XtDestroyWidget(XtParent(fileSel));

    // Now process all events, because otherwise
    // this might remain on the screen
    wxFlushEvents(XtDisplay(fileSel));

    m_path = m_fileSelectorAnswer;
    m_fileName = wxFileNameFromPath(m_fileSelectorAnswer);
    m_dir = wxPathOnly(m_path);

    if (m_fileName.empty())
        return wxID_CANCEL;
    else
        return wxID_OK;
}
Example #28
0
void fillIn(Widget w)
{
  XtVaSetValues(w, XtNsensitive, (XtArgVal) True, NULL);
}
Example #29
0
static int motButtonMapMethod(Ihandle* ih)
{
  char* value;
  int num_args = 0;
  Arg args[30];

  value = iupAttribGet(ih, "IMAGE");
  if (value)
  {
    ih->data->type = IUP_BUTTON_IMAGE;
    iupMOT_SETARG(args, num_args, XmNlabelType, XmPIXMAP);
  }
  else
  {
    ih->data->type = IUP_BUTTON_TEXT;
    iupMOT_SETARG(args, num_args, XmNlabelType, XmSTRING);
  }

  /* Core */
  iupMOT_SETARG(args, num_args, XmNmappedWhenManaged, False);  /* not visible when managed */
  iupMOT_SETARG(args, num_args, XmNx, 0);  /* x-position */
  iupMOT_SETARG(args, num_args, XmNy, 0);  /* y-position */
  iupMOT_SETARG(args, num_args, XmNwidth, 10);  /* default width to avoid 0 */
  iupMOT_SETARG(args, num_args, XmNheight, 10); /* default height to avoid 0 */
  /* Label */
  iupMOT_SETARG(args, num_args, XmNrecomputeSize, False);  /* no automatic resize from text */
  iupMOT_SETARG(args, num_args, XmNmarginHeight, 0);  /* default padding */
  iupMOT_SETARG(args, num_args, XmNmarginWidth, 0);
  iupMOT_SETARG(args, num_args, XmNmarginTop, 0);     /* no extra margins */
  iupMOT_SETARG(args, num_args, XmNmarginLeft, 0);
  iupMOT_SETARG(args, num_args, XmNmarginBottom, 0);
  iupMOT_SETARG(args, num_args, XmNmarginRight, 0);
  /* PushButton */
  iupMOT_SETARG(args, num_args, XmNfillOnArm, False);

  /* Primitive */
  if (iupAttribGetBoolean(ih, "CANFOCUS"))
    iupMOT_SETARG(args, num_args, XmNtraversalOn, True);
  else
    iupMOT_SETARG(args, num_args, XmNtraversalOn, False);
  iupMOT_SETARG(args, num_args, XmNhighlightThickness, 2);
  iupMOT_SETARG(args, num_args, XmNnavigationType, XmTAB_GROUP);
  
  ih->handle = XtCreateManagedWidget(
    iupDialogGetChildIdStr(ih),  /* child identifier */
    xmPushButtonWidgetClass,     /* widget class */
    iupChildTreeGetNativeParentHandle(ih), /* widget parent */
    args, num_args);

  if (!ih->handle)
    return IUP_ERROR;

  ih->serial = iupDialogGetChildId(ih); /* must be after using the string */

  XtAddCallback(ih->handle, XmNhelpCallback, (XtCallbackProc)iupmotHelpCallback, (XtPointer)ih);

  value = iupAttribGet(ih, "IMPRESS");
  if (iupAttribGetBoolean(ih, "FLAT") && !value)
  {
    XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL);
    XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)motButtonEnterLeaveWindowEvent, (XtPointer)ih);
    XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)motButtonEnterLeaveWindowEvent, (XtPointer)ih);
  }
  else
  {
    if (value && !iupAttribGetBoolean(ih, "IMPRESSBORDER"))
    {
      /* In Motif the button will lose its focus feedback also */
      XtVaSetValues(ih->handle, XmNhighlightThickness, 0, NULL);
      XtVaSetValues(ih->handle, XmNshadowThickness, 0, NULL);
    }
    else
      XtVaSetValues(ih->handle, XmNshadowThickness, 2, NULL);
    XtAddEventHandler(ih->handle, EnterWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
    XtAddEventHandler(ih->handle, LeaveWindowMask, False, (XtEventHandler)iupmotEnterLeaveWindowEvent, (XtPointer)ih);
  }

  XtAddEventHandler(ih->handle, FocusChangeMask, False, (XtEventHandler)iupmotFocusChangeEvent, (XtPointer)ih);
  XtAddEventHandler(ih->handle, KeyPressMask,    False, (XtEventHandler)iupmotKeyPressEvent,    (XtPointer)ih);

  XtAddCallback(ih->handle, XmNactivateCallback, (XtCallbackProc)motButtonActivateCallback, (XtPointer)ih);
  XtAddEventHandler(ih->handle, ButtonPressMask|ButtonReleaseMask, False, (XtEventHandler)iupmotButtonPressReleaseEvent, (XtPointer)ih);

  /* Disable Drag Source */
  iupmotDisableDragSource(ih->handle);

  /* initialize the widget */
  XtRealizeWidget(ih->handle);

  if (ih->data->type == IUP_BUTTON_TEXT)
    iupmotSetString(ih->handle, XmNlabelString, "");

  return IUP_NOERROR;
}
Example #30
0
void wxSlider::SetValue(int value)
{
    XtVaSetValues ((Widget) m_mainWidget, XmNvalue, value, NULL);
}