Ed-sharp bug report

  • From: "Sina Bahram" <sbahram@xxxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Sun, 5 Dec 2010 16:41:42 -0500

Jamal,

I installed ed-sharp, latest version, today, and I ran into the following 
issues within the first few minutes of use. I just wanted
to report them in hopes of making this better for other users.

#1: installer doesn't ask about shortcuts

The installer didn't let me choose, like most do, whether I want an icon on my 
desktop. Can this be added?

It also concerned me about whether it was putting something in my quick launch. 
I hope it's not, as I always uncheck this option
from every installer I come across, but it would be nice to have that standard 
installer screen, if possible.

I simply deleted the icon, after I installed the program, but it would be nice 
for it not to get created in the first place.

#2: control+alt+e keystroke doesn't work, and in fact isn't assigned.

So I was told that control+alt+E launches ed-sharp by the installer, but when I 
pressed it after the install was done, nothing
happened. I tried it several times, and then I actually investigated the 
"launch ed-sharp" icon in the start-menu, and found that
the launch keystroke field was empty; thus, that made sense why it didn't work. 
After I manually added control+alt+e to that field,
it of course started working.

#3: the elevate command always updates

When in ed-sharp, I pressed f11 just to verify I was at the latest version, but 
apparently I am not, or the elevate command is
broken because it said comparing to server, and then it offered me a download 
of the exact version I just installed. In other words,
it never bothered telling me that the version on my computer and the server are 
the same, and it also makes the user think that they
aren't, since it offers a download.

I would suggest maybe changing the button or message to reinstall or something 
like that, if the versions are identical, so that the
user doesn't think they are at an older version?

#4: delay in file menus when using jaws

I installed the jaws scripts, as I had no reason not to, using the last page of 
the installer, and they compiled correctly; however,
when in ed-sharp, the menu bar is a little laggy. What I mean by this is that 
if I hit alt, and then arrow through file, edit,
delete, navigate, etc, etc ... It's a little slow. I'm guessing that this is 
possibly because of the JFWAPI being used or something
like that; however, it's kind of irritating, especially if you have your jaws 
set to decently fast; for example, I listen to
eloquence at 80% speed, as defined by the jaws verbosity box, and there's about 
an extra 300 to 600 millisecond delay, as if jaws is
being instructed to speak, as opposed to doing it itself. My question would be, 
A. can this be fixed/sped up? And B. if it's just a
file menu, why is the JFWAPI being used? That it of course assumes that it even 
is being used, and the delay isn't caused by
something else of course.

Note, this delay is especially noticeable when hitting keystrokes like alt+f or 
alt+e to bring up menus. Almost to the point where
you think you hit the keystroke wrong or something, and then you realize that 
the menu is coming up, but just slowly.

#5: alt+tabbing to ed-sharp doesn't announce the title

When you alt+tab to almost any other application, jaws reads the title of the 
window for you, letting you know two things. It let's
you know that the alt+tab successfully completed and that focus is on that 
window, and by announcing the window title, it gives you
whatever information the application developer wishes to convey in their title 
bar. 

This doesn't happen with ed-sharp. When I alt+tab to it, I get silence ... Jaws 
doesn't make a peep. This is a bit jarring.

#6: in the file menu, several characters map to different choices:

In the file menu, I can hit o to open, open in other format, or open again.

Unfortunately, o just activates open, which is the correct behavior according 
to the underlying technology being used for the file
menu. Could the other two options be assigned different menu accelerators? 
Their menu shortcuts are of course unique, but their
accelerators are the same.

This is true in other places too, but even in the file menu, you can see it 
with set favorite and save both being mapped to s.

Note: what I've seen adopted as official policy by some UI developers is that 
you start with the first letter, then move your way
through the word for subsequent accelerators. Some folks go further and  state 
that vowels are excluded from this, although I
personally disagree with that approach and think all characters are fair game; 
for example, o for open makes perfect sense, although
p for "open again" doesn't because p should map to print, so you have an 
exclusion tree whereby the first letter of every menu item
is put into a set, which by definition is a unique list, and then this set is 
used as an exclusion list as you step through the
characters of the duplicate menu item.

One side note, another popular approach, of which I do tend to be a fan of, is 
to use the first letter of subsequent words, before
going back for second and third letters of the original word. E.G. "save as" 
maps to 'a'.

The algorithm for this is rather straight forward, with one huge caveat 
(discussed below), if you think about it, and goes like
this.

I have the following six menu items.

New
Save
Save as
Open
Open recent
Exit

First I take the six characters and put them into a list, which is technically 
called a bag:

bag(n, s, s, o, o, e)

And then I turn that bag into a set, like this:

set = unique(bag)

So I get:

set(n, s, o, e)

And then I have a set of characters I've used as accelerators, which starts out 
empty:

accelerators()

Now, I add characters to that list, for each menu item, being careful to 
disallow duplicates, which closure property I get for free
as a result of using a set instead of a bag, like so:

New gives us n

So we have:

accelerators(n)

Open gives us o

So we have

accelerators(n, o)

Open again gives us o, but wait, o already exists in accellerators, so we go to 
the first character of the next word which gives us
an 'a':
// see the cavviot section for why 'a' is a bad choice
// the correct choice here is 'g' because 'g' comes after 'a' in the word 
"again"

accelerators(n, o, g)

Then we get s for save, and so on

accelerators(n, o, g, s)

Then "save as" gives us 'a'

accelerators(n, o, g, s, a)

And then, finally, exit gives us 'e'
// again, see the cavviot section for why 'e' is a bad choice
// going with x instead

accelerators(n, o, g, s, a, x)

And of course accellerators == unique(accellerators); thus proving it's in fact 
a set, and not a bag.

*** Huge Haunking Caveat Section: ***

Now, the reason that this algorithm unfortunately can't be programmed in, and 
has to really be done by hand, or at least whose
output needs to be revised by hand is that there are idioms users have come to 
expect. As is the case with all things in computer
science, humans get in the way of elegant algorithms, almost always.

So, for example, we assigned 'a' to save again, but this really isn't what we 
want. We really want to assign it 'g', because users
have come to expect that 'a' is always save as in a file menu, just like how s 
is save, and how o is open.

Thus, if one is prone to think about things in  an algorithmic point of view, 
just imagine a 2-ply deep file menu priority tree
where the semantics of these common idioms are stored; such as, under the file 
node: 'a' maps to "save as", 'o' maps to "open", and
so on. Then use the same algorithm as above, but use the idiom tree as a higher 
priority exclusion list than the accellerators set,
indexing into the idiom tree with the menu item name, of course.

To be fair, the above is more of a heuristic than an algorithm, but I do find 
that it works super well, and takes all the guess work
out of picking accelerators in menus.

#7: spell check issues

When I hit f7 for spell check, I get some rather odd behavior. It initializes 
Microsoft word, GUI and all, in the background. I
understand why it does this, because, why reimplement/reinvent spell check, 
when Microsoft word exists right there on the user's
machine; however, can you just use word as a com object without invoking the 
UI, just like that code snippet I sent out a really
long time ago about how to use Visual Studio 2005 without invoking the UI! This 
brings up a further question of whether the spell
check functionality is able to be used via com, without actually invoking the 
main MSWord object at all. Is that possible?

Moving on. I perform a spell check, and then I'm never told that spell check is 
over. I don't even really know I'm back in my
document in ed-sharp, probably because of the earlier bug where the title isn't 
read out, but what's even more frustrating is that
spell-check didn't clean up after itself, and I have this empty Microsoft word 
document in the background.

Also, sometimes, although I can't replicate this particular issue on demand, so 
sorry about that, but sometimes, it focuses said
empty Microsoft word document, instead of ed-sharp, after the spell-check is 
complete.

#8: undo doesn't announce selection

Would it be possible for undo to announce if it's undone action results in 
selected text?

For example, write a sentence, and then highlight that sentence and hit the 
delete key. Now hit control+z for undo. It would be nice
if ed-sharp told you that the sentence that was brought back from the great bit 
bucket in the sky was highlighted, simply by saying
the word selected before reading the sentence, as it does now.

There are some other things as well, but the number 8 is a nice binary number, 
so I wanted to stop there.

Thanks much, and happy hacking.

Take care,
Sina

__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

Other related posts: