Ncurses nr 3

by Maciej Lasota published 2018/12/13 17:45:02 GMT+2, last modified 2018-12-13T17:45:02+02:00
/* 
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);
}