/*
Przyklad CURSES + PANEL
autor: Grzegorz Lukawski
Kompilacja poleceniem:
gcc curses3.c -lcurses -lpanel -o curses3
*/
#include <stdlib.h>
#include <stdio.h>
#include <curses.h>
#include <panel.h>
main()
{
WINDOW *okno1, *okno2; // Okna programu
PANEL *pan1, *pan2; // Panele zwiazane z oknami
int znak;
int pozX, pozY; // Pozycja panela nr 1
int maxX, maxY; // Maksymalne polozenie panela nr 1
initscr(); // Rozpoczecie pracy z biblioteka CURSES
curs_set(0); // Nie wyswietlaj kursora
noecho(); // Nie wyswietlaj znakow z klawiatury
pozX = pozY = 0;
maxY = LINES - 10;maxX = COLS - 20;
// Panel 1
okno1 = newwin(10, 20, pozY, pozX);
keypad(okno1, 1);
pan1 = new_panel(okno1); // Utworzenie panela
box(panel_window(pan1), 0, 0); // Standardowe ramki
mvwprintw(panel_window(pan1), 1, 1, "To jest panel nr 1");
mvwprintw(panel_window(pan1), 3, 1, "Uzyj strzalek");
// Panel 2
okno2 = newwin(10, 20, maxY-pozY, maxX-pozX);
pan2 = new_panel(okno2);
box(panel_window(pan2), 0, 0); // Standardowe ramki
mvwprintw(panel_window(pan2), 1, 1, "To jest panel nr 2");
mvwprintw(panel_window(pan2), 3, 1, "SPACJA konczy");
update_panels();
doupdate();
do {
znak = wgetch(okno1); // Oczekiwanie na klawisz
// Przesuwanie paneli
if(znak == KEY_LEFT && pozX > 0) {
move_panel(pan1, pozY, --pozX);
move_panel(pan2, maxY-pozY, maxX-pozX);
}
if(znak == KEY_RIGHT && pozX < maxX) {
move_panel(pan1, pozY, ++pozX);
move_panel(pan2, maxY-pozY, maxX-pozX);
}
if(znak == KEY_UP && pozY > 0) {
move_panel(pan1, --pozY, pozX);
move_panel(pan2, maxY-pozY, maxX-pozX);
}
if(znak == KEY_DOWN && pozY < maxY) {
move_panel(pan1, ++pozY, pozX);
move_panel(pan2, maxY-pozY, maxX-pozX);
}
// Odswiezenie ekranu
update_panels();
doupdate();
} while(znak != 32);
del_panel(pan1);del_panel(pan2); // Usuniecie paneli
delwin(okno1);delwin(okno2); // Usuniecie okien
endwin(); // Koniec pracy z CURSES
return(0);
}