00001
00002
00003 inline Slang::ApendiceComCor::ApendiceComCor()
00004 : o_borda_(preto, branco),
00005 o_titulo_(vermelho, branco),
00006 o_itens_(preto, branco),
00007 o_corrente_(amarelo, azul) {
00008 }
00009
00010 inline Slang::Ecra::ObjectoCor const& Slang::ApendiceComCor::o_borda() const {
00011 return o_borda_;
00012 }
00013
00014 inline Slang::Ecra::ObjectoCor const& Slang::ApendiceComCor::o_titulo() const {
00015 return o_titulo_;
00016 }
00017
00018 inline Slang::Ecra::ObjectoCor const& Slang::ApendiceComCor::o_itens() const {
00019 return o_itens_;
00020 }
00021
00022 inline Slang::Ecra::ObjectoCor const& Slang::ApendiceComCor::o_corrente() const {
00023 return o_corrente_;
00024 }
00025
00026 inline Slang::Ecra::ObjectoCor& Slang::ApendiceComCor::o_borda() {
00027 return o_borda_;
00028 }
00029
00030 inline Slang::Ecra::ObjectoCor& Slang::ApendiceComCor::o_titulo() {
00031 return o_titulo_;
00032 }
00033
00034 inline Slang::Ecra::ObjectoCor& Slang::ApendiceComCor::o_itens() {
00035 return o_itens_;
00036 }
00037
00038 inline Slang::Ecra::ObjectoCor& Slang::ApendiceComCor::o_corrente() {
00039 return o_corrente_;
00040 }
00041
00042
00043
00044
00045 inline Slang::MenuComCor::MenuComCor(std::string const& titulo)
00046 : Menu(titulo) {
00047 }
00048
00049
00050
00051
00052 inline Slang::Menu::Menu(std::string const& titulo)
00053 : titulo_(titulo) {
00054 }
00055
00056 inline Slang::Menu::~Menu() {
00057 }
00058
00059 inline std::string Slang::Menu::titulo() const {
00060 return titulo_;
00061 }
00062
00063
00064
00065 inline Slang::MenuSimples::MenuSimples(std::string const& titulo,
00066 std::string const itens[],
00067 int numero_de_itens)
00068 : MenuComCor(titulo),
00069 itens(itens, itens + numero_de_itens),
00070 numero_de_itens(numero_de_itens),
00071 corrente(0) {
00072
00073 calculaDimensao();
00074 calculaPosicao();
00075 }
00076
00077 inline void Slang::MenuSimples::calculaPosicao() const {
00078 posicao.linha((ecra.dimensao().linhas() - dimensao.linhas()) / 2);
00079 posicao.coluna((ecra.dimensao().colunas() - dimensao.colunas()) / 2);
00080 }
00081
00082 inline void Slang::MenuSimples::desenhaItem(int i) const {
00083 ecra << (i == corrente ? o_corrente() : o_itens());
00084 ecra << cursor(posicao + Posicao(2 + i, 1))
00085 << largura(largura_maxima) << itens[i];
00086 if(i == corrente)
00087
00088 ecra << cursor(posicao + Posicao(2 + i, largura_maxima / 2));
00089 }
00090
00091
00092
00093
00094 inline Slang::MenuCor::MenuCor(string const& titulo)
00095 : MenuSimples(titulo, nomes_das_cores, numero_de_cores) {
00096 }
00097
00098
00099
00100 inline Slang::MenuSimNao::MenuSimNao(string const& titulo)
00101 : MenuSimples(titulo, "Sim\nNão") {
00102 }
00103
00104 inline int Slang::MenuSimNao::executa() {
00105 return !MenuSimples::executa();
00106 }
00107
00108
00109
00110
00111 inline Slang::Aviso::Aviso(string const& titulo)
00112 : menu(titulo, "Tá bem...") {
00113 }
00114
00115 inline Slang::Aviso::~Aviso() {
00116 }
00117
00118 inline void Slang::Aviso::executa() {
00119 menu.executa();
00120 }
00121
00122
00123
00124
00125 inline Slang::CaixaDeTexto::CaixaDeTexto(std::string const& titulo,
00126 std::string const& valor,
00127 std::string::size_type espacos_)
00128 : titulo_(titulo), espacos(max(espacos_,titulo.length())), valor(valor),
00129 inicio(valor.length() < espacos? 0 : valor.length() - espacos + 1),
00130 posicao(valor.length() - inicio),
00131 dimensao(4, espacos + 2) {
00132 calculaPosicao();
00133 }
00134
00135 inline Slang::CaixaDeTexto::~CaixaDeTexto() {
00136 }
00137
00138 inline std::string Slang::CaixaDeTexto::titulo() const {
00139 return titulo_;
00140 }
00141
00142 inline void Slang::CaixaDeTexto::calculaPosicao() const {
00143 origem.linha((ecra.dimensao().linhas() - dimensao.linhas()) / 2);
00144 origem.coluna((ecra.dimensao().colunas() - dimensao.colunas()) / 2);
00145 }
00146
00147