On 5/19/2014 5:09 AM, Andrei Tuicu wrote:
Regarding a good primer, unfortunately there is no such thing... First
of all, the accessibility API does not address basic issues like
tabbing, it provides a way to generate screen-reader feedback for user
defined custom widgets. There is a general description about the class
ierarchi here[0] and a good example here[1], but for the moment this
API is not usefull at all.
Thanks, that looks like a good start. Even if things don't actually
work, it should at least get me more familiar with the concepts and how
things are maybe *supposed* to work.
It might become usefull when I try to get screen-reader feedback for
score elements, although at the moment I think that I can do that
without the API, but I won't know for sure until I start working.
The only thing I think you should need for that is the ability to write
text to the status line and have that read aloud. I recall there was a
function to call if text is updated (I tried to implement this at one
point) but I couldn't get it to work.
For example the QToolButton:
The first thing that I saw when searching about tabbing was the
setTabOrder(QWidget* a, QWidget* b) function from QWidget, and
I've spent some hours in trying to use it, but with no luck. Then
I've read somewhere unrelated about the focus and focusProxy
properties of QWidget and I've tried combinations of those with
setTabOrder. Finally, I've found the focusPolicy property which is
for some subclasses of QWidget is set for NoFocus(this is the case
for QToolButton), by default and for other is set to other values.
There are only to values of this property that alow tabbing:
TabFocus and StrongFocus(which means that widget can gain focus by
either tabbing or my mouse click). If the focus policy doesn't
have one of those 2 values then widget is not included in the
tabbing chain, so the setTabOrder function doesn't have any effect.
This is really really good info - exactly the sort of thing I hope to
see in your blog!
Although it is a bit hard, I do have to say that is very rewarding
to know that not only I'm working on adding support for
accessibility in MuseScore, but also with these "how to"s I will
help others how are trying to provide accessibility support. :)
Yes, I feel the same way.
Although I'm not yet sure what setAutoRaise does, I've tryied
using it and doesn't do what I need.
Too bad. It sure *seems* like the right answer. Have you tried this in
your simple test case (the application you created that shows Alt works
to trigger menu)?
Yes, I was talking about a special state, but for when the ALT
button is pressed. You can see this for example in Sibelius, or
for example in Microsoft Word 2010 (and later). But after talking
with Jaffar, I understand that this is a somewhat new way of
handling the keyboard navigation and he would preffer if we don't
do it this way
Yes, I saw this too. I had never heard of this before; I'm accustomed
to Alt putting focus on the first menu only. I have no opinion on
whether we should support the new or old behavior.
This might seem unrelated, but I do have some ideas about
highlighting. Can you please tell me where is the function that is
called when a score element (for example note) is selected?
There are two kind of different notions of selection in MuseScore - and
another GSoC student (bartlomiej_lewandowski) is currently working on
revamping this. So you should probably keep in touch with him.
But for now, the two kinds of selection are the range, which works more
or less by having a start segment, end segment, and staff range
("segment" is a very basic concept in MuseScore - everything that
happens at a particular time position), and the single or multi-select,
which works by having a list of specific elements. The former is
indicated with a blue rectangle; the latter by actually making the
elements themselves blue. I am guessing it's the latter you mean. As
with many things in MuseScore, it appears to be a bit indirect. From
what I can tell, the main function is Element::setSelected(), which is
virtual and can thus be overridden for other element types. But these
functions mostly just set the "_selected" flag. The actual highlighting
is done separately, for example in Element::curColor(), which is called
by the various draw() methods for the different element types.
Marc
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Mscore-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mscore-developer