…and also makes calculations!
In recent weeks, I worked primarily with the communication between Cantor and Scilab, via the backend that I am developing. The task was very interesting because in the project, the technology chosen for implementation, was changed.
Before, I had proposed to use the API call_scilab, which makes the communication between the C/C++ and Scilab. But, studying the code of Cantor, I realized that other backends uses KProcess class (or QProcess), which allows Qt code to initialize a thread of other software and make communication with him via the standard streams stdout, stderr and stdin.
However, Scilab originally did not use these streams. So, talking to my mentor Ledru, we decided to implement this functionality.
After a few days and further studies, could provide support to these outputs in Scilab! And, voilá, Scilab says “Hello Cantor!” via backend! Click images to enlarge:
The backend is actually functional, although, of course, missing a few details. Now we have many screenshots.
Backend for Cantor Scilab making calculations:
Add variables, uses pre-defined functions and allows various calculations in the same workspace:
Works with multiple workspaces simultaneously:
Emits error messages in the workspace:
That’s it! Well, let’s now a great resume with quick information about this project:
- Management charting. Nowadays, the backend generates the chart of Scilab in another window. This will add the possibility of generating the chart in the workspace of the Cantor;
- Syntax highlighting;
- Auto-complete of the native Scilab functions;
- Working the character encoding of the output;
- Manage large outputs. When Scilab is a calculation and will print stuff on screen, the environment shows only a portion of the output and asks if the user wants to see more. In the backend it does not work, because when the first part of the output is shown, it is impossible to send another entry to Scilab. Below, in the image:
I can test this backend?
The backend code is in the branch scilab-backend Cantor repository, and performs all the functions described here. However, it needs the Scilab repository version to work, because I had to implement support for streams standards – ie, you must download the Scilab code and compile it. Another time, I’ll write a post with some tips on compiling Scilab.
For those who do not want to venture into the process of compiling Scilab, the way is to wait for the next version of Scilab to be launched in September. Just as it does in Scilab backend for Cantor function.
So that’s friends, who have to read the text here and stay tuned for more news. And do not forget to comment here about what you’re thinking of this project.