With the end of Google Summer of Code approaching and the score accessibility system in place, I’ve started fixing glitches and bugs and making everything work properly so that they can be integrated in the main branch.
1. Next element comand
I finnished this task some time ago, but I didn’t made a PR for it back then, some now went over it and fixed the inconsitencies that were generated by the changes in the main branch, I fixed some codying style issues and I’ve made the PR.
2. Score accessibility
Here things falled in place very nicely. The design that I had changed a lot and with Marc Sabatella’s and Nicolas Froment’s (lasconic) help I finally got it to a stage where it is very easy to maintain.
First of all there was a major change in the workflow of the system. The score doesn’t announce anymore that the selection has changed. Instead, at the end of every action (in the MuseScore::endCmd method), ScoreAccessibility::updateAccessibilityInfo is called the ScoreAccessibility class knows to look in the current selection and extract any information it needs.
Also there are two new methods. Along with Element::accessibleInfo there is Element::screenreaderInfo and Element::accessibilityExtraInfo. The first one returns the string that is placed in the status bar. The second and last one are speacially created for the screen-reader. Element::screenreaderInfo returns by default Element::accessibbleInfo, but can be overriden in case the screen-reader doesn’t know any symbol from that string (see bug fix section*) and Element::accessibleExtraInfo returns a string that is appended by the ScoreAccessibility class to the Element::screenreaderInfo and bar/beat info and this more detailed string is given to the screen-reader.
3. Bug fix
– Tempo text. Here the status bar was showing private information about how the symbols are stored and now it shows and exact text represantation of that is in the score
– *Note pitch, Ambitus pitch. This is one example why I created a virtual method that returns by default Element::accessibleInfo. For notes the pitch was for example ‘C#3’, but the screen-reader was telling only ‘C3’. In this case I overriden the screenreaderInfo method so it creates the exact same string as Note::accessibleInfo, just instead of ‘C#3’ it returns ‘C sharp 3’ and instead of ‘Cb3’ it says ‘C flat 3’.
– Concert pitch. The Note::accessibleInfo and Ambitus::accessibleInfo didn’t take into account the concert pitch
– There is one curios bug that for which I did a temporary fix. If MuseScore starts maximized, the screen-reader doesn’t receive, or ignores all QAccessible::updateAccessibility calls until the main windows is minimez and restored. For this I made so that if any screen-reader is detected, MuseScore is not started maximized.
4. Extra info
This info is returned by Element::extraInfo as I said before. For this part neither me, or Marc were very sure how things would be better, so Marc let me decide what should go where so things work nicely with next element and we can change them later acording to the user feedback.
Next week, GSoC ends so this week will be all about fixing bugs, integration, resolving conflits, PRs and making sure everything works smoothly. 🙂
See you next week!