Página principal   Módulos   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Membros do namespace   Componentes membro   Ficheiros membro   Páginas relacionadas  

menu.H

Ir para a documentação deste ficheiro.
00001 
00007 #ifndef SLANG_MENU_H
00008 #define SLANG_MENU_H
00009 
00010 #include <vector>
00011 #include <string>
00012 
00013 #include <Slang++/ecra.H>
00014 
00015 namespace Slang {
00016 
00046     class ApendiceComCor {
00047     protected:
00049 
00050 
00063         ApendiceComCor();
00064 
00068         ~ApendiceComCor();
00069 
00071         
00073 
00074 
00081         Ecra::ObjectoCor const& objectoCorDaBorda() const;
00082 
00089         Ecra::ObjectoCor const& objectoCorDoTitulo() const;
00090 
00097         Ecra::ObjectoCor const& objectoCorDosItens() const;
00098 
00105         Ecra::ObjectoCor const& objectoCorDoItemCorrente() const;
00106 
00108 
00110 
00111 
00118         Ecra::ObjectoCor& objectoCorDaBorda();
00119 
00126         Ecra::ObjectoCor& objectoCorDoTitulo();
00127 
00134         Ecra::ObjectoCor& objectoCorDosItens();
00135 
00142         Ecra::ObjectoCor& objectoCorDoItemCorrente();
00143 
00145 
00146     private:
00147         Ecra::ObjectoCor objecto_cor_da_borda;
00148         Ecra::ObjectoCor objecto_cor_do_titulo;
00149         Ecra::ObjectoCor objecto_cor_dos_itens;
00150         Ecra::ObjectoCor objecto_cor_do_item_corrente;
00151 
00157         bool cumpreInvariante() const;
00158     };
00159 
00167     class Menu {
00168     public:
00170 
00171 
00177         explicit Menu(std::string const& titulo);
00178 
00182         virtual ~Menu() = 0;
00183 
00185 
00187 
00188 
00194         std::string titulo() const;
00195 
00202         virtual int opcaoActual() const = 0;
00203 
00205 
00207 
00208 
00214         virtual void interage() = 0;
00215 
00217 
00218     private:
00219         std::string titulo_;
00220 
00226         bool cumpreInvariante() const;
00227     };
00228 
00235     class MenuComCor: public Menu, protected ApendiceComCor {
00236     public:
00238 
00239 
00245         explicit MenuComCor(std::string const& titulo);
00246 
00250         virtual ~MenuComCor() = 0;
00251 
00253     };
00254 
00275     class MenuSimples : public MenuComCor {
00276     public:
00278 
00279 
00289         MenuSimples(std::string const& titulo, 
00290                     std::string const itens[], 
00291                     int const numero_de_itens);
00292 
00301         MenuSimples(std::string const& titulo, 
00302                     std::string const& itens);
00303 
00305 
00307 
00308 
00316         virtual int opcaoActual() const;
00317 
00319 
00321 
00322 
00328         virtual void interage();
00329 
00331 
00332     private:
00333         std::vector<std::string> itens;
00334         int numero_de_itens;
00335         std::string::size_type comprimento_maximo_dos_itens;
00336         Posicao posicao;
00337         Dimensao dimensao;
00338         int opcao_corrente;
00339 
00340         // Calcula dimensão do menu:
00341         void calculaDimensao();
00342 
00343         // Calcula posicao do menu:
00344         void calculaPosicao();
00345 
00346         // Desenha o item com o número dado:
00347         void desenhaItem(int numero_do_item) const;
00348 
00349         // Desenha o menu completo:
00350         void desenha() const;
00351 
00361         bool cumpreInvariante() const;
00362     };
00363 
00369     class MenuDeCores : public MenuSimples {
00370     public:
00372 
00373 
00379         explicit MenuDeCores(std::string const& titulo);
00380 
00382     };
00383 
00389     class MenuDeSimOuNao : private MenuSimples {
00390     public:
00392 
00393 
00399         explicit MenuDeSimOuNao(std::string const& titulo);
00400 
00402 
00404 
00405 
00413         virtual int opcaoActual() const;
00414 
00416 
00417         using MenuSimples::interage;
00418     };
00419 
00428     class Aviso {
00429     public:
00431 
00432 
00436         explicit Aviso(std::string const& mensagem);
00437 
00441         virtual ~Aviso();
00442 
00444 
00446 
00447 
00452         virtual void interage();
00453 
00455 
00456     private:
00457         MenuSimples menu;
00458 
00464         bool cumpreInvariante() const;
00465     };
00466 
00484     class CaixaDeTexto : protected ApendiceComCor {
00485     public:
00487 
00488 
00499         explicit CaixaDeTexto(std::string const& titulo, 
00500                               std::string const& texto_inicial = "",
00501                               std::string const& caracteres_admissiveis = "",
00502                               bool deve_impedir_caixa_vazia = false,
00503                               std::string::size_type espacos = 0);
00504 
00508         virtual ~CaixaDeTexto();
00509 
00511 
00513 
00514 
00520         virtual std::string const& textoActual() const;
00521 
00527         std::string titulo() const;
00528 
00530 
00532 
00533 
00538         virtual void interage();
00539 
00541 
00542     private:
00543         std::string titulo_;
00544         std::string::size_type numero_de_espacos_visiveis;
00545         std::string texto_corrente;
00546         std::string caracteres_admissiveis;
00547         std::string::size_type inicio_da_parte_visivel_do_texto;
00548         std::string::size_type posicao_do_cursor_nos_espacos_visiveis;
00549         Dimensao dimensao;
00550         Posicao origem;
00551         bool impede_caixa_vazia;
00552 
00553         // Desenha a caixa de texto:
00554         void desenha() const;
00555 
00556         // Calcula posicao da caixa de texto:
00557         void calculaPosicao();
00558 
00568         bool cumpreInvariante() const;
00569     };
00570 }
00571 
00572 #include <Slang++/menu_impl.H>
00573 
00574 #endif // SLANG_MENU_H

Gerado em Tue Dec 3 15:19:35 2002 para Pacotes por doxygen1.3-rc1