Closed mathPi closed 2 months ago
The changes introduce new methods for managing interface preferences and refreshing settings within the GUI components of the application. A refresh_window_preferences_change
method is added to enable dynamic updates of preferences, while the engine's initialization logic is modified to enhance modularity by calling reload_settings()
. Additionally, event handling in the preferences class is improved with form validation and GUI refresh capabilities.
File Path | Change Summary |
---|---|
src/main/python/main/ayab/ayab.py |
New method refresh_window_preferences_change added; updated __set_prefs to include self.engine.reload_settings() . |
src/main/python/main/ayab/engine/engine.py |
Modified __init__ method to call reload_settings() for setting the window title; reload_settings() method added. |
src/main/python/main/ayab/preferences.py |
Replaced connection of the enter button's click event to accept with __validate_form , which includes validation and refresh functionality; new done method added to close the dialog and refresh the GUI. |
sequenceDiagram
participant User
participant Preferences
participant Ayab
participant Engine
User->>Preferences: Click enter
Preferences->>Preferences: Call __validate_form
Preferences->>Ayab: Invoke refresh_window_preferences_change
Ayab->>Engine: Invoke reload_settings
Engine->>Engine: Refresh configuration
Engine->>Engine: Update window title
Preferences->>Preferences: Accept form
Preferences->>Preferences: Call done
Preferences->>Ayab: Invoke refresh_window_preferences_change
Ayab->>Engine: Invoke reload_settings
Engine->>Engine: Refresh configuration
Engine->>Engine: Update window title
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
There are already two different places (that I could find!) where the UI is refreshed following a preferences update:
preferences.py
, right after the (blocking) call that opens the Preferences dialog, an image_resizer
signal is (sometimes) emitted: https://github.com/AllYarnsAreBeautiful/ayab-desktop/blob/a03774e6a62410f3c4e57394d949b8b803860ac4/src/main/python/main/ayab/preferences.py#L194-L198ayab.py
, there's a call to scene.refresh()
after the (blocking) call to the above method: https://github.com/AllYarnsAreBeautiful/ayab-desktop/blob/a03774e6a62410f3c4e57394d949b8b803860ac4/src/main/python/main/ayab/ayab.py#L129-L131I think it would be good not to add a third place to that list…
There are already two different places (that I could find!) where the UI is refreshed following a preferences update:
- In
preferences.py
, right after the (blocking) call that opens the Preferences dialog, animage_resizer
signal is (sometimes) emitted: https://github.com/AllYarnsAreBeautiful/ayab-desktop/blob/a03774e6a62410f3c4e57394d949b8b803860ac4/src/main/python/main/ayab/preferences.py#L194-L198- In
ayab.py
, there's a call toscene.refresh()
after the (blocking) call to the above method: https://github.com/AllYarnsAreBeautiful/ayab-desktop/blob/a03774e6a62410f3c4e57394d949b8b803860ac4/src/main/python/main/ayab/ayab.py#L129-L131I think it would be good not to add a third place to that list…
Ohh yes, the second one is perfect, I update the PR. Is it better now ?
Ohh yes, the second one is perfect, I update the PR. Is it better now ?
Yes, that's definitely better (less code, yay). Although the Qt way would be to use a signal so that things are less coupled (e.g. Engine
could listen to a preferences_changed
signal), but that's not how the code is structured now unfortunately, so that's another change that will have to wait.
There is a change in behavior introduced by this though. The Engine.refresh()
method is slightly misnamed as it actually resets (most) options to their default values. With the previous code, the Infinite repeat
checkbox for example was not reset to the default when closing the Preferences dialog. This is probably not a big deal, just maybe a bit surprising.
In any case, the same options are also reset when opening a new image, which I find annoying by the way — sometimes you just want to reload the image that you've modified in an editor — so this new behavior wouldn't be so much out of line with the rest.
I have one last nit to pick with the name of that new method: I'm not sure refresh_settings_change
makes sense as a phrase, but maybe I'll let a native English speaker give their opinion on that one. I'd have gone with reload_settings
maybe?
Finally, thank you for taking my feedback into account but I don't have permission to approve PRs in this repo, you'll have to wait for a maintainer to drop by.
I have one last nit to pick with the name of that new method: I'm not sure
refresh_settings_change
makes sense as a phrase, but maybe I'll let a native English speaker give their opinion on that one. I'd have gone withreload_settings
maybe?
Waiting for clarification on this, then merge
(Conversations have to be closed as well)
Issues
0 New issues
0 Accepted issues
Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code
To fix issue #678, we need to refresh the engine parameters as the new settings can impact those parameters.
Summary by CodeRabbit
New Features
Improvements