Example #1
0
File: UxXt.c Project: nagyistge/ctn
static Pixmap
ConvertPixmap(char *file_name, int depth)
#endif
{
    XrmValue fg_from,
        fg_to,
        bg_from,
        bg_to;
    Pixel fg,
        bg;

    fg_from.size = strlen(XtDefaultForeground);
    fg_from.addr = XtDefaultForeground;
    fg_to.addr = (XPointer) & fg;
    bg_from.size = strlen(XtDefaultBackground);
    bg_from.addr = XtDefaultBackground;
    bg_to.addr = (XPointer) & bg;
    if (!XtConvertAndStore
	(UxTopLevel, XtRString, &bg_from, XtRPixel, &bg_to)
	|| !XtConvertAndStore
	(UxTopLevel, XtRString, &fg_from, XtRPixel, &fg_to)
	|| (fg == bg)) {
	fg = WhitePixelOfScreen(XtScreen(UxTopLevel));
	bg = BlackPixelOfScreen(XtScreen(UxTopLevel));
    }
    if (depth)
	return (XmGetPixmapByDepth
		(XtScreen(UxTopLevel), file_name, fg, bg, depth));

    else
	return (XmGetPixmap(XtScreen(UxTopLevel), file_name, fg, bg));
}
Example #2
0
/*
 * Get pixel from color `colorname'. We try to keep this as
 * high-level as possible, with simple black as fallback.
 */
void
str_to_pixel(Widget w, const char *colorname, Pixel *ret)
{
    XrmValue from, to;

    from.addr = (char *)colorname;
    from.size = strlen(from.addr) + 1;
    to.addr = (XtPointer)ret;
    to.size = sizeof(Pixel);
    if (!XtConvertAndStore(w, XtRString, &from, XtRPixel, &to)) {
	fprintf(stderr, "String to pixel conversion failed for %s!\n", colorname);
	from.addr = (char *)"black";
	from.size = strlen(from.addr) + 1;
	to.addr = (XtPointer)ret;
	to.size = sizeof(Pixel);
	XtConvertAndStore(w, XtRString, &from, XtRPixel, &to);
    }
}
// Convert NAME into a color, using PIX as default
static Pixel color(Widget w, const _XtString name, Pixel pixel)
{
    XrmValue from, to;
    from.size = strlen(name);
    from.addr = CONST_CAST(char *,name);
    to.size   = sizeof(pixel);
    to.addr   = (String)&pixel;

    XtConvertAndStore(w, XtRString, &from, XtRPixel, &to);
    return pixel;
}
Example #4
0
/*
 * Convert pixel value `pix' to color name passed as str,
 * of length len, or `black' if conversion failed.
 * -- FIXME: This is broken!!!
 */
void
pixel_to_str(Widget w, Pixel pix, char *str, size_t len)
{
    XrmValue from, to;

    from.addr = (XtPointer)&pix;
    from.size = sizeof(Pixel);
    to.addr = str;
    to.size = len;

    if (!XtConvertAndStore(w, XtRString, &from, XtRPixel, &to)) {
	fprintf(stderr, "Pixel to String conversion failed for %ld!\n", pix);
	sprintf(str, "white");
    }
}
Example #5
0
/* ConvertStringToPixel()
** A utility function to convert a color name to a Pixel 
*/
Pixel ConvertStringToPixel (Widget widget, char *name)
{
        XrmValue from_value, to_value; /* For resource conversion */

        from_value.addr = name;
        from_value.size = strlen( name ) + 1;
        to_value.addr   = NULL;
        XtConvertAndStore (widget, XmRString, &from_value, XmRPixel, &to_value);

        if (to_value.addr) {
		return (*((Pixel*) to_value.addr)) ;
        }

	return XmUNSPECIFIED_PIXEL ;
}
Example #6
0
File: UxXt.c Project: juddy/edcde
/******************************************************************************
NAME:           UxConvertFontList( fontlist_str )

INPUT:          char    *fontlist_str           - string form of fontlist

RETURN:         XmFontList                      - fontlist

DESCRIPTION:    Converts a fontlist from the resource-file string format
                to the XmFontList type expected in C code.
                The conversion is done by a call to the built-in Motif convertor
                and the return value points into Xt's resource cache
                and so the return value should NOT be XmFontListFree'd.

CREATION:       Visual Edge Software            June 17 1992
-----------------------------------------------------------------------------*/
XmFontList    UxConvertFontList( char *fontlist_str )
{
        XrmValue        from, to;
        XmFontList      fontlist = NULL;
        Boolean         status;

        from.size = strlen( fontlist_str ) + 1;
        from.addr = fontlist_str;

        to.size = sizeof(XmFontList);
        to.addr = (caddr_t) &fontlist;

        status = XtConvertAndStore( UxTopLevel,
                                    XmRString, &from,
                                    XmRFontList, &to );

        return ( fontlist );
}
Example #7
0
/*ARGSUSED*/
void 
XmCvtStringToUnitType(
        XrmValuePtr args,	/* unused */
        Cardinal *num_args,	/* unused */
        XrmValue *from_val,
        XrmValue *to_val )
{
   Display * dpy = _XmGetDefaultDisplay();

   /* we cannot call XmRUnitType directly, since it would loop
      if a program registers this function with to_type = XmRUnitType (which
      is very likely).
      So we use REAL_UNIT_TYPE_NAME, which has been registered with the
      same semantics as the original XmRUnitType in RepType.c */
   XtConvertAndStore(XmGetXmDisplay(dpy), XmRString, from_val,
		     REAL_UNIT_TYPE_NAME, to_val);

}
Example #8
0
Color::Color(std::string name)
{
  XrmValue fromValue;
  XrmValue toValue;

  fromValue.addr = (char*)name.c_str();
  fromValue.size = strlen(name.c_str()) + 1;
  toValue.addr = (char*)NULL;

  XtConvertAndStore(Application::getWidget(), XmRString, &fromValue, XmRPixel, &toValue);

  if(toValue.addr != (XtPointer)0)
  {
    pixel = (*(Pixel*)toValue.addr);
  }
  else
  {
    throw MotifException("Invalid color name");
  }
}
Example #9
0
static Boolean
SendSel(Widget w, Atom *sel, Atom *target, Atom *rtype, XtPointer *ans,
		unsigned long *anslen, int *ansfmt)
{
	GwinWidget gw = (GwinWidget)w;
	static Atom targets = 0;
	XrmValue src, dst;
	char *s;

	if(*target == XA_STRING){
		s = gw->gwin.selection;
		if(!s)
			s = "";
		*rtype = XA_STRING;
		*ans = (XtPointer) XtNewString(s);
		*anslen = strlen(*ans);
		*ansfmt = 8;
		return TRUE;
	}
#ifndef R3
	if(targets == 0){
		src.addr = "TARGETS";
		src.size = strlen(src.addr)+1;
		dst.size = sizeof(Atom);
		dst.addr = (XtPointer) &targets;
		XtConvertAndStore(w, XtRString, &src, XtRAtom, &dst);
	}
	if(*target == targets){
		*rtype = XA_ATOM;
		*ans = (XtPointer) XtNew(Atom);
		*(Atom*) *ans = XA_STRING;
		*anslen = 1;
		*ansfmt = 32;
		return TRUE;
	}
#endif
	return FALSE;
}
Example #10
0
File: Simple.c Project: aosm/X11
/*
 * Function:
 *	ConvertCursor
 *
 * Parameters:
 *	w - simple widget
 *
 * Description:
 *	Converts a name to a new cursor.
 */
static void
ConvertCursor(Widget w)
{
    SimpleWidget simple = (SimpleWidget) w;
    XrmValue from, to;
    Cursor cursor = None;
   
    if (simple->simple.cursor_name == NULL)
	return;

    from.addr = (XPointer)simple->simple.cursor_name;
    from.size = strlen((char *)from.addr) + 1;

    to.size = sizeof(Cursor);
    to.addr = (XPointer)&cursor;

    if (XtConvertAndStore(w, XtRString, &from, XtRColorCursor, &to))
      simple->simple.cursor = cursor;
    else
	XtAppErrorMsg(XtWidgetToApplicationContext(w),
		      "convertFailed","ConvertCursor","XawError",
		      "Simple: ConvertCursor failed.",
		      NULL, NULL);
}
Example #11
0
int
main (int argc, char **argv)
{
	int n1,n2,nz,iz,verbose,looping,nTic1,nTic2,width,height,interp;
	float d1,f1,d2,f2,*z,
		clip,bclip,wclip,white,wfrac,
		perc,bperc,wperc,*temp,
		bhue,whue,sat,bright,
		x1beg,x2beg,x1end,x2end,
		x1min,x1max,x2min,x2max,
		fframe,dframe;
	char *label1="",*label2="",*format="",*windowtitle="",
		*labelFont="",*titleFont="",
		*axesColor="",*gridColor="",*titleColor="",
		*style="normal",*grid1="none",*grid2="none",
		*cmap;
	ClientData cd;
	XrmValue from,to;
	Widget toplevel,axes;
	XtAppContext ac;
	Display *dpy;
	Window win;
	Arg args[98];
	int nargs;
	int scr;
	unsigned int depth;

	/* initialize getpar */
	initargs(argc,argv);
	requestdoc(1);

	/* get parameters describing colormaps */
	cmap = "gray";  getparstring("cmap",&cmap);
	if (STREQ("saturation",cmap)) cmap = "sat";
	bhue = 0;  getparfloat("bhue",&bhue);  bhue /= 360.0;
	whue = 240;  getparfloat("whue",&whue); whue /= 360.0;
	sat = 1.0; getparfloat("sat",&sat);
	if (sat<0.0 || sat>1.0) err("sat must be in range [0,1]!\n");
	bright = 1.0; getparfloat("bright",&bright);
	if (bright<0.0 || bright>1.0) err("bright must be in range [0,1]!\n");

	/* get parameters describing 1st dimension sampling */
	if (!getparint("n1",&n1))
		err("Must specify number of samples in 1st dimension!\n");
	if (!getparfloat("d1",&d1)) d1 = 1.0;
	if (!getparfloat("f1",&f1)) f1 = 0.0;
	x1min = (d1>0.0)?f1:f1+(n1-1)*d1;
	x1max = (d1<0.0)?f1:f1+(n1-1)*d1;
	if (!getparfloat("x1beg",&x1beg)) x1beg = x1min;
	if (!getparfloat("x1end",&x1end)) x1end = x1max;

	/* get parameters describing 2nd dimension sampling */
	if (!getparint("n2",&n2))
		err("Must specify number of samples in 2nd dimension!\n");
	if (!getparfloat("d2",&d2)) d2 = 1.0;
	if (!getparfloat("f2",&f2)) f2 = 0.0;
	x2min = (d2>0.0)?f2:f2+(n2-1)*d2;
	x2max = (d2<0.0)?f2:f2+(n2-1)*d2;
	if (!getparfloat("x2beg",&x2beg)) x2beg = x2min;
	if (!getparfloat("x2end",&x2end)) x2end = x2max;

	/* read first frame of float data */
	nz = n1*n2;
	z = ealloc1float(nz);
	if (fread(z,sizeof(float),nz,stdin)!=nz)
		err("error reading input file");

	/* if necessary, determine clips from percentiles */
	if (getparfloat("clip",&clip)) {
		bclip = clip;
		wclip = -clip;
	}
	if ((!getparfloat("bclip",&bclip) || !getparfloat("wclip",&wclip)) &&
		!getparfloat("clip",&clip)) {
		perc = 100.0;  getparfloat("perc",&perc);
		temp = ealloc1float(nz);
		for (iz=0; iz<nz; iz++)
			temp[iz] = z[iz];
		if (!getparfloat("bclip",&bclip)) {
			bperc = perc;	getparfloat("bperc",&bperc);
			iz = (nz*bperc/100.0);
			if (iz<0) iz = 0;
			if (iz>nz-1) iz = nz-1;
			qkfind(iz,nz,temp);
			bclip = temp[iz];
		}
		if (!getparfloat("wclip",&wclip)) {
			wperc = 100.0-perc;  getparfloat("wperc",&wperc);
			iz = (nz*wperc/100.0);
			if (iz<0) iz = 0;
			if (iz>nz-1) iz = nz-1;
			qkfind(iz,nz,temp);
			wclip = temp[iz];
		}
		free1float(temp);
	}
	if (!getparfloat("white",&white)) white = (bclip+wclip)/2.0;
	if (!getparint("verbose",&verbose)) verbose = 1;
	if (!getparint("sleep",&cd.sleep)) cd.sleep=0 ;
	if (!getparint("loop",&looping)) looping = 0;
	if (verbose) {
		if(STREQ(cmap,"sat") || STREQ(cmap,"customsat")) {
			warn("bclip=%g wclip=%g white=%g",bclip,wclip,white);
		} else {
			warn("bclip=%g wclip=%g",bclip,wclip);
		}
	}
	wfrac = (bclip!=wclip) ? (bclip-white)/(bclip-wclip) : 1.0;

	/* initialize toolkit and set toplevel parameters */
 	toplevel = XtAppInitialize(&ac,"XMovie_XAPP_DEF",NULL,0,&argc,argv,NULL,NULL,0);
	dpy = XtDisplay(toplevel);
	nargs = 0;
	if (getparstring("windowtitle",&windowtitle))
		{XtSetArg(args[nargs],XtNtitle,windowtitle); nargs++;}
	if (getparstring("windowtitle",&windowtitle))
		{XtSetArg(args[nargs],XtNiconName,windowtitle); nargs++;}
	if (getparint("width",&width))
		{XtSetArg(args[nargs],XtNwidth,width); nargs++;}
	if (getparint("height",&height))
		{XtSetArg(args[nargs],XtNheight,height); nargs++;}
	XtSetArg(args[nargs],XtNinput,TRUE);nargs++; 
	XtSetValues(toplevel,args,nargs);

	/* if necessary, make private colormap */
	win = XRootWindowOfScreen(XtScreen(toplevel));
	nargs = 0;

	scr=DefaultScreen(dpy);
	depth=(unsigned int)DefaultDepth(dpy,scr);

	if (depth<=8) {
	  if (STREQ(cmap,"gray")) {
	    Colormap cm=XtcwpCreateGrayColormap(dpy,win);
	    XtSetArg(args[nargs],XtNcolormap,cm); nargs++;
	  } else if (STREQ(cmap,"hue")) {
	    Colormap cm=XtcwpCreateHueColormap(dpy,win,
					       bhue,whue,sat,bright);
	    XtSetArg(args[nargs],XtNcolormap,cm); nargs++;
	  } else if (STREQ(cmap,"sat")) {
	    Colormap cm=XtcwpCreateSatColormap(dpy,win,
					       bhue,whue,wfrac,bright);

	    XtSetArg(args[nargs],XtNcolormap,cm); nargs++;
	  }
	  XtSetValues(toplevel,args,nargs);
	}

	/* create axes and set axes parameters */
	axes = XtCreateManagedWidget("axes",xtcwpAxesWidgetClass, 
		toplevel,NULL,0);
		
	nargs = 0;

	if (getparstring("grid1",&grid1)) {
		from.addr = (char *)grid1;
		XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to);
		if (to.addr) XtSetArg(args[nargs],XtNgrid1,*((int*)to.addr));
		nargs++;
	}
	if (getparstring("grid2",&grid2)) {
		from.addr = (char *)grid2;
		XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to);
		if (to.addr) XtSetArg(args[nargs],XtNgrid2,*((int*)to.addr));
		nargs++;
	}

	if (getparint("nTic1",&nTic1))
		{XtSetArg(args[nargs],XtNnTic1,nTic1); nargs++;}
	if (getparint("nTic2",&nTic2))
		{XtSetArg(args[nargs],XtNnTic2,nTic2); nargs++;}
	if (getparstring("label1",&label1))
		{XtSetArg(args[nargs],XtNlabel1,label1); nargs++;}
	if (getparstring("label2",&label2))
		{XtSetArg(args[nargs],XtNlabel2,label2); nargs++;}
	if (getparstring("title",&format))
		{XtSetArg(args[nargs],XtNtitle,format); nargs++;}
	if (getparstring("style",&style)) {
		from.size = (unsigned int) strlen(style);  from.addr = (char *)style;
		XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesStyle,&to);
		if (to.addr) XtSetArg(args[nargs],XtNstyle,*((int*)to.addr));
		nargs++;
	}
	if (getparstring("axesColor",&axesColor)) {
		from.addr = (char *)axesColor;
		XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to);
		if (to.addr) XtSetArg(args[nargs],XtNaxesColor,
			*((unsigned long*)to.addr));
		nargs++;
	}
	if (getparstring("gridColor",&gridColor)) {
		from.addr = (char *)gridColor;
		XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to);
		if (to.addr) XtSetArg(args[nargs],XtNgridColor,
			*((unsigned long*)to.addr));
		nargs++;
	}
	if (getparstring("titleColor",&titleColor)) {
		from.addr = (char *)titleColor;
		XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to);
		if (to.addr) XtSetArg(args[nargs],XtNtitleColor,
			*((unsigned long*)to.addr));
		nargs++;
	}
	if (getparstring("labelFont",&labelFont)) {
		from.addr = (char *)labelFont;
		XtConvertAndStore(axes,XtRString,&from,XtRFont,&to);
		if (to.addr) XtSetArg(args[nargs],XtNlabelFont,
			*((Font*)to.addr));
		nargs++;
	}
	if (getparstring("titleFont",&titleFont)) {
		from.addr = (char *)titleFont;
		XtConvertAndStore(axes,XtRString,&from,XtRFont,&to);
		if (to.addr) XtSetArg(args[nargs],XtNtitleFont,
			*((Font*)to.addr));
		nargs++;
	}
	XtSetValues(axes,args,nargs);
	x1beg = x1min; getparfloat("x1beg",&x1beg);
	x1end = x1max; getparfloat("x1end",&x1end);
	x2beg = x2min; getparfloat("x2beg",&x2beg);
	x2end = x2max; getparfloat("x2end",&x2end);
	adjustAxesValues(n1,d1,f1,n2,d2,f2,&x1beg,&x1end,&x2beg,&x2end);
	XtcwpSetAxesValues(axes,x1beg,x1end,x2beg,x2end);

	/* frame sampling */
	if (!getparfloat("fframe",&fframe)) fframe = 1.0;
	if (!getparfloat("dframe",&dframe)) dframe = 1.0;

	/* interpolation */
	if (!getparint("interp",&interp)) interp = 1;

	/* initial display mode: cont or step */
	if (!getparint("idm", &displayMode)) displayMode = DM_CONT;

	checkpars();

	/* initialize client data */
	cd.n1 = n1;  cd.d1 = d1;  cd.f1 = f1;
	cd.n2 = n2;  cd.d2 = d2;  cd.f2 = f2;
	cd.floats = z;
	cd.fmin = bclip;
	cd.fmax = wclip;
	cd.bmin = (unsigned char) (XtcwpGetFirstPixel(dpy));
	cd.bmax = (unsigned char) (XtcwpGetLastPixel(dpy));
	if(cd.bmax==0)cd.bmax=255;
	warn("bmin=%d bmax=%d",cd.bmin,cd.bmax);
	cd.x1bega = x1beg;
	cd.x1enda = x1end;
	cd.x2bega = x2beg;
	cd.x2enda = x2end;
	cd.abytes = NULL;
	cd.bbytes = NULL;
	cd.image = NULL;
	cd.exposed = 0;
	cd.noframes = 1;
	cd.axes = axes;
	cd.looping = looping;
	cd.frame = NULL;
	cd.format = format;
	cd.iframe = 0;
	cd.fframe = fframe;
	cd.dframe = dframe;
	cd.interp = interp;
	cd.forward = 1;
	cd.ac = ac;

	/* adjust axes title if formatted */
	if (strchr(cd.format,'%') && !strstr(cd.format,"%%")) {
		sprintf(cd.title,cd.format,cd.fframe+cd.iframe*cd.dframe);
		XtVaSetValues(cd.axes,XtNtitle,cd.title,NULL);
	}

	/* add work procedure */
	cd.wpid = XtAppAddWorkProc(ac,(XtWorkProc) readFrame,&cd);

	/* add callbacks to axes widget */
	XtAddCallback(axes,XtNresizeCallback,(XtCallbackProc) resizeCB,&cd);
	XtAddCallback(axes,XtNexposeCallback,(XtCallbackProc) exposeCB,&cd);
	XtAddCallback(axes,XtNinputCallback,(XtCallbackProc) inputCB,&cd);

	/* add Button2 translation for reversing the movie */
	XtOverrideTranslations(axes,
		XtParseTranslationTable("<Btn2Up>: input()"));

	/* add Button3 translation for pausing the movie */
	XtOverrideTranslations(axes,
		XtParseTranslationTable("<Btn3Up>: input()"));

	/* set up keypress */
	XtAddEventHandler(axes, KeyPress, FALSE,
			  (XtEventHandler) key_pressed, &cd);

	/* realize everything */
	XtRealizeWidget(toplevel);

	/* go */
	XtAppMainLoop(ac);

	return EXIT_SUCCESS;
}
Example #12
0
int
main(int argc, char *argv[])
{
    Boolean		exists;
    char		*filename;
    FileAccess		file_access;
    Widget		source;
    XtAppContext	appcon;
    Boolean		show_dir;
    xedit_flist_item	*first_item;
    unsigned int	i, lineno;

    lineno = 0;
    show_dir = FALSE;
    first_item = NULL;

    topwindow = XtAppInitialize(&appcon, "Xedit", NULL, 0, &argc, argv,
				NULL,
				NULL, 0);

    XtAppAddActions(appcon, actions, XtNumber(actions));
    XtOverrideTranslations(topwindow,
			   XtParseTranslationTable("<Message>WM_PROTOCOLS: quit()"));

    XtGetApplicationResources(topwindow, (XtPointer) &app_resources, resources,
			      XtNumber(resources), NULL, 0);

    CurDpy = XtDisplay(topwindow);
    XawSimpleMenuAddGlobalActions(appcon);
    XtRegisterGrabAction(PopupMenu, True,
			 ButtonPressMask | ButtonReleaseMask,
			 GrabModeAsync, GrabModeAsync);

    makeButtonsAndBoxes(topwindow);

    StartHints();
    StartFormatPosition();
    (void)StartHooks(appcon);
    if (position_format_mask == 0) {
	for (i = 0; i < 3; i++)
	    XtRemoveCallback(texts[i], XtNpositionCallback,
			     PositionChanged, NULL);
    }
    XtRealizeWidget(topwindow);

#ifndef __UNIXOS2__
    XeditLispInitialize();
#endif

    options_popup = XtCreatePopupShell("optionsMenu", simpleMenuWidgetClass,
				       topwindow, NULL, 0);
    XtRealizeWidget(options_popup);
    XtAddCallback(XtCreateManagedWidget("ispell", smeBSBObjectClass,
					options_popup, NULL, 0),
		  XtNcallback, IspellCallback, NULL);
    CreateEditPopup();

    wm_delete_window = XInternAtom(XtDisplay(topwindow), "WM_DELETE_WINDOW",
				   False);
    (void)XSetWMProtocols(XtDisplay(topwindow), XtWindow(topwindow),
			  &wm_delete_window, 1);

    /* This first call is just to save the default font and colors */
    UpdateTextProperties(0);

    if (argc > 1) {
	xedit_flist_item	*item;
	Arg			args[2];
	unsigned int		num_args;

	for (i = 1; i < argc; i++) {
	    struct stat st;

	    if (argv[i][0] == '+') {
		char	*endptr;

		lineno = strtol(argv[i], &endptr, 10);
		/* Don't warn about incorrect input? */
		if (*endptr)
		    lineno = 0;
		continue;
	    }

	    filename = ResolveName(argv[i]);
	    if (filename == NULL || FindTextSource(NULL, filename) != NULL)
		continue;

	    num_args = 0;
	    if (stat(filename, &st) == 0 && !S_ISREG(st.st_mode)) {
		if (S_ISDIR(st.st_mode)) {
		    if (!first_item) {
			char path[BUFSIZ + 1];

			strncpy(path, filename, sizeof(path) - 2);
			path[sizeof(path) - 2] = '\0';
			if (*path) {
			    if (path[strlen(path) - 1] != '/')
				strcat(path, "/");
			}
			else
			    strcpy(path, "./");
			XtSetArg(args[0], XtNlabel, "");
			XtSetValues(dirlabel, args, 1);
			SwitchDirWindow(True);
			DirWindowCB(dirwindow, path, NULL);
			show_dir = True;
		    }
		    continue;
		}
	    }

	    switch (file_access = CheckFilePermissions(filename, &exists)) {
	    case NO_READ:
		if (exists)
		    XeditPrintf("File %s exists, and could not be opened for "
				"reading.\n", argv[i]);
		else
		    XeditPrintf("File %s does not exist, and the directory "
				"could not be opened for writing.\n", argv[i]);
		break;
	    case READ_OK:
		XtSetArg(args[num_args], XtNeditType, XawtextRead); num_args++;
		XeditPrintf("File %s opened READ ONLY.\n", argv[i]);
		break;
	    case WRITE_OK:
		XtSetArg(args[num_args], XtNeditType, XawtextEdit); num_args++;
		XeditPrintf("File %s opened read - write.\n", argv[i]);
		break;
	    }
	    if (file_access != NO_READ) {
		int flags;

		if (exists) {
		    flags = EXISTS_BIT;
		    XtSetArg(args[num_args], XtNstring, filename);num_args++;
		}
		else {
		    flags = 0;
		    XtSetArg(args[num_args], XtNstring, NULL);	  num_args++;
		}
		source = XtVaCreateWidget("textSource", international ?
					  multiSrcObjectClass
					  : asciiSrcObjectClass, topwindow,
					  XtNtype, XawAsciiFile,
					  XtNeditType, XawtextEdit,
					  NULL, NULL);
		XtSetValues(source, args, num_args);
		item = AddTextSource(source, argv[i], filename,
				     flags, file_access);
		XtAddCallback(item->source, XtNcallback, SourceChanged,
			      (XtPointer)item);
		if (exists && file_access == WRITE_OK) {
		    item->mode = st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
		    item->mtime = st.st_mtime;
		}
		if (!first_item && !show_dir)
		    first_item = item;
		ResetSourceChanged(item);
	    }
	}
    }

    if (!flist.pixmap && strlen(app_resources.changed_pixmap_name)) {
	XrmValue from, to;

	from.size = strlen(app_resources.changed_pixmap_name);
	from.addr = app_resources.changed_pixmap_name;
	to.size = sizeof(Pixmap);
	to.addr = (XtPointer)&(flist.pixmap);

	XtConvertAndStore(flist.popup, XtRString, &from, XtRBitmap, &to);
    }

    if (first_item == NULL) {
	XtSetKeyboardFocus(topwindow, filenamewindow);
	XtVaSetValues(textwindow, XtNwrap, XawtextWrapLine, NULL);
    }
    else {
	SwitchTextSource(first_item);
	XtSetKeyboardFocus(topwindow, textwindow);
	if (lineno) {
	    XawTextPosition position;

	    source = XawTextGetSource(textwindow);
	    position = RSCAN(XawTextGetInsertionPoint(textwindow),
			     lineno, False);
	    position = LSCAN(position, 1, False);
	    XawTextSetInsertionPoint(textwindow, position);
	}
    }

    XtAppMainLoop(appcon);
    return EXIT_SUCCESS;
}
Example #13
0
static void restore_state_from_file(
Widget	topl,
FILE	*fp)
{
    char		buf[512];
    String		t_name = XtName( topl );
    Boolean		resize_topl=False;

    /* read and set resources */
    while( fgets( buf, 512, fp ) != NULL ){

	char		w_name[128], r_name[64];
	Widget		widget;
	XtResourceList	rsc_list;
	Cardinal	num_rsc;
	int		i;

	/* check for empty string or comment line */
	if( strlen(buf) == 0 || buf[0] == '!' )
	    continue;

	/* extract widget name, resource name and value */
	if( sscanf(buf, " %[^,:,\n]: %[^,\n]", w_name, buf) < 2 )
	    continue;
	if( (int) strlen(w_name) < 1 )
	    continue;
	for(i=(int)strlen(w_name)-1; i > 0 && w_name[i] != '.'
	    && w_name[i] != '*'; i--){}
	w_name[i] = '\0';
	strcpy( &r_name[0], &w_name[i+1] );

	/* get the widget - check for topl widget name */
	switch( w_name[0] ){
	case '\0':
	    widget = topl;
	    break;
	case '.':
	case '*':
	    if( strcmp(&(w_name[1]), t_name) == 0 )
		widget = topl;
	    else if( strncmp(&(w_name[1]), t_name, strlen(t_name)) == 0 ){
		String str = (String) &(w_name[strlen(t_name)+1]);
		if( (widget = XtNameToWidget(topl, str)) == NULL )
		    continue;
	    }
	    else if( (widget = XtNameToWidget(topl, w_name)) == NULL )
		continue;
	    break;
	default:
	    if( strcmp(&w_name[0], t_name) == 0 )
		widget = topl;
	    else if( strncmp(&w_name[0], t_name, strlen(t_name)) == 0 ){
		String str = (String) &(w_name[strlen(t_name)]);
		if( (widget = XtNameToWidget(topl, str)) == NULL )
		    continue;
	    }
	    else if( (widget = XtNameToWidget(topl, w_name)) == NULL )
		continue;
	    break;
	}

	/* convert and set the value */
	XtGetResourceList( XtClass(widget), &rsc_list, &num_rsc );
	for(i=0; i < num_rsc; i++){
	    if( strcmp( r_name, rsc_list[i].resource_name ) == 0 ){
		XrmValue	from, to;

		from.size = (int) strlen( buf );
		from.addr = (caddr_t) buf;

		to.addr = NULL;

		/* some string resources are not copied, eg geometry,
		   therefore allocate space for each string. This is
		   probably a small memory leak */
		if( strcmp(rsc_list[i].resource_type, XtRString) == 0 ){
		    String	str = (String) malloc(strlen(buf) + 4);
		    strcpy(str, buf);
		    XtVaSetValues( widget, r_name, str, NULL );
		}
		else if( XtConvertAndStore( widget, XtRString, &from,
					   rsc_list[i].resource_type, &to) ){

		    /* check for resize of top-level widget */
		    if( widget == topl &&
		       (!strcmp(r_name, XmNheight) ||
			!strcmp(r_name, XmNwidth)) )
		    {
			resize_topl = True;
		    }

		    /* set the resource value */
		    switch( rsc_list[i].resource_size ){
		    case 1:
			XtVaSetValues( widget, r_name,
				      *((unsigned char *) to.addr), NULL );
			break;
		    case 2:
			XtVaSetValues( widget, r_name,
				      *((unsigned short *) to.addr), NULL );
			break;
		    case 4:
			XtVaSetValues( widget, r_name,
				      *((unsigned int *) to.addr), NULL );
			break;
		    }
		}
		break;
	    }
	}
	XtFree( (char *)rsc_list );
    }

    /* check top-level */
    if( resize_topl == True ){
	WidgetList	children;
	Cardinal	numChildren;
	XtVaGetValues( topl, XmNchildren, &children,
		      XmNnumChildren, &numChildren, NULL);
	XtUnmanageChildren(children, numChildren);
	XtManageChildren(children, numChildren);
    }
    return;
}
Example #14
0
int
main(int argc, char **argv)
{
    int target;
    int GlobalErrors = 0;
    XtAppContext app;
    Widget Shell;
    XmRepTypeId id;
    XrmValue from, to;
    XrmValue rev_from, rev_to;
    static String value_names[] = {
	"client",
	"server",
    };
    static unsigned char values[] = {
	100,
	101,
    };

    XtSetLanguageProc(NULL, NULL, NULL);

    Shell = XtVaAppInitialize(&app, "Shell", 
    	NULL, 0, 
    	&argc, argv, 
    	FallBack, 
    	NULL);

    XtRealizeWidget(Shell);
    id = XmRepTypeRegister(TestRepType, 
	value_names, values,
	XtNumber(value_names));
    XmRepTypeAddReverse(id);
    printf("XmRepTypeId %i\n", id);

    for (target = 0; target < XtNumber(value_names); target++)
    {
	from.size = sizeof(String);
	from.addr = value_names[target];
	printf("Convert %s >%s< -> %s ",
	       XmRString,
	       from.addr,
	       TestRepType);
	XtConvertAndStore(Shell, XmRString, &from, TestRepType, &to);
	if (to.size != sizeof(unsigned char) || *(to.addr) != values[target])
	{
	    printf("Convert error\n");
	    GlobalErrors++;
	}
	else
	{
	    printf(">%d< (okay)\n", *(to.addr));
	}

	rev_from.size = to.size;
	rev_from.addr = (XtPointer)&(values[target]);
	printf("Convert %s >%d< -> XmRString ",
	       TestRepType,
	       *(rev_from.addr));
	rev_to.size = 0;
	rev_to.addr = NULL;
	XtConvertAndStore(Shell, TestRepType, &rev_from, XmRString, &rev_to);
	if (rev_to.size != sizeof(String)
	    || strcmp(rev_to.addr, value_names[target]) != 0)
	{
	    printf("Convert error\n");
	    GlobalErrors++;
	}
	else
	{
	    printf(">%s< (okay)\n", rev_to.addr);
	}
    }
    exit(GlobalErrors);
}
Example #15
0
File: font.c Project: juddy/edcde
extern void
load_app_font(
	Calendar	*cal, 
	Font_Weight	 weight,
	Cal_Font	*userfont,
	Cal_Font	*return_font)
{
	unsigned long	 pixel_size;
	Display		*dpy = XtDisplay(cal->frame);
	char		 font_name[128],
			*font_name_ptr = font_name,
		       **font_names;
	int		 nnames;
	XrmValue	 in_font;
	XrmValue	 out_fontlist;
	XmFontList	 font_list;
	Atom		 pixel_atom = XmInternAtom(dpy, "PIXEL_SIZE", FALSE);

	/* First get the pixel size from the User Font */
	if (userfont->cf_type == XmFONT_IS_FONT) {
		/* If we can't get the pixel size from the user font we
		 * defaults to a 12 pixel font.
		 */
		if (!XGetFontProperty(userfont->f.cf_font, pixel_atom, 
							&pixel_size))
			pixel_size = 12;
	} else {
		XFontStruct 	**font_struct_list;
		char		**font_name_list;
		int		  list_size;

		if (!(list_size = XFontsOfFontSet(userfont->f.cf_fontset,
					    &font_struct_list,
					    &font_name_list))) {
			pixel_size = 12;
		} else {
			int i;
			if (!XGetFontProperty(font_struct_list[0],
					      pixel_atom, 
					      &pixel_size))
				pixel_size = 12;
		}
	}

	/* If the font family is not ``application'' then it is probably
	 * multibyte so we can't assume there is an add-style or a proportional
	 * version available.
	 */
	if (!strcmp(cal->app_data->app_font_family, "application")) {
		sprintf (font_name, "-dt-%s-%s-r-normal-sans-%lu-*-*-*-p-*",
				cal->app_data->app_font_family,
				(weight == BOLD)?"bold":"medium",
				pixel_size);
	} else {
		sprintf (font_name, "-dt-%s-%s-r-normal--%lu-*-*-*-*-*",
				cal->app_data->app_font_family,
				(weight == BOLD)?"bold":"medium",
				pixel_size);
	}

	/* See if the font exists */
	font_names = XListFonts(dpy, font_name, 1, &nnames);
	if (!nnames) {
		if (!ProbeForFont(cal, weight, pixel_size, TRUE, 
							font_name_ptr)) {
			/* We didn't find anything */
			*return_font = *userfont;
			return;
		}
	} else
		XFreeFontNames(font_names);

	strcat(font_name, ":");
	in_font.size = strlen(font_name);
	in_font.addr = font_name;
	out_fontlist.size = sizeof(XmFontList);
	out_fontlist.addr = (XPointer)&font_list;

	/* Convert font string to a font list. */
	if (!XtConvertAndStore(cal->frame, XtRString, &in_font, XmRFontList,
				&out_fontlist)) {
		*return_font = *userfont;
	}

	if (!fontlist_to_font(font_list, return_font)) {
		*return_font = *userfont;
	}
}
Example #16
0
int main (int argc, char **argv)
{
	int nTic1,nTic2,width,height;
	float smin,smax,bclip,wclip,x1beg,x1end,x2beg,x2end;
	char *edgecolor="cyan",*tricolor="yellow",*cmap="gray",
		*label1="",*label2="",*title="",
		*labelFont="",*titleFont="",
		*axesColor="",*gridColor="",*titleColor="",
		*style="seismic",*grid1="none",*grid2="none";
	Model *model;
	XrmValue from,to;
	ExposeCD exposeCD;
	Widget toplevel,axes;
	Display *dpy;
	Window win;
	Arg args[100];
	int nargs;
	float bhue=0,whue=240,sat=1,bright=1;

	/* initialize getpar */
	initargs(argc,argv);
        requestdoc(0);

	
	/* read model */
	model = readModel(stdin);
	
	/* determine minimum and maximum s(x,y) */
	minmax(model,&smin,&smax);
	
	/* get optional parameters */
	getparstring("edgecolor",&edgecolor);
	getparstring("tricolor",&tricolor);
	bclip = smin; getparfloat("bclip",&bclip);
	wclip = smax; getparfloat("wclip",&wclip);
        getparstring("cmap",&cmap);   

	/* initialize toolkit intrinsics and set toplevel parameters */
	toplevel = XtInitialize(argv[0],"Sxplot",NULL,0,&argc,argv);
	nargs = 0;
	if (getparint("width",&width))
		{XtSetArg(args[nargs],XtNwidth,width); nargs++;}
	if (getparint("height",&height))
		{XtSetArg(args[nargs],XtNheight,height); nargs++;}
	XtSetValues(toplevel,args,nargs);

	/* create axes and set axes parameters */
	axes = XtCreateManagedWidget("axes",xtcwpAxesWidgetClass,
		toplevel,NULL,0);


	nargs = 0;
	if (getparstring("grid1",&grid1)) {
		from.addr = (char *)grid1;
		XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to);
		if (to.addr) XtSetArg(args[nargs],XtNgrid1,*((int*)to.addr));
		nargs++;
	}
	if (getparstring("grid2",&grid2)) {
		from.addr = (char *)grid2;
		XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to);
		if (to.addr) XtSetArg(args[nargs],XtNgrid2,*((int*)to.addr));
		nargs++;
	}
	if (getparint("nTic1",&nTic1))
		{XtSetArg(args[nargs],XtNnTic1,nTic1); nargs++;}
	if (getparint("nTic2",&nTic2))
		{XtSetArg(args[nargs],XtNnTic2,nTic2); nargs++;}
	if (getparstring("label1",&label1))
		{XtSetArg(args[nargs],XtNlabel1,label1); nargs++;}
	if (getparstring("label2",&label2))
		{XtSetArg(args[nargs],XtNlabel2,label2); nargs++;}
	if (getparstring("title",&title))
		{XtSetArg(args[nargs],XtNtitle,title); nargs++;}
	if (getparstring("style",&style)) {
		from.size = (unsigned int) strlen(style);  from.addr = (char *)style;
		XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesStyle,&to);
		if (to.addr) XtSetArg(args[nargs],XtNstyle,*((int*)to.addr));
		nargs++;
	}
	if (getparstring("axesColor",&axesColor)) {
		from.addr = (char *)axesColor;
		XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to);
		if (to.addr) XtSetArg(args[nargs],XtNaxesColor,
			*((unsigned long*)to.addr));
		nargs++;
	}
	if (getparstring("gridColor",&gridColor)) {
		from.addr = (char *)gridColor;
		XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to);
		if (to.addr) XtSetArg(args[nargs],XtNgridColor,
			*((unsigned long*)to.addr));
		nargs++;
	}
	if (getparstring("titleColor",&titleColor)) {
		from.addr = (char *)titleColor;
		XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to);
		if (to.addr) XtSetArg(args[nargs],XtNtitleColor,
			*((unsigned long*)to.addr));
		nargs++;
	}
	if (getparstring("labelFont",&labelFont)) {
		from.addr = (char *)labelFont;
		XtConvertAndStore(axes,XtRString,&from,XtRFont,&to);
		if (to.addr) XtSetArg(args[nargs],XtNlabelFont,
			*((Font*)to.addr));
		nargs++;
	}
	if (getparstring("titleFont",&titleFont)) {
		from.addr = (char *)titleFont;
		XtConvertAndStore(axes,XtRString,&from,XtRFont,&to);
		if (to.addr) XtSetArg(args[nargs],XtNtitleFont,
			*((Font*)to.addr));
		nargs++;
	}
	XtSetValues(axes,args,nargs);
	x1beg = model->xmin; getparfloat("x1beg",&x1beg);
	x1end = model->xmax; getparfloat("x1end",&x1end);
	x2beg = model->ymin; getparfloat("x2beg",&x2beg);
	x2end = model->ymax; getparfloat("x2end",&x2end);
	XtcwpSetAxesValues(axes,x1beg,x1end,x2beg,x2end);

	/* add callbacks to axes widget */
	XtAddCallback(axes,XtNresizeCallback,(XtCallbackProc) resizeCB,NULL);
	exposeCD.model = model;
	exposeCD.edgecolor = edgecolor;
	exposeCD.tricolor = tricolor;
	exposeCD.bclip = bclip;
	exposeCD.wclip = wclip;
	XtAddCallback(axes,XtNexposeCallback,(XtCallbackProc) exposeCB,&exposeCD);
	XtAddCallback(axes,XtNinputCallback,(XtCallbackProc) inputCB,NULL);

	/* realize widgets */
	XtRealizeWidget(toplevel);

	/* if necessary, create private colormap */
	dpy = XtDisplay(toplevel);
	win = XtWindow(toplevel);

	if (STREQ(cmap,"gray")) {
	  XSetWindowColormap(dpy,win,XtcwpCreateGrayColormap(dpy,win));
	} else if (STREQ(cmap,"hue")) {
	  XSetWindowColormap(dpy,win,XtcwpCreateHueColormap(dpy,win,
														bhue,whue,sat,bright)); /* see Note below */
	}
	
	/* go */
	XtMainLoop();

	return EXIT_SUCCESS;
}
Example #17
0
_XvicImageSetStringCursor(
   XvicImageWidget iw,
   char *name)
#endif /* _NO_PROTO */
{
   Display *dpy;
   char source_name[xvicPATH_MAX], mask_name[xvicPATH_MAX];
   int source_char, mask_char, fields;
   Font source_font, mask_font;
   XrmValue fromString, toFont;
   Boolean success;
#ifndef NO_XMU
   int i;
   unsigned int shape;
   Pixmap source, mask;
   int xhot, yhot;
   int len;
#endif

   dpy = XtDisplay((Widget)iw);

   /* Check for font name/glyph index form */

   if (strncmp(FONTSPECIFIER, name, strlen(FONTSPECIFIER)) == 0) {

      fields = sscanf(name, "FONT %s %d %s %d", source_name, &source_char,
			mask_name, &mask_char);
      if (fields < 2 || fields > 4) {
         XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw),
		"BadCursorString", "XvicImage", "XvicImageWidgetError",
		"Invalid format for Cursor string resource, cursor ignored",
		(String *)NULL, (Cardinal *)NULL);
         return;
      }

      fromString.addr = source_name;
      fromString.size = strlen(source_name) + 1;

#if XtSpecificationRelease <= 4
      XtConvert((Widget)iw, XtRString, &fromString, XtRFont, &toFont);
      success = (toFont.addr != NULL);
      if (success)
         source_font = *(Font *)toFont.addr;
#else
      toFont.addr = (XtPointer) &source_font;
      toFont.size = sizeof(Font);
      success = XtConvertAndStore((Widget)iw, XtRString, &fromString,
			XtRFont, &toFont);
#endif
      if (!success) {
         XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw),
		"BadCursorFont", "XvicImage", "XvicImageWidgetError",
		"Invalid font for Cursor string resource, cursor ignored",
		(String *)NULL, (Cardinal *)NULL);
         return;
      }

      switch (fields) {
         case 2:		/* defaulted mask font & char */
            mask_font = None;		/* thus there is no mask, really */
            mask_char = 0;
            break;

         case 3:		/* defaulted mask font */
            mask_font = source_font;
            mask_char = atoi(mask_name);
            break;

         case 4:		/* specified mask font & char */
            fromString.addr = mask_name;
            fromString.size = strlen(mask_name) + 1;

#if XtSpecificationRelease <= 4
            XtConvert((Widget)iw, XtRString, &fromString, XtRFont, &toFont);
            success = (toFont.addr != NULL);
            if (success)
               mask_font = *(Font *)toFont.addr;
#else
            toFont.addr = (XtPointer) &mask_font;
            toFont.size = sizeof(Font);
            success = XtConvertAndStore((Widget)iw, XtRString, &fromString,
				XtRFont, &toFont);
#endif
            if (!success) {
               XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw),
		"BadCursorMaskFont", "XvicImage", "XvicImageWidgetError",
		"Invalid mask font for Cursor string resource, cursor ignored",
		(String *)NULL, (Cardinal *)NULL);
               return;
            }
      }

      _XvicImageSetGlyphCursor(iw, source_font, mask_font,
		source_char, mask_char);
/*!!!! Do we need to free fonts here???? !!!!*/

      return;
   }

#ifdef NO_XMU

   if (strcmp(name, DEFAULT_CURSOR) == 0) {
      _XvicImageSetFontCursor(iw, DEFAULT_CURSOR_SHAPE);  /* default value */
      return;
   }
   XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw),
		"BadCursorString", "XvicImage", "XvicImageWidgetError",
		"Invalid format for Cursor string resource, cursor ignored",
		(String *)NULL, (Cardinal *)NULL);
   return;

#else			/* Xmu is available */

   /* Check for cursor shape name */

   shape = XmuCursorNameToIndex(name);
   if (shape != -1) {
      _XvicImageSetFontCursor(iw, shape);
      return;
   }

   /* Check for bitmap file name */

   source = XmuLocateBitmapFile(XtScreen((Widget)iw), name, 
		mask_name, (sizeof mask_name) - 4, NULL, NULL, &xhot, &yhot);
   if (source == None) {
      XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw),
		"BadCursorString", "XvicImage", "XvicImageWidgetError",
		"Invalid format for Cursor string resource, cursor ignored",
		(String *)NULL, (Cardinal *)NULL);
      return;
   }
   len = strlen (mask_name);
   for (i = 0; i < 2; i++) {
      strcpy (mask_name + len, i == 0 ? "Mask" : "msk");
      mask = XmuLocateBitmapFile (XtScreen((Widget)iw), mask_name, NULL, 0, 
				NULL, NULL, NULL, NULL);
      if (mask != None)
         break;
   }

   _XvicImageSetPixmapCursor(iw, source, mask, xhot, yhot);

   XFreePixmap(XtDisplay((Widget)iw), source);
   if (mask != None)
      XFreePixmap(XtDisplay((Widget)iw), mask);

   return;

#endif

}