ENVIO DE DADOS PARA O PROGRAMA
A Navi possui uma forma de envio de informações da página usada como GUI para o programa em C/C++. Crie um novo arquivo HTML, com o código abaixo com o nome "paginaDados.htm".
<html>
<head>
<script type="text/javascript" src="Navi.js"></script>
<script type="text/javascript">
window.addEvent('domready', function(){
$('myButton').addEvent('click', function(){
$ND('buttonClicked', {secretMessage: "hello!", age: 19}).send();
});
});
</script>
</head>
<body>
<input type="button" id="myButton" value="Click Me!" />
</body>
</html>
Uma nova função utilizada é "addEvent()" da Mootools onde define-se que tipo de evento irá ocorrer, para a execução de determinado ação. No exemplo acima o evento é o clique do mouse. Visite o link para mais informações sobre ela.
Quando o botão de id "myButton" é clicado então a linha abaixo é executada.
$ND('buttonClicked', {secretMessage: "hello!", age: 19}).send();
A função "ND()" determina os dados que serão enviados. O primeiro
parâmetro é o nome que será atribuido para essas informações. O segundo é uma
sequência do tipo chave/valor, que serão os dados propriamente ditos trabalhados
no programa. No exemplo foram criados dois dados, um de nome "secretMessage" com
valor "hello!" e outro de nome "age" com valor 19. Com isso eles são enviados para
o programa com a função "send()".
buttonNavi = naviMgr->createNavi("buttonNavi", "local://paginaDados.html",
NaviPosition(TopCenter), 500, 500);
buttonNavi->bind("buttonClicked", NaviDelegate(this, &AplicationListener::BotaoClick));
Adicione o trecho acima no construtor da classe AplicationListener. Ele cria uma nova janela da Navi com a página criada anteriormente. Observe que desta vez a janela após criada foi atribuida para uma variável que é do tipo "Navi", para que a mesma possa ser acessada sem a necessidade da função "getNavi()".
O método "bind" faz a ligação entre as informações vindas da interface e a função que irá trabalha-las. No exemplo as informações de nome "buttonClicked" serão trabalhadas pelo método "BotaoClick()".
void BotaoClick(const NaviData &naviData);
O cabeçalho do método deve ser declarado no arquivo "AplicationListener.h".
void AplicationListener::BotaoClick(const NaviData &naviData){
std::string secretMessage = naviData["secretMessage"].str();
std::string age = naviData["age"].str();
Ogre::LogManager::getSingleton().logMessage("Mensagem da página: " + secretMessage +
" " + age);
}
Em "BotaoClick()" obtemos o conteúdo das informações enviadas pela GUI usando a variável naviData que é o parâmetro da função. Basta acessar o item no através do seu nome como no código acima. Então eles são escritos no arquivo de log da Ogre.
Italo Mendes
italo.ribeiro@gmail.com
