понедельник, 31 августа 2020 г.

Cantor - GSoC2020 final post

Hello everyone,

this is the sixth and the final post about the progress in my GSoC project. I want to present an overview of what was done in the last couple of days and to also provde the overall summary of the project.

The last phase of my project was about but fixing. There were several bugs reported earlier already and I selected seven bug to be fixed as part of my GSoC project. Those bugs are the most important ones and addressing those issues perfectly fits into the overall idea of my project to improve the usability of Cantor. Out of those 7 bugs, four were resolved. More on this below.

The first bug was about the tabulation behaviour. The tabulation in Cantor worked always as the auto-completion, also even if there was no need for the auto-completion, for example in the beginnig of the line.  Now it works better. If the auto-completion logic says there are completion results, the tabulation works as the completion but if there're no completion results, the tabulation works as expected and the cursor is moved forward. Also, backward tabulation with Shift+Tab has been added and the multi-line tabulation is now supported, too.


The second bug was a problem with portability of Cantor's project files that have Image Entries. The image entries didn't store the original image in the project file but only their paths. So, if the project file was copied to another computer or the image file have been deleted, then the user didn't get any images in the worksheet after project opening. Now the image entries store the actual image as part of the project.

The third bug was about a wrong highlighting in R for functions and constants. Cantor didn't distinguish well between the constants, for example "pi", and functions, for example "abs". I improved the entire highlighting logic for R in Cantor and such problems have gone now.


The fourth and the last bug that was resolved recently was actually a feature requirement for variable manager in Cantor. For big variables, Cantor showed in the variable manager the text "big variable" which is not really informative. Now, in stead of this text the actual size of the variable in Bytes is shown for languages wehre it's possible to extract this information (Octave, Python, Julia).

That's was everything related to the bug fixing that was done in the final part of my GSoC project. Looking back at what was achieved this summer, all planned new features were implemented and the most relevant bugs were fixed. The project has reached its original goals. Even though the actual GSoC is considered to be done now, also because of the time frame, I continue invastigating now how to adress the still unresolved bugs. More on this maybe in another blog post later.



четверг, 20 августа 2020 г.

Cantor - Hierarchy Entry and Markdown Image drag&drop

Hello everyone,

this is the fifth post about the progress in my GSoC project and I want to present a new major feature that help to structure the content of the worksheet as well as another minor feature improving the handling and the usability of the insertion of images in the markdown worksheet entries.

When working with worksheets holding a lot of information it is sometimes required to be able to structure the content. This structuring is possible now with the help of a new entry type - Hierarchy Entry. With this entry a hierarchical representation of the content can be achieved which allows structures like "Chapter -> Section -> Sub-Section", etc.

The Hierarchy entry type has three important peculiarities. First, every hierarchy entry can hold entries of other types (command entry, image entry, etc.), which are considered as sub-entries (or child-entries) of the parent entry in the hierarchy. The screenshot below shows an example project with multiple text and command entries defined on the lowest level of the hierarchy:

Second, for each level of the hierarchy the properties of the used font (family, size, italic or bold) can be defined separately. The pre-defined properties (default system font is used on default) can be modified by the user. This is done in the new page in the setting dialog.

And this is an example for how a worksheet can look with the different font settings for the different levels in the hierarchy:

Third, the hierarchy entry together with all its children can be hidden as shown on the next screenshots:

Note the collapsed sections 1.1 and 1.1.1 here. This is achieved similarly to the collapsing of the results in a command entry.

To simplify the navigation in big woskheets I implemented the "Table Of Contents" panel. This new panel shows the hierarchy of the worksheet and allows to scroll to the different parts of the worksheet by clicking on the the corresponding entries of the hierarchy in the table of contents:



Now about the minor feature related to the Markdown entry. In the past it was possible to add an image to the markdown entry via the context menu only. Now it is also possible to direclty paste from the clipboard and to add an image via the drag&drop mechanism. The example for how this is done via drag&drop is shown on the next screenshot:


This were last new features that were planned to be implemented as part of my GSoC project. Thus, in the remaining days in August and according to the project schedule I'll concentrate on the outstanding bugs in Cantor and I'll talk about the bug fixes in the next post.

понедельник, 20 июля 2020 г.

Cantor - File Browser Panel

Hello everyone,

this is the fourth post about the progress in my GSoC project and I want to present some user experience improvements related to the handling of panels in Cantor and to present a new panel "File Browser" that I implemented recently.

The status of Cantor's panels was not saved when the user closed the application. Potential rearangements and size changes done on panels were gone and the user had to do the changes again upon the next start. Very bad UX, of course. Now, the state is saved and even more, the state is saved for every backend in Cantor. So, if you have a Python session in Cantor, open some panels and arrange them at your will, close and reopen Cantor with a Python session again - the previous state of the panels appears on start.

The second change is about a new panel - the File Browser Panel:



This panel allows the user to navigate through tje file system and to open files. Files with the file type supported by Cantor (Cantor's native formant and Jupyter's notebooks) will be opened as a new worksheet in Cantor. Files with other types are open in the system's default application assosiated with that type.

In the next post I plan to show a new feature that will help to better structure the worksheet and to define a hierarchical structure of worksheet entries that can be operated on.

вторник, 7 июля 2020 г.

Cantor - Plots handling improvments

Hello everyone,

this is the third post about the progress in my GSoC project and I want to present new changes in the handling of the external packages in Cantor.
The biggest changes done recently happened for Python. We now properly support integrated plots created with matplotlib.
Cantor intercepts the creation of plots and embedds the result into its worksheet.
This also works if multiple plots are created in one step the order of plots is preserved.
Also, text results between plots are also supported.

Besides matplotlib, we also properly handle Plot.ly - another popular graphing library for Python and R. This package has some requirements
that have to be fulfilled first. The user is notified about these requirements in case they are not fulfilled.

Similar implementation was also done for Julia and Octave, but to a smaller extent.
Though many preparational changes were done in the code for this, the only visible result for the user
are at the moment the new messages about unfulfited requirements of graphing packages.
Especially for Julia this is imprortannt now since for graphing the package GR was hard-coded in the past and there was no notification to the user
if this package was not installed and it was not immediately clear to the user why the creation of plots fails.
With this improvements Cantor is doing the next steps to become more user friendly.

There is another important change - the settings for graphing packages become dynamic.
The user can now change them on the fly without having to restart the session.


Also, the plot menu was extended. Julia and Python now can produce code for multiple packages - the prefered package can be choosen in settings.


In the next post I plan to show how the usability of Cantor panels is going to be improved.

суббота, 20 июня 2020 г.

Cantor - Zoom widget and tooltips

Hello everyone,

this is the second post about the progress in my GSoC project and I want to present the new zoom widget feature and some useful tooltip changes.

As the name says, the zoom widget feature brings a zoom widget in Cantor. This widget is more useful than the previous workflow with "increase/decrease zoom" actions for them, if you for example want to directly zoom to 200%:


It also important to notice that there are people who don't zoom often and dislike one more wide widget in main toolbar. As usual in KDE applications, they can just hide the widget via the toolbar settings dialog:



The second mentioned change is simple, but quite useful. As you can see in the following screenshot, the description text exposed to the user in Cantor's settings dialog is a balance between "short and useless text" and "detailed explanation which don't fit into the settings window". This was the situation before. Now, the detailed explanation pops up as a tooltip and the main setting text is a short text, which better fits into the dialog:



In the next post I plan to show another important and somewhat bigger feature which about handling of external graphical packages inside of Cantor.

понедельник, 8 июня 2020 г.

Cantor new features

Hello everyone,

this is the first post about the progress in my GSoC project and I want to present three new features in Cantor implemented recently.

The first feature is about new additional actions for Command Entries which can be applied worksheet-wide:


The second feature is simple, but quite usefull. It's about having the possibility to exclude certaint entries from the execution. This is usefull for example, if you want to test performance of the code with different realization of certain part of it - you simply activate/deactivate quickly worksheet entries and process the worksheet again.

The third feature is a new type of Entries - Horizontal Line Entry. As the name says, this is a cusstomizable horizontal line that helps to structure and to visualy separate different parts of worksheet.
And this is an example how such a line looks in a real document.

In the next post I plan to show a zoom widget and some new tooltips examples.

вторник, 2 июня 2020 г.

Cantor during GSoC 2020

  Hello everyone! I'm participating in Google Summer of Code 2020, I am working on KDE Cantor project. The GSoC project is mentored by Alexander Semke - one of the core developers of LabPlot and Cantor. At first, let me introduce you into Cantor and into my GSoC-project:

    Cantor is a KDE application providing a graphical interface to different open-source computer algebra systems and programming languages, like Octave, Maxima, Julia, Python etc. The main idea of this application is to provide one single, common and user-friendly interface for different systems instead of providing different GUIs for different systems. The details specific to the different languages are transparent to the end-user and are handled internally in the language specific parts of Cantor’s code.

    Though the code base of Cantor is already in quite good shape, there is still room for improvements with respect to the missing features, user experience and functional issues.

    Given the existence of similar open-source applications like wxMaxima, Jupyter, Octave GUI but also commercial like Mathematica, it is important to address all issues and to add missing features to become competitive with other applications or even be ahead of them.

    The idea of this project is not to implement one single and big "killer feature" but to address several smaller and bigger open and outstanding topics in Cantor.


  So, as you can see, the idea behind the project is an idea of "smothing the corners". The project also splitted into two section: feature section and bugfix section. And first, I will work on features.

  Since this project consists of many not so big development topics that I plan to finalize in timely manner, I hope to frequently post about the current progress and show you a lot of new cool stuf being added to Cantor in the next three months.

Cantor - GSoC2020 final post

Hello everyone, this is the sixth and the final post about the progress in my GSoC project. I want to present an overview of what was done i...