Window creation/X11: Difference between revisions
Content added Content deleted
(removed "Icon and Unicon" because the task is about interacting with the X server in a low level way with for example Xlib or XCB, here this example is the same than on the page "Window_creation") |
(Added PicoLisp) |
||
Line 165: | Line 165: | ||
{{omit from|TI-83 BASIC}} {{omit from|TI-89 BASIC}} <!-- Does not have a local X server or network access. --> |
{{omit from|TI-83 BASIC}} {{omit from|TI-89 BASIC}} <!-- Does not have a local X server or network access. --> |
||
{{omit from|PureBasic}} |
{{omit from|PureBasic}} |
||
=={{header|PicoLisp}}== |
|||
The following script works in the 32-bit version, using inlined C code |
|||
<lang PicoLisp>#!bin/picolisp lib.l |
|||
(load "lib/misc.l" "lib/gcc.l") |
|||
(gcc "x11" '("-lX11") 'simpleWin) |
|||
#include <X11/Xlib.h> |
|||
any simpleWin(any ex) { |
|||
any x = cdr(ex); |
|||
int dx, dy; |
|||
Display *disp; |
|||
int scrn; |
|||
Window win; |
|||
XEvent ev; |
|||
x = cdr(ex), dx = (int)evCnt(ex,x); |
|||
x = cdr(x), dy = (int)evCnt(ex,x); |
|||
x = evSym(cdr(x)); |
|||
if (disp = XOpenDisplay(NULL)) { |
|||
char msg[bufSize(x)]; |
|||
bufString(x, msg); |
|||
scrn = DefaultScreen(disp); |
|||
win = XCreateSimpleWindow(disp, RootWindow(disp,scrn), 0, 0, dx, dy, |
|||
1, BlackPixel(disp,scrn), WhitePixel(disp,scrn) ); |
|||
XSelectInput(disp, win, ExposureMask | KeyPressMask | ButtonPressMask); |
|||
XMapWindow(disp, win); |
|||
for (;;) { |
|||
XNextEvent(disp, &ev); |
|||
switch (ev.type) { |
|||
case Expose: |
|||
XDrawRectangle(disp, win, DefaultGC(disp, scrn), 10, 10, dx-20, dy-20); |
|||
XDrawString(disp, win, DefaultGC(disp, scrn), 30, 40, msg, strlen(msg)); |
|||
break; |
|||
case KeyPress: |
|||
case ButtonPress: |
|||
XCloseDisplay(disp); |
|||
return Nil; |
|||
} |
|||
} |
|||
} |
|||
return mkStr("Can't open Display"); |
|||
} |
|||
/**/ |
|||
(simpleWin 300 200 "Hello World") |
|||
(bye)</lang> |
|||
=={{header|Python}}== |
=={{header|Python}}== |