New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Combine separate NVDA Preferences dialogs into a dialog with several property pages #577
Comments
Comment 1 by jteh on 2010-02-27 10:01 |
Comment 2 by briang1 (in reply to comment 1) on 2010-09-02 18:18 Changes: |
Comment 3 by mdcurran on 2010-11-24 06:58 |
Comment 4 by heikofolkerts on 2013-07-17 18:49 I think that a combined Dialog is closer to other dialogs users have to handle and it can speedup configuration significantly. Instead of using tabs one could use a tree view like eclipse uses in its setting dialogs. If no one wants to handle this ticket in the near future I could try a fix or plugin what ever seems to be best. |
Comment 5 by heikofolkerts on 2013-07-21 18:23 When the user presses OK the container dialog will give every settingsDialog the chance to validate its data and display an error message if needed. After validation of all settings dialogs is complete all settingsdialogs are asked to save their data and expected to do so without errors (they validated OK) Finally the dialog closes and all containing windows are destroyed. This implementation has the following goals:
The new dialog could be added to the existing settings sub menu so users can decide wether they want a specific setting dialog or the whole settings in one. Hints and changes to this design are wellcome to make it good and successful. |
Comment 6 by jteh on 2013-07-21 23:09
|
Comment 7 by heikofolkerts on 2013-07-22 17:58 If we nedn't keep the old style of single setting dialogs we can think of new ways of organize the settings. Maybe the control panel in windows 7 can be a good template. Are there any setting dialogs in other application that load settings dynamically and we find them accessible enough? |
Comment 8 by heikofolkerts (in reply to comment 6) on 2013-07-30 17:57
That's right and KISS - Keep it simple stupid. Since the plugins should have a chance to register for a combined settings dialog they would have to provide a single settings dialog. So we really won't get rid of this aproach without changing many things.
But since the shortcuts exist they are helpful for those who change the settings frequently.
And this is in my opinion a reason to not implement the combined settings dialog. It would take much efford, propably breaks existing things and all this to speed up making a bunch of settings in a go. It would make life easier for a specific use case but not bring new functionality to NVDA. When I started working on this ticket I didn't know about this kind of problems in the background. The only solution I can think of that is possible with relative efford is a dialog with a lostbox for the sections, an edit button for the selected section which would open the allready existing single settings dialog. So Instead of reentering the settings submenu again one could select another item from the listbox and edit the corresponding settings. Would this be an aceptable solution for the original requester? |
Comment 9 by briang1 on 2013-07-31 06:37 If an alternative had been designed then, then the system would have grown around that format. With the ingrained use of shortcuts to certain dialogues, this has more or less shot the idea in the foot, so to speak as mentioned here. However it might still be a handy thing to have a list based selection so one can get to property sheets without going back through all the menus, or perhaps allow the system to just return to the previous menu for selection of another sheet rather than the closing of the sheet putting you back completely out of the menu system entirely. Of course the logic of what happens when you do the short cut key entry needs to be looked at, so storage of how one accessed the sheet needs to be preserved. Just a few thoughts. |
Comment 10 by heikofolkerts on 2013-12-02 19:21 |
Comment 11 by zahari_bgr on 2013-12-02 19:56 I don't know how much work it could need, but I'm sure of the benefits. |
Comment 12 by briang1 on 2013-12-03 08:22 In many screenreaders the basic settings are in a tab identified property sheet system while other add in and app settings are indicated by some form of display at the top of each sheet so one knows if its global, ie default or tied to an event/application which is going to be configured. |
Comment 13 by nvdakor on 2014-02-28 10:06 |
Comment 14 by briang1 on 2014-03-03 09:09 |
cc @jcsteh, @dkager, @josephsl Something like tab controls have also been discussed in #214 and #1885. Given the fact that the amount of options has been increased in the last few years, I think we'd best go for a tree view, which allows for categories and sub categories. I wouldn't go for something like Rapid Settings (i.e. also showing all options in a tree view) |
Hi, so in a way emulate JAWS Settings Center? This will require that we leave provisions to let add-ons add their own settings categories. Thanks.
From: Leonard de Ruijter [mailto:notifications@github.com]
Sent: Tuesday, June 13, 2017 12:53 PM
To: nvaccess/nvda <nvda@noreply.github.com>
Cc: Joseph Lee <joseph.lee22590@gmail.com>; Mention <mention@noreply.github.com>
Subject: Re: [nvaccess/nvda] Combine separate NVDA Preferences dialogs into a dialog with several property pages (#577)
cc @jcsteh <https://github.com/jcsteh> , @dkager <https://github.com/dkager> , @josephsl <https://github.com/josephsl>
Something like tab controls have also been discussed in #214 <#214> and #1885 <#1885> . Given the fact that the amount of options has been increased in the last few years, I think we'd best go for a tree view, which allows for categories and sub categories. I wouldn't go for something like Rapid Settings (i.e. also showing all options in a tree view)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#577 (comment)> , or mute the thread <https://github.com/notifications/unsubscribe-auth/AHgLkO3z-uHAFJbPEjH5ZRFyOUMvOUctks5sDuivgaJpZM4N5ACT> .
|
A tab control is definitely not going to work here. While a tree seems to be the logical choice, we should still consider a list or at least consider keeping nesting to a minimum. I'm concerned that nesting things might make things hard to find. For example, it might make sense to put Voice and Synthesizer under a category called Speech. However, while Document Formatting and Object Presentation are related, many users probably won't think to look in the Presentation category for Formatting settings.
As I understand it, JAWS puts all individual settings in the tree view, not just categories and subcategories. I could be wrong, though, as I haven't had much experience of the JAWS settings centre. Anyway, we don't want individual settings in the tree (if we do use a tree), only categories and/or subcategories. |
I agree here. Here are some thoughts about implementation: What to include?Personally, I think we shouldn't include everything in such a dialog which now can be find under the options menu (e.g. personally I prefer speech dictionaries, Punctuation/symbol pronunciation and Input gestures to be separate dialogs). The rationale for this is that these dialogs operate apart from NVDA's configuration manager How to implement?I'm thinking about the following rough path:
|
Since I and others have been crowding the braille settings dialog quite a bit I was also thinking about splitting that up. For example, Display, Translation, Cursor. Here an umbrella treeview node Braille could be handy, but not essential. You could also use names like Braille Display, Braille Translation, etc. Curiosity: the NVDA menu item is called Preferences, but then the dialogs talk about Settings. |
A few thoughts:
1. I think we're going to have to create all the panels when the settings dialog is opened. If that's true, init time might be a concern if one of the dialogs takes a while to initialise. The Synthesizer dialog is one possible example, since it has to load synth drivers. We may need to come up with some late init method for these cases which only gets run as the category is selected.
2. This would change the existing shortcuts used to open various settings categories from the NVDA menu where the existing shortcut isn't the first letter of the category. For example, you wouldn't be able to open Braille Settings with NVDA+n, p, r. This bothers me because this kind of thing becomes very ingrained for users who want maximum efficiency and changing it could set them back quite a bit. Some might argue that additional single keystroke bindings (like NVDA+control+g) is the solution, but this consumes a lot of keystrokes and available keystrokes are already somewhat limited. I guess we could modify the keyboard behaviour of the tree so that, for example, r jumps to Braille, but then that would be non-standard for a tree, which might confuse users.
3. It might be possible to modify the existing SettingsDialog class so that most existing subclasses just get integrated into the new system without changes. I wonder whether it's worth doing that. On one hand, it means less code change and even some add-ons might benefit. On the other hand, SettingsDialog, onOk, etc. aren't a good name in this case and there may be weird compatibility issues that aren't obvious because authors weren't forced to explicitly vet their code for the new system.
|
Agreed. The NVDA+n, p, g method to open General settings is very nice though. The same goes for keystrokes that change a single setting. But keystrokes to open specific settings dialogs feel a bit out of place to me. |
Good point, agreed here
Ah, that's what I forgot to mention. My initial thought was to just keep all the menu items in place, but to let them open the same settings dialog with the right panel selected in the list. So, for example, keep the nvda menu>options>braille settings option, but make it select the braille category in the new dialog.
Hmm, that's an interesting thought indeed. We should consider this for sure.
True, but I still think we should rename stuff like SettingsDialog to SettingsPanel, and than recreate SettingsDialog for backwards compatibility.
SettingsDialog, onOk can be kept for backwards compatibility and it can refer to something like SettingsPanel, onSave. As for your last point, that's probably much more difficult to check beforehand. |
@leonardder commented on 15 Jun 2017, 00:15 GMT+10:
That would work, but a) this is a pretty weird pattern for a GUI (a whole heap of options which end up opening the same dialog in different ways); and b) it does mean there are two paths in the GUI to get to the same thing, which creates redundancy and thus complicates the user experience. I wonder how weird it would be to have a tree with overridden keyboard behaviour? We could expose the keyboard shortcuts to accessibility using dynamic annotation, though I'm not sure how we'd do it visually; they need to be underlined somehow. |
@jcsteh wrote:
That's an interesting idea. That would be the first time we'd use dynamic annotation in NVDA"s code right, or have I missed something here? Quite offtopic, but is this also the kind of implementation you once mentioned to have in mind for lists with checkable items? @dkager wrote:
I belief it does An alternative would be to have a list of group names (vertical tabs) on the left and a pane with settings on the right. I don't quite follow this. Do you want a list kind approach (i.e. wx.ListCtrl, like Windows 10 settings) or real tab controls (i.e. task manager)? |
Yes. I guess real tabs are also possible, but lists are cool. :) |
While looking at this, I got an additional nut to crack. How should we set the values of the options in a category? For example, what to do when someone opens the settings dialog with the general category selected, he changes his speech symbol level and gets to the speech category afterwards. Should the symbol level match the level at dialog or at panel activation time? If the latter, we probably also want to save the settings in a panel when it is deactivated. Personally, I think we should just go for dialog activation time here. |
I started with an initial implementation in https://github.com/BabbageCom/nvda/tree/i577 . This is far from ready for a pull request.
|
@LeonarddeR I think it will be easier to provide feedback on feedback on your approach via a PR. Would you mind creating one? |
No problem at all, will do
|
We should ad a WIP label so people know it's in progress work.
…On Mon, Jun 19, 2017 at 3:01 AM, Leonard de Ruijter < ***@***.***> wrote:
No problem at all, will do
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#577 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AFGivTFJj1dEo7qAgZnxxwRPnjkUz3Amks5sFjjSgaJpZM4N5ACT>
.
--
Derek Riemer: Improving the world one byte at a time!
- University of Colorado Boulder Department of computer science, 4th
year undergraduate student.
- Accessibility enthusiast.
- Proud user of the NVDA screen reader.
- Open source enthusiast.
- Skier.
Personal website <http://derekriemer.com>
|
…r settings. This fixes nvaccess#577. The following is changed: 1. Added new classes: * MultiCategorySettingsDialog * NVDASettingsDialog * SettingsPanel 2. Changed several settings dialogs to be settings panels, and included them in the new NVDASettingsDialog 3. Added an apply button to the new dialog, and added the possibility to add these to other settings dialogs as well 4. Added control+tab and control+shift+tab keyboard commands to switch between the various settings categories 5. Added the possibility to easily override the orientation of the settings sizer in settings dialogs, since the settings sizer needs to be horizontal in a multi category dialog 6. Changed several doc strings and translator comments to reflect the new situation 7. Updated gui/__init__.py to reflect the new situation
…r settings. This fixes nvaccess#577. The following is changed: 1. Added new classes: * MultiCategorySettingsDialog * NVDASettingsDialog * SettingsPanel 2. Changed several settings dialogs to be settings panels, and included them in the new NVDASettingsDialog 3. Added an apply button to the new dialog, and added the possibility to add these to other settings dialogs as well 4. Added control+tab and control+shift+tab keyboard commands to switch between the various settings categories 5. Added the possibility to easily override the orientation of the settings sizer in settings dialogs, since the settings sizer needs to be horizontal in a multi category dialog 6. Changed several doc strings and translator comments to reflect the new situation 7. Updated gui/__init__.py to reflect the new situation
Hi, Returning to add-ons: Regarding add-on GUI's, I'll take a look at it for 2018.3 (once multi-category settings lands in master). The idea for add-ons is to add a new function in add-on handler that'll add settings panels for add-ons into a list, and this list will be consulted by NVDA Settings when opening the dialog. For add-ons that cannot integrate their GUI's into Settings panel, one way is to at least give them a chance to add "apply" button or create a portal (via a settings panel) to their own dialogs. Thanks. |
@josephsl commented on 18 Apr 2018, 11:16 CEST:
It would be enough to let that function call gui.settingsDialogs.NVDASettingsDialog.categoryClasses.append. Note that the multi category settings dialog will most likely not display the correct configuration profile in the title of the dialog when editing settings for an add-on panel. |
Reported by briang1 on 2010-02-26 18:17
In many windows programs with properties one can change, it is normal to have them linked by a tab control, though in fact once you focus on this its in fact a cursor control to move, but I'm sure you know what I mean. Outlook Express' Options and many others do this.
However, each subject for settings in nvda is seperate and has either to be selected via its shortcut keys, or from the nvda menu one at a time.
My idea is to make this in the style as above, so one can do all the initial selections in one go. I'd also make the comment that this would make it easier for users who cannot remember which sheet the actual item they want is in, to find it.I believe one should have an apply and save settings in these as well, but the actual arrangement is open to deiscussion here.
The text was updated successfully, but these errors were encountered: