Ik zit een beetje met het volgende.
En vroeg me af of er enkele van jullie ervaring hadden met applicaties schijven onder Linux in C(++) gebruik makend van de Ncurses library.
Ik ben dus bezig met een applicatie welke dynamisch resized in een Xterminal. (xterm, maar ook putty for windows etc.).
Ik maak gebruik van een SIGWINCH signal handler om in de gaten te houden of de terminal van grote veranderd en vraag dan via ioctl de nieuwe Lines en columns waarden op.
Nu is het geval dat je een programma welke gebruikt maakt van Ncurses initialiseerd door de aanroep:
initscr();
En in de handleiding staat ongeveer het volgende (kan het ff niet vinden)
"A well written program that uses ncurses only calls initscr(); once."
Maar nu is het zo dat Initscr(); de waardes van de lines en cols vastlegt voor de overige functies om daar gebruik van te maken. Dus wanneer ik een Window creer die buiten de lines en columns liggen van de oorspronkelijke Initscr waardes, dit niet goed gaat.
Dus stel ik heb mijn Xterm op 100 cols en 50 lines staan ik start het programma op en ik maximize mijn xterm naar zeg 150 cols en 80 lines de creatie van het window "out of range" ligt.
Ik heb dit voorlopig even opgelost door de oorspronkelijke waardes van de xterm op te slaan en een window niet groter te maken dan de oorspronkelijke waardes. Maar ik zou eigenlijk wel gewoon gebruik willen maken van de volledige beschikbare ruimte ook wanneer je je xterm maximized. (zeker wanneer je het programma dus maar opstart met 30 cols en 10 lines ofzo.)
Nu is mijn vraag of iemand functies kent waardoor ik dit toch mogelijk kan maken.
Of dat jullie zeggen dat ik gewoon iedere resize een endwin call moet doen en een nieuwe initscr();
Thx.
En vroeg me af of er enkele van jullie ervaring hadden met applicaties schijven onder Linux in C(++) gebruik makend van de Ncurses library.
Ik ben dus bezig met een applicatie welke dynamisch resized in een Xterminal. (xterm, maar ook putty for windows etc.).
Ik maak gebruik van een SIGWINCH signal handler om in de gaten te houden of de terminal van grote veranderd en vraag dan via ioctl de nieuwe Lines en columns waarden op.
Nu is het geval dat je een programma welke gebruikt maakt van Ncurses initialiseerd door de aanroep:
initscr();
En in de handleiding staat ongeveer het volgende (kan het ff niet vinden)
"A well written program that uses ncurses only calls initscr(); once."
Maar nu is het zo dat Initscr(); de waardes van de lines en cols vastlegt voor de overige functies om daar gebruik van te maken. Dus wanneer ik een Window creer die buiten de lines en columns liggen van de oorspronkelijke Initscr waardes, dit niet goed gaat.
Dus stel ik heb mijn Xterm op 100 cols en 50 lines staan ik start het programma op en ik maximize mijn xterm naar zeg 150 cols en 80 lines de creatie van het window "out of range" ligt.
Ik heb dit voorlopig even opgelost door de oorspronkelijke waardes van de xterm op te slaan en een window niet groter te maken dan de oorspronkelijke waardes. Maar ik zou eigenlijk wel gewoon gebruik willen maken van de volledige beschikbare ruimte ook wanneer je je xterm maximized. (zeker wanneer je het programma dus maar opstart met 30 cols en 10 lines ofzo.)
Nu is mijn vraag of iemand functies kent waardoor ik dit toch mogelijk kan maken.
Of dat jullie zeggen dat ik gewoon iedere resize een endwin call moet doen en een nieuwe initscr();
Thx.