Пример #1
0
/* ARGSUSED */
static void 
SecondaryObjectCreate(
        Widget req,
        Widget new_w,
        ArgList args,
        Cardinal *num_args )
{
    XmBaseClassExt              *cePtr;
    Arg                         myArgs[1];
    ArgList                     mergedArgs;

    XtSetArg(myArgs[0] ,XmNlogicalParent, new_w);

    if (*num_args)
       mergedArgs = XtMergeArgLists(args, *num_args, myArgs, XtNumber(myArgs));
    else
       mergedArgs = myArgs;


    cePtr = _XmGetBaseClassExtPtr(XtClass(new_w), XmQmotif);
    (void) XtCreateWidget(XtName(new_w),
                         (*cePtr)->secondaryObjectClass,
			 XtParent(new_w) ? XtParent(new_w) : new_w,
			 mergedArgs, *num_args + 1);

    if (mergedArgs != myArgs)
      XtFree( (char *) mergedArgs);
}
Пример #2
0
/*
 * Function:
 *	AsciiStringSourceCreate
 *
 * Parameters:
 *	parent	 - widget that will own this source
 *	args	 - the argument list
 *	num_args - ""
 *
 * Description:
 *	Creates a string source.
 *
 * Returns:
 *	A pointer to the new text source.
 */
Widget
XawStringSourceCreate(Widget parent, ArgList args, Cardinal num_args)
{
    XawTextSource src;
    ArgList ascii_args;
    Arg temp[2];

    XtSetArg(temp[0], XtNtype, XawAsciiString);
    XtSetArg(temp[1], XtNuseStringInPlace, True);
    ascii_args = XtMergeArgLists(temp, TWO, args, num_args);

    src = XtCreateWidget("genericAsciiString", asciiSrcObjectClass, parent,
			 ascii_args, num_args + TWO);
    XtFree((char *)ascii_args);

    return (src);
}
Пример #3
0
void
x_message (Widget parent, string s, ArgList args, Cardinal n_args)
{
  Dimension parent_height;
  Position popup_x, popup_y;
  Widget popup;
  
  XtAppContext app_con = XtWidgetToApplicationContext (parent);
  Arg parent_args[]
    = { { XtNheight,	(XtArgVal) &parent_height },
      };
  Arg popup_args[]
    = { { XtNx,		0 }, /* We assign to the position below.  */
        { XtNy,		0 },
        { XtNgeometry,	NULL }, /* Don't use the parent's geometry.  */
      };

  Arg default_args[] = { { XtNlabel, (XtArgVal) s } };
  ArgList all_args
    = XtMergeArgLists (args, n_args, default_args, XtNumber (default_args));

  /* Put the message at the left edge of and about halfway down PARENT's
     window.  We pass the address of true Position variables rather
     than the address of the Arg values; in the latter case, the
     endianness of the computer determines which half of the word the
     answers get stored in, which is clearly bad.  */
  XtGetValues (parent, parent_args, XtNumber (parent_args));
  XtTranslateCoords (parent, 0, parent_height / 2, &popup_x, &popup_y);
  popup_args[0].value = popup_x;
  popup_args[1].value = popup_y;
  
  popup = XtCreatePopupShell ("message shell", transientShellWidgetClass,
                              parent, popup_args, XtNumber (popup_args));

  /* We can't use XtNumber on `all_args', since it's a pointer.  */
  (void)
    XtCreateManagedWidget ("message", labelWidgetClass, popup, all_args,
                           n_args + XtNumber (default_args)); 
  
  /* XtPopup realizes the window, etc.  */
  XtPopup (popup, XtGrabNone);
  
  /* Leave the message there for five seconds.  */
  (void) XtAppAddTimeOut (app_con, 5000, message_over, popup); 
}
Пример #4
0
Widget XmdsCreateDisplay(Widget parent, String name, ArgList args, Cardinal argcount)
{
  XmdsDisplayPart info = {-1,0};
  Widget w;
  Arg lab_args[] = {{XmNlabelString, 0}, {XmNuserData, DisplayUserData}};
  Arg *merged_args;
  int nid;

  XmdsSetSubvalues(&info, resources, XtNumber(resources), args, argcount);
  if (info.nid == -1)
    info.nid = XmdsGetDeviceNid();
  if (info.nid != -1)
    nid = info.nid + info.nid_offset;
  else
    nid = -1;
  if (nid != -1) {
    static struct descriptor_d display_dsc = {0, DTYPE_T, CLASS_D, 0};
    static struct descriptor_xd xd = {0, DTYPE_DSC, CLASS_XD, 0, 0};
    struct descriptor nid_dsc = {sizeof(int), DTYPE_NID, CLASS_S, (char *)0};
    int status;
    nid_dsc.pointer = (char *)&nid;
    status = TdiEvaluate(&nid_dsc, &xd MDS_END_ARG);
    if (status&1) {
      status = TdiDecompile(&xd, &display_dsc MDS_END_ARG);
      if (status&1) {
        static DESCRIPTOR(zero_dsc, "\0");
        StrConcat((struct descriptor *)&display_dsc, (struct descriptor *)&display_dsc, &zero_dsc MDS_END_ARG);
        lab_args[0].value = (long)XmStringCreateSimple(display_dsc.pointer);
      }
      else
        lab_args[0].value = (long)XmStringCreateSimple("Error - Decomp");
    }
    else
      lab_args[0].value = (long)XmStringCreateSimple("Error - Eval");
  }
  merged_args = XtMergeArgLists(args, argcount, lab_args, XtNumber(lab_args));
  w = XmCreateLabel(parent, name, merged_args, XtNumber(lab_args) + argcount);
  XtFree((char *)lab_args[0].value);
  XtFree((char *)merged_args);
  return w;
}
Пример #5
0
/*
 * Function:
 *	AsciiDiskSourceCreate
 *
 * Parameters:
 *	parent	 - widget that will own this source
 *	args	 - argument list
 *	num_args - ""
 *
 * Description:
 *	Creates a disk source.
 *
 * Returns:
 *	A pointer to the new text source
 */
Widget
XawDiskSourceCreate(Widget parent, ArgList args, Cardinal num_args)
{
    XawTextSource src;
    ArgList ascii_args;
    Arg temp[1];
    int i;

    XtSetArg(temp[0], XtNtype, XawAsciiFile);
    ascii_args = XtMergeArgLists(temp, ONE, args, num_args);
    num_args++;

    for (i = 0; i < num_args; i++) 
	if (streq(ascii_args[i].name, XtNfile)
	    || streq(ascii_args[i].name, XtCFile)) 
	    ascii_args[i].name = XtNstring;

    src = XtCreateWidget("genericAsciiDisk", asciiSrcObjectClass, parent,
			 ascii_args, num_args);
    XtFree((char *)ascii_args);

    return (src);
}
Пример #6
0
Файл: Gadget.c Проект: att/uwin
static void
secondary_object_create(Widget req, Widget new_w,
			ArgList args, Cardinal *num_args)
{
    XmBaseClassExt *bce;
    Arg argl[1];
    ArgList merged;

	DEBUGOUT(_LtDebug(__FILE__, new_w, "XmGadget secondary_object_create\n"));

    XtSetArg(argl[0], XmNlogicalParent, new_w);

    if (*num_args)
    {
	merged = XtMergeArgLists(args, *num_args, argl, XtNumber(argl));

	bce = _XmGetBaseClassExtPtr(XtClass(new_w), XmQmotif);

	XtCreateWidget(XtName(new_w), (*bce)->secondaryObjectClass,
		       XtParent(new_w)
		       ? XtParent(new_w)
		       : new_w,
		       merged, *num_args + 1);

	XtFree((char *)merged);
    }
    else
    {
	bce = _XmGetBaseClassExtPtr(XtClass(new_w), XmQmotif);

	XtCreateWidget(XtName(new_w), (*bce)->secondaryObjectClass,
		       XtParent(new_w)
		       ? XtParent(new_w)
		       : new_w,
		       argl, 1);
    }
}
Пример #7
0
/*-------------------------------------------------------------------------*/
static Widget CreateListTree(
Widget parent,
String name,
ArgList arglist,
Cardinal argcount 
) {
   Widget lw;
   Pixmap branch;
   Pixmap leaf;
   Pixmap branch_open;
   Pixmap leaf_open;
   Arg args[10]; 
   ArgList arg_list;
   int ac;

   branch = qmonGetIcon("branch");
   branch_open = qmonGetIcon("branch_open");
   leaf = qmonGetIcon("leaf");
   leaf_open = qmonGetIcon("leaf_open");

   ac = 0;
   XtSetArg(args[ac], XtNbranchPixmap, branch); ac++;
   XtSetArg(args[ac], XtNbranchOpenPixmap, branch_open); ac++;
   XtSetArg(args[ac], XtNleafPixmap, leaf); ac++;
   XtSetArg(args[ac], XtNleafOpenPixmap, leaf_open); ac++;
   XtSetArg(args[ac], XtNdoIncrementalHighlightCallback, True); ac++;
   XtSetArg(args[ac], XtNhighlightPath, False); ac++;
   XtSetArg(args[ac], XtNindent, 5); ac++;

   arg_list = XtMergeArgLists(arglist, argcount, args, ac);
   argcount += ac;
   
   lw = XmCreateScrolledListTree(parent, name, arg_list, argcount);

   return lw;
}