…e também faz cálculos!
Nestas últimas semanas, trabalhei basicamente com a comunicação entre o Cantor e o Scilab, via o backend que estou desenvolvendo. A tarefa foi bem interessante pois houve mudanças no projeto, na tecnologia escolhida para a implementação.
Antes eu havia proposto o uso da API call_scilab, que faz a comunicação entre código C/C++ com o Scilab. Mas, estudando o código do Cantor, percebi que os demais backends utilizam a classe KProcess (ou QProcess), que permite que código em Qt inicialize uma thread de outro software e faça a comunicação com ele via os streams padrões stdout, stderr e stdin.
Entretanto, o Scilab originalmente não usava esses streams. Então, conversando com meu mentor Ledru, resolvemos implementar essa funcionalidade.
Após alguns dias e mais estudos, consegui prover o suporte a estas saídas no Scilab! E, voilá, Scilab diz “Hello Cantor!” via backend! Clique nas imagens para ampliar:
O backend está de fato funcional, apesar de, claro, faltarem alguns detalhes. Agora teremos muitas screenshots. 🙂
Backend do Cantor para o Scilab faz cálculos:
Adiciona variáveis, usa funções pré-definidas e permite vários cálculos em um mesmo workspace:
Trabalha com vários workspaces simultaneamente:
Emite as mensagens de erro no workspace:
É isso! Bem, vamos agora a um resumão com informações rápidas sobre este projeto:
O que falta?
- Gerenciamento de criação de gráficos. Atualmente, o backend gera o gráfico do Scilab em outra janela. Será adicionada a possibilidade de geração do gráfico dentro do workspace do Cantor;
- Destaque de sintaxe;
- Alto-complete de funções nativas do Scilab;
- Trabalhar a codificação dos caracteres da saída;
- Gerenciar saídas grandes. Quando Scilab faz um cálculo e vai imprimir muitas informações na tela, o ambiente mostra apenas uma parte da saída e pergunta se o usuário quer ver mais. No backend isto não funciona, pois quando a primeira parte da saída é mostrada, não há mais como enviar outra entrada para o Scilab. Veja abaixo, na imagem:
É possível testar este backend?
O código do backend que está no branch scilab-backend do repositório do Cantor realiza todas as funções aqui descritas. Entretanto, ela precisa da nova versão do Scilab para funcionar, pois tive que implementar o suporte aos streams padrões – ou seja, é necessário baixar o código do Scilab e compilá-lo. Em outro momento, irei escrever um post com algumas dicas sobre a compilação do Scilab.
Para quem não quer se aventurar no processo de compilação do Scilab, o jeito é esperar a próxima versão do Scilab que deve ser lançada em setembro. Apenas a partir dela é que o backend para Scilab no Cantor funcionará.
Então é isso amigos, obrigados a aqueles que leram o texto até aqui e fiquem atentos para maiores novidades. E não deixe de fazer um comentário aqui sobre o que você está achando desse projeto. 😉
Aí Filipe, muito legal
Referente aos gráficos, não sei como tu pensa em fazem ,as mas quem sabe com imagens (png por exemplo)
Mas realmente muito lega
Opa @Wagner, valeu cara!
A ideia é essa mesmo, vou fazer com que o Scilab crie arquivos .png ou outra extensão e, em seguida, carregue no workspace. Já fiz o teste da criação e por enquanto tudo ok.
Grande abraço parceiro!