#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
#include "Eyes.h"
#include <stdio.h>
#include <stdlib.h>
#include "eyes.bit"
#include "eyesmask.bit"
static void
usage(void)
{
fprintf(stderr,
"usage: xeyes\n");
fprintf (stderr,
" [-geometry [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]] [-display [{host}]:[{vs}]]\n");
fprintf(stderr,
" [-fg {color}] [-bg {color}] [-bd {color}] [-bw {pixels}]");
fprintf(stderr, " [-shape | +shape]");
fprintf(stderr, "\n");
fprintf(stderr,
" [-outline {color}] [-center {color}] [-backing {backing-store}]\n");
exit(1);
}
static XrmOptionDescRec options[] = {
{"-outline", "*eyes.outline", XrmoptionSepArg, NULL},
{"-center", "*eyes.center", XrmoptionSepArg, NULL},
{"-backing", "*eyes.backingStore", XrmoptionSepArg, NULL},
{"-shape", "*eyes.shapeWindow", XrmoptionNoArg, "TRUE"},
{"+shape", "*eyes.shapeWindow", XrmoptionNoArg, "FALSE"},
};
static Atom wm_delete_window;
static void
quit(Widget w, XEvent *event, String *params, Cardinal *num_params)
{
if (event->type == ClientMessage &&
event->xclient.data.l[0] != wm_delete_window) {
XBell(XtDisplay(w), 0);
} else {
XtDestroyApplicationContext(XtWidgetToApplicationContext(w));
exit(0);
}
}
static XtActionsRec actions[] = {
{"quit", quit}
};
int
main(int argc, char **argv)
{
XtAppContext app_context;
Widget toplevel;
Arg arg[2];
Cardinal i;
XtSetLanguageProc(NULL, (XtLanguageProc) NULL, NULL);
toplevel = XtAppInitialize(&app_context, "XEyes",
options, XtNumber(options), &argc, argv,
NULL, arg, (Cardinal) 0);
if (argc != 1) usage();
wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
False);
XtAppAddActions(app_context, actions, XtNumber(actions));
XtOverrideTranslations
(toplevel, XtParseTranslationTable ("<Message>WM_PROTOCOLS: quit()"));
i = 0;
XtSetArg (arg[i], XtNiconPixmap,
XCreateBitmapFromData (XtDisplay(toplevel),
XtScreen(toplevel)->root,
(char *)eyes_bits, eyes_width, eyes_height));
i++;
XtSetArg (arg[i], XtNiconMask,
XCreateBitmapFromData (XtDisplay(toplevel),
XtScreen(toplevel)->root,
(char *)eyesmask_bits,
eyesmask_width, eyesmask_height));
i++;
XtSetValues (toplevel, arg, i);
(void) XtCreateManagedWidget ("eyes", eyesWidgetClass, toplevel, NULL, 0);
XtRealizeWidget (toplevel);
(void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel),
&wm_delete_window, 1);
XtAppMainLoop(app_context);
return 0;
}