Searching for a working example of a curses application that resizes in xterm
Grant Edwards
grante at visi.com
Mon Sep 19 12:11:29 EDT 2005
On 2005-09-19, schwerdy at web.de <schwerdy at web.de> wrote:
> can someone provide an example of a curses application that works in a
> xterm that can be resized?
I'm afraid I can't post the entire program, but what you need
to do is to catch the WINCH signal and set a flag which is
checked by your main "event" loop and handled. Here's the
basic C code:
static void sigwinchHandler(int sig)
{
(void) sig;
sigwinchReceived = 1;
}
static void clipWindows(void)
{
tCh *ch;
int x,y,rows,cols;
for (ch = chlist; ch != NULL; ch = ch->next)
{
getbegyx(ch->win,y,x);
getmaxyx(ch->win,rows,cols);
clipwin(&rows,&cols,&y,&x);
moveWindow(ch,rows,cols,y,x);
}
}
main()
{
[...]
sigact.sa_handler = sigwinchHandler;
s = sigaction(SIGWINCH, &sigact, NULL);
assert(s==0);
// start up curses
while (1)
{
// do stuff
if (sigwinchReceived)
{
struct winsize size;
if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0)
{
resizeterm(size.ws_row, size.ws_col);
clipWindows();
}
sigwinchReceived = 0;
}
}
}
--
Grant Edwards grante Yow! If I am elected no
at one will ever have to do
visi.com their laundry again!
More information about the Python-list
mailing list