programação pseudo

4
Programação pseudo-gráfica para Linux Postado por Willian Valle em 15/02/2009 04:35 Blog: Void main Nesse artigo vou falar sobre uma biblioteca muito útil feita para desenvolvimento de aplicações pseudográficas usando C e rodando no sistema Linux. A Ncurses (new curses) possui funções completas de criação de janelas, manipulação de cores, suporte avançado a teclado e suporte a uso do mouse para aplicações de terminal. O que a torna ideal para criar um ambiente agradável em arquivos de configuração, instalação etc. Possui ainda bibliotecas derivadas que auxiliam no processo de criação de “Panels” e Menus. Embora atualmente só rode em Linux, a equipe responsável pelo seu desenvolvimento anunciou que tem planos de porta-la para a plataforma DOS/Windows. INSTALAÇÃO: _________________________________________________________ Antes de tudo precisamos baixar e instalar a biblioteca, que está disponível em: http://ftp.gnu.org/pub/gnu/ncurses/ (baixar o tar.gz da ultima versão) a compilação segue o padrão: ./configure make make install PRIMEIRO EXEMPLO: Baixar Exemplo #include <ncurses.h> int main(){ WINDOW *janela; //Declara um ponteiro para identificar uma janela. initscr(); //Inicializa a biblioteca start_color(); //Inicializa a função de cores init_pair(1, COLOR_WHITE, COLOR_BLACK); //Define um par de cor na posição 1

Upload: kalazansalan

Post on 09-Nov-2015

1 views

Category:

Documents


0 download

DESCRIPTION

Programação

TRANSCRIPT

  • Programao pseudo-grfica para Linux

    Postado por Willian Valle em 15/02/2009 04:35 Blog: Void main

    Nesse artigo vou falar sobre uma biblioteca muito til feita para

    desenvolvimento de aplicaes pseudogrficas usando C e rodando no sistema

    Linux.

    A Ncurses (new curses) possui funes completas de criao de janelas,

    manipulao de cores, suporte avanado a teclado e suporte a uso do mouse

    para aplicaes de terminal. O que a torna ideal para criar um ambiente

    agradvel em arquivos de configurao, instalao etc.

    Possui ainda bibliotecas derivadas que auxiliam no processo de criao de

    Panels e Menus.

    Embora atualmente s rode em Linux, a equipe responsvel pelo seu

    desenvolvimento anunciou que tem planos de porta-la para a

    plataforma DOS/Windows.

    INSTALAO:

    _________________________________________________________

    Antes de tudo precisamos baixar e instalar a biblioteca, que est disponvel em:

    http://ftp.gnu.org/pub/gnu/ncurses/ (baixar o tar.gz da ultima verso) a

    compilao segue o padro:

    ./configure

    make

    make install

    PRIMEIRO EXEMPLO: Baixar Exemplo

    #include

    int main(){

    WINDOW *janela; //Declara um ponteiro para identificar uma

    janela.

    initscr(); //Inicializa a biblioteca

    start_color(); //Inicializa a funo de cores

    init_pair(1, COLOR_WHITE, COLOR_BLACK); //Define um par de

    cor na posio 1

  • janela=newwin(10,50,2,2); //Cria uma janela com 10 de altura,

    50 de largura e posio 2/2

    box(janela,ACS_VLINE,ACS_HLINE); //Cria uma borda na janela

    wbkgdset(janela,COLOR_PAIR(1)); //Define cor padro como

    sendo a da posio 1

    mvwprintw(janela,2,2,"Texto"); //Coloca um texto na janela

    "janela", na posio 2/2

    wrefresh(janela); //Atualiza o contedo da janela para ser

    mostrado

    wgetch(janela); //Para a execuo para a janela ser vista

    delwin(janela); //Deleta a janela

    endwin(); //Permite o fim correto do programa

    return 0;

    }

    Esse o caso mais simples da utilizao de janelas da biblioteca, e tambm

    o algoritmo base do seu funcionamento que est descrito nos comentrios do

    programa.

    Ento. Para um programa de exibio como o caso, o algoritmo pode ser

    resumido como:

    Declara ponteiros do tipo WINDOW para as janelas.

    Inicializa a biblioteca ( initscr(); ) Se usar cores, entrar com o start_color(); e os

    pares de cores com a init_pair(); Funes facultativas de gerenciamento e

    escrita das janelas.

    Atualizar janelas wrefresh(); parar a execuo getch(); deletar janelas delwin(); finalizar biblioteca endwin();

    COMPILANDO:

    _________________________________________________________

    Para compilar corretamente programas feitos com a Ncurses, alem de

    adicionar seu header com o comando include deve-se linkar a biblioteca ao gcc

    passando -lncurses como parmetro.

    Ento uma forma comum de compilao ficaria:

    gcc arquivo.c -o arquivo -lncurses

  • Uma coisa interessante a se prestar ateno so as regras dos nomes das

    funes da linguagem, que indicam os seus argumentos e sua funcionalidade.

    Por exemplo:

    mvwprintw(); ? permite escolher a posio na tela/janela (mv) permite ser

    colocada em uma janela (w)

    enquanto a funo wprintw(); s permite ser colocada em uma janela, pois no

    precedida do mv.

    OUTRAS FUNES:

    _________________________________________________________

    Boa parte das funes das bibliotecas stdio e conio.h tem sua respectiva na

    Ncurses. Citarei algumas das mais usadas.

    *Todas as funes podem ser encontradas com o prefixo mv, w etc..

    Scanw(); ? permite a leitura de entrada do teclado assim como a scanf do stdio.

    Getch(); ? captura um char do usurio sem esperar a entrada do enter.

    Getstr(); ? captura uma string do usurio.

    Halfdelay(); ? similar a cbreak();

    A QUESTO DO REFRESH/GETCH

    _________________________________________________________

    importante entender bem essas duas funes, visto que nem sempre se

    deseja fazer apenas uma janela de cada vez, e elas so as que definem o que

    vai aparecer a qual hora.

    Como a Ncurses no tem funo de loop, o programador encarregado de

    fazer as janelas aparecerem e sumirem nas horas corretas.

    wrefresh(WINDOW *janela);

    A no apario da funo faz com que a janela no seja exibida, e qualquer

    mudana da janela da em diante no ser exibida a no ser que exista algum

    refresh posterior. Pode ser usada para controlar o conteudo.

    wgetch(WINDOW *janela);

    o wgetch apenas aguarda uma tecla ser pressionada para dar continuidade a

    execuo do programa, ento no necessaria caso exista algum break na

    janela. Porm se nenhuma pausa for dada entre dois refreshs, a janela s ser visualizada de uma forma (no caso, na forma do ultimo refresh).

    CONCLUSO PRIMEIRA PARTE:

    _________________________________________________________

    Esse foi o primeiro artigo sobre a biblioteca, e serve apenas para apresentar e

    dar as ideias bsicas da programao pseudogrfica com a Ncurses.

  • Uma boa base de dados para o aprendizado da biblioteca o site:

    http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html que trata

    de grande parte da biblioteca.