It used to act on the active relation, that is, the one being displayed
in the central table, that is selected with a double click.
This change makes it act on the relation directly selected instead.
It should be more intuitive.
A string that contained escape symbols was not correctly escaped
when generating the Python code for the selection.
This could cause selection operations to fail to compile.
When scanning for the matching parenthesis, string literals
were not taken into account, which would inevitably lead to
errors if one wanted to do a selection on a string containing
a parenthesis.
Now it uses a state-machine to skip the ones that are located
inside literals.
It was a bit buggy and was not blurring all the widgets, or
not reverting the blur properly. Probably best to just show a
label instead.
Still, the proper solution would probably be to do the processing
in a separate thread.
Before the processing of a query starts, it will blur the UI.
This gives feedback to the user that something is happening, and is
simple to implement because I am too lazy to move the processing in
a separate thread.
Outer joins add the placeholder '---' that is used as some sort of NULL
value.
However select operations on such relations would always fail, because
relations are supposed to only contain values of class rstring, and
the placeholder was added as a regular string.
As a consequence, automatic casting would always fail, and the select
would always raise an exception.
Added a new test case with this specific case in mind.
The symbols previously used were a Canadian script, and were looking
good enough, but they might not be installed in every machine.
Besides, all this is to workaround a Qt5 bug that prevents from
rendering those symbols at times.