Skip to content
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

Impossible to Save Log Entries in Latest Next Snapshot #8385

Closed
Mohamed00 opened this issue Jun 11, 2018 · 10 comments
Closed

Impossible to Save Log Entries in Latest Next Snapshot #8385

Mohamed00 opened this issue Jun 11, 2018 · 10 comments

Comments

@Mohamed00
Copy link

Mohamed00 commented Jun 11, 2018

Steps to reproduce:

  1. Open the NVDA log viewer.
  2. Try to save with control+s or the save as item in the log menu.

Expected behavior:

A dialog appears asking where the log should be saved.

Actual behavior:

The operation fails and the following traceback is displayed.
ERROR - unhandled exception (23:30:52.717):
Traceback (most recent call last):
File "gui\logViewer.pyc", line 71, in onSaveAsCommand
AttributeError: 'module' object has no attribute 'SAVE'

System configuration:

NVDA version:
next-15211,8a5d09f0

NVDA Installed or portable:
Installed.

Windows version:
Windows 10 version 1803, build 17134.81.

Other questions:

Does the issue still occur after restarting your PC?
Yes
Have you tried any other versions of NVDA?
No.

@Mohamed00 Mohamed00 changed the title Impossible to Save Log Entries in Latest Next Impossible to Save Log Entries in Latest Next Snapshot Jun 11, 2018
@josephsl
Copy link
Collaborator

josephsl commented Jun 11, 2018 via email

@Mohamed00
Copy link
Author

Mohamed00 commented Jun 11, 2018 via email

@josephsl
Copy link
Collaborator

josephsl commented Jun 11, 2018 via email

@zstanecic
Copy link
Contributor

zstanecic commented Jun 11, 2018 via email

josephsl added a commit to josephsl/nvda that referenced this issue Jun 11, 2018
…RITE_PROMPT. Re nvaccess#7077.

Yet another change of attribute names: wx.SAVE is now wx.FD_SAVE, wx.OVERWRITE_PROMPT is fwx.FD_OVERWRITE_PROMPT. This resolves an issue where Log Viewer does not let users save logs (issue nvaccess#8385).
@Brian1Gaff
Copy link

Brian1Gaff commented Jun 11, 2018 via email

@Brian1Gaff
Copy link

Brian1Gaff commented Jun 11, 2018 via email

@Mohamed00
Copy link
Author

Mohamed00 commented Jun 25, 2018

Since this issue is fixed now, should I close it?

@josephsl
Copy link
Collaborator

josephsl commented Jun 25, 2018 via email

@LeonarddeR
Copy link
Collaborator

Hmm, as this is already fixed in next, I agree with @Mohamed00 and see no reason to keep it open.

@josephsl
Copy link
Collaborator

Hi,

I see. Closing as requested.

michaelDCurran pushed a commit that referenced this issue Jul 18, 2018
* wxPython4: initial foundations with wx.adv.TaskbarIcon and others. re #7077.

One of the biggest benefits of using wxPython 4 is easier route for upgrading to Python 3.x. Due to changes made in wxPython 4, NvDA source code (at least wx routines) must be modified. This provides some foundations, namely wx.adv.TaskbarIcon and replacing wx.SpinCtrlNameStr with a string literal.

* wxPython 4/Python Console: use wx.TextCtrl.WriteText instead of wx.TextCtrl.write. re #7077.

wx.TextCtrl.write is no more - wx.TextCtrl.WriteText should be used instead.

* wxPython 4/Python Console: use AppendText instead of WriteText for cursor tracking. re #7077.

If wx.TextCtrl.WriteText is used and if the cursor is located at the top of the output window for the console, newly typed text will be inserted instead of being appended, thus wx.TextCtrl.AppendText will be used.

* wxPython 4/various dialogs: wx.CENTER_ON_SCREEN is no more, use wx.Center instead. re #7077.

Somehow, documentation says wx.CENTRE_ON_SCREEN is included but it isn't there at runtime. Instead, wx.Center is used (does not follow variable naming convention though), so using it for now.

* wxPython 4/Welcome dialog: wx.NORMAL cannot be used as a font family anymore, replaced with wx.FONTFAMILY_DEFAULT. re #7077

* wxPython 4/cursor manager/Find dialog: use sizer.Add instead of sizer.AddSizer. re #7077.

* wxPython 4/Launcher: spell out GridSizer gaps, prevents overload error. re #7077.

In wxPython 4, when instantiating wx.GridSizer, horizontal and vertical gaps in pixels must be specified.

* wxPython 4/speech viewer: few tweaks to constructor, save position before the dialog is destroyed. re #7077.

Due to changes to how dialog sizes are constructed, keyword arguments cannot be used.
Also, if Window.Destroy is called, somehow text controls and what not are gone, so save speech viewer position before destroying the window.

* wxPython 4/Input gestures dialog: when Cancel button is clicked, make sure to check if the treeview is alive. re #7077.

Somehow, when Cancel button is licked, treeview is removed first, yet item selection event is run. Make sure to catch this.

* Readme: mention new wxPython and Six compatibility layer requirements. re #7077

* wx.Menu: AppendMenu is deprecated, use Append instead. re #7077

* Add-ons Manager: make sure to nullify dialog instance flag and prevent issues when installing more than one add-on remotely. re #7077.

Here 'remotely' refers to letting people install add-ons via Windows Explorer and other means. Without nullifying instance flag when the add-ons manager closes, instance flag will be kept, which causes wxPython to think (and correctly) that the dialog is still active, resulting in runtime error on add-on list control being thrown.

* gui/Config profiles dialog/wxPython 4: nullify instance flag. re #7077.

Just like add-ons manager, if the instance flag for config profiles dialog isn't nullified, wxWidgets will think that the dialog is active when it is gone. Thus nullify it in two places: when the actual dialog closes and when a new profile is activated right away (for the latter, it is parent.Destroy).

* Python console: revert to wx.TextCtrl.write function. re #7077.

Due to request from a tester, wxPython 4 developer has decided to restore wx.TextCtrl.write. This means the AppendText workaround in place is no longer needed.

* Settings/voice sliders: replace wx.WXK_PRIOR and wx.WXK_NEXT with wx.WXK_pAGEUP and wx.WXK_PAGEDOWN, respectively. re #7077.

wx.WXK_PRIOR and wx.WXK_NEXT are no more, replaced by direct definition of page up and page down keys. This fixes the problem where sliders couldn't be changed in Voice Settings dialog.

* core.CorePump:  block this timer from firing recursively. This could never happen before wxPython 4, but now it is possible.

* miscDeps now contains wxPython 4.

* Core: update copyright years, corrected issue number

* Comment spelling fix

* wxPython 4.0.1 in miscDeps

* gui: add a NonRe-entrant timer to replace use of wx.Timer and wx.PyTimer.

* Replace usage of wx.PyTimer with gui.NonReentrantTimer for all core code in NVDA. This does not change any braille display drivers.

* Clarify comment

* Clarify docstring

* Spelling

* Readme: mention wxPython 4.0.1

* wxPython 4: use wx.ID_ANY instead of NewID function. Re #8121.

Becasue NewID may raise assertion error, use wx.ID_ANY instead.

* GUI/SettingsDialogs: remove extra space at ends of lines

* Settings screen: wx.Center again.

* add a new submodule for wxPython dep

* Use `CenterOnScreen()` rather than `Center`

Use the explicit function rather than `Center()` with the CENTER_ON_SCREEN constant.
Also supply CENTER_ON_SCREEN for addons which may still rely on it.

* Define both missing constants

Despite being referred to in the documentation for wxPython,
CENTER_ON_SCREEN and CENTRE_ON_SCREEN constants are missing.
Here we redefine them to stop errors in addons. Addons should migrate to
using the explicit functions CenterOnParent or CenterOnScreen.

* Update copyright years and headers.

* Settings dialog: clear instances set when all settings instances are gone. Re #7077.

Previously, when closing settings dialog, instances would be cleared. It turns out that might not be the case with wxPython 4, so manually clear instances set if the only thing remaining is the SettingsDialog object.

* wxPython 4: revert instances checking in SettingsDialog thanks to mitigation about circular references. Re #7077.

* Dictionary dilaog: use wx.NewId for add, edit, and remove buttons. Re #7077.

Somehow, using wx.ID_ANY for speech dictionary buttons causes the buttons to not work. This is because the button is added directly to the helper sizer. Thus use NewID instead.

* Get rid of unnecessary ID usage

* Log viewer: wx.SAVE -> wx.FD_SAVE, wx.OVERWRITE_PROMPT -> wx.FD_OVERWRITE_PROMPT. Re #7077.

Yet another change of attribute names: wx.SAVE is now wx.FD_SAVE, wx.OVERWRITE_PROMPT is fwx.FD_OVERWRITE_PROMPT. This resolves an issue where Log Viewer does not let users save logs (issue #8385).

* Log viewer: add copyright headers.

* wxPython4/settings dialogs: deleteWindows -> delete_windows in sizer.Clear method. Re #7077

* What's new: add wxPython 4.0.1 entry in changes for developers section. Re #7077

* Upgrade to wxPython 4.0.3

* Touch intewraction/touch typing mode checkbox: no more wx.NewId function for this checkbox just like others. re #7077.

Somehow, for touch interaction/touch typing mode checkbox, wx.NewId function was called, whereas other checkboxes do not do this. Thus make it consistent with other fellows by not calling this function in this particular checkbox.

* Settings panels: use wx.NewIdRef function to retrieve global ID's for panels. Re #7077.

Reported by several people and subsequently confirmed: in wxPython 4.0.0 to 4.0.2, there exists a wrap-around bug in wx.NewId function that prevents programs calling this function from working normally after the ID's are exhausted. This is now fixed in wxPython 4.0.3 via wx.NewIdRef function. Thus use this function to keep an eye on panel ID's, used for announcing new categories as they become visible in multi-category NVDA Settings screen.

* Readme: mention Python 2.7.15 and wxPython 4.0.3 dependencies.

* What's new: wxPython 4.0.1 -> 4.0.3. Re #7077.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants