Página principal   Módulos   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Membros do namespace   Componentes   Declarações   Paginas relacionadas  

menu.H

Ir para a documentação deste ficheiro.
00001 
00004 #ifndef SLANG_MENU_H
00005 #define SLANG_MENU_H
00006 
00007 #include <vector>
00008 #include <string>
00009 
00010 #include <Slang/ecra.H>
00011 
00012 namespace Slang {
00013 
00038     class ApendiceComCor {
00039     public:
00041         ApendiceComCor();
00042         
00044 
00045 
00046         Ecra::ObjectoCor const& o_borda() const;
00048         Ecra::ObjectoCor const& o_titulo() const;
00050         Ecra::ObjectoCor const& o_itens() const;
00052         Ecra::ObjectoCor const& o_corrente() const;
00054 
00056 
00057 
00058         Ecra::ObjectoCor& o_borda();
00060         Ecra::ObjectoCor& o_titulo();
00062         Ecra::ObjectoCor& o_itens();
00064         Ecra::ObjectoCor& o_corrente();
00066 
00067     private:
00068         Ecra::ObjectoCor o_borda_;
00069         Ecra::ObjectoCor o_titulo_;
00070         Ecra::ObjectoCor o_itens_;
00071         Ecra::ObjectoCor o_corrente_;
00072     };
00073 
00078     class Menu {
00079     public:
00082         explicit Menu(std::string const& titulo);
00084         virtual ~Menu();
00087         virtual int executa() = 0;
00089         string titulo() const;
00090 
00091     private:
00092         string titulo_;
00093     };
00094 
00100     class MenuComCor: public Menu, public ApendiceComCor {
00101     public:
00104         explicit MenuComCor(std::string const& titulo);
00105     };
00106 
00137     class MenuSimples : public MenuComCor {
00138     public:
00145         MenuSimples(std::string const& titulo, 
00146                     std::string const itens[], 
00147                     int numero_de_itens);
00153         MenuSimples(std::string const& titulo, 
00154                     std::string const& itens);
00157         virtual int executa();
00158 
00159     private:
00160         void calculaDimensao();
00161         void calculaPosicao() const;
00162         void desenhaItem(int i) const;
00163         void desenha() const;
00164 
00165         std::vector<std::string> itens;
00166         int numero_de_itens;
00167         std::string::size_type largura_maxima;
00168         mutable Posicao posicao;
00169         Dimensao dimensao;
00170         int corrente;
00171     };
00172 
00177     class MenuCor : public MenuSimples {
00178     public:
00181         explicit MenuCor(std::string const& titulo);
00182     };
00183 
00189     class MenuSimNao : public MenuSimples {
00190     public:
00193         explicit MenuSimNao(std::string const& titulo);
00196         virtual int executa();
00197     };
00198 
00204     class Aviso {
00205     public:
00208         explicit Aviso(std::string const& mensagem);
00210         virtual ~Aviso();
00212         virtual void executa(); 
00213     private:
00214         MenuSimples menu;
00215     };
00216 
00222     class CaixaDeTexto : public ApendiceComCor {
00223     public:
00230         explicit CaixaDeTexto(std::string const& titulo, 
00231                               std::string const& valor = "",
00232                               std::string::size_type espacos = 0);
00234         virtual ~CaixaDeTexto();
00237         virtual std::string executa(bool impede_vazia = false);
00239         std::string titulo() const;
00240     private:
00241         void desenha() const;
00242         void calculaPosicao() const;
00243         std::string titulo_;
00244         string::size_type espacos; // espaços visíveis.
00245         std::string valor;
00246         string::size_type inicio; // início da parte visível da string.
00247         string::size_type posicao; // posição do cursor nos espaços.
00248         Dimensao dimensao;
00249         mutable Posicao origem;
00250     };
00251 }
00252 
00253 #include <Slang/menu_impl.H>
00254 
00255 #endif // SLANG_MENU_H

Gerado em Mon May 14 17:22:13 2001 para Slang++ por doxygen1.2.6 escrito por Dimitri van Heesch, © 1997-2001