Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 4, 2025

Clicking cancel on the startup file dialog caused an IOError when attempting to read a non-existent config file.

Changes

  • Detect cancellation: Check if filedialog.askopenfilename() returns empty string and load DEFAULT_CONFIG instead of attempting file read
  • Display clear message: Set configfile = "No file selected" when user cancels instead of using a placeholder path
  • Handle None values: Convert None to empty string in entry fields to avoid displaying "None" text
  • Safe directory handling: Added get_config_dir() helper method that returns current directory when no file is selected, ensuring all file operations work correctly
# Before: Would crash if user canceled
configfile = prompt_file()
dic = aeolis.inout.read_configfile(configfile)

# After: Gracefully handles cancel
selected_file = prompt_file()
if selected_file:
    configfile = selected_file
    dic = aeolis.inout.read_configfile(configfile)
else:
    configfile = "No file selected"
    dic = DEFAULT_CONFIG.copy()

GUI now displays "No file selected" when user cancels, starts with empty fields, and allows users to configure manually or load a file later. All file dialogs use current directory as the initial location until a config file is loaded.

Original prompt
  • when pressing cancel on startup no input file is specified. This gives an error now. Fix the error and load empty fields if no file is selected.

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Fix error when pressing cancel on startup without selecting file Fix GUI crash when canceling file selection on startup Nov 4, 2025
Copilot AI requested a review from Sierd November 4, 2025 11:56
@Sierd
Copy link
Collaborator

Sierd commented Nov 4, 2025

@copilot Remove the generic place holder, just state that no file is selected.

Copy link
Contributor Author

Copilot AI commented Nov 4, 2025

@copilot Remove the generic place holder, just state that no file is selected.

Done. Removed the placeholder path and now configfile is set to "No file selected" when user cancels. Added a get_config_dir() helper method to safely handle directory operations when no file is selected. Changes in commit 68c62bb.

@Sierd Sierd marked this pull request as ready for review November 4, 2025 13:29
@Sierd Sierd merged commit aff65ce into GUI_development Nov 4, 2025
@Sierd Sierd deleted the copilot/fix-cancel-startup-error branch November 4, 2025 13:29
Sierd added a commit that referenced this pull request Nov 6, 2025
* Initialisation of the GUI

Including some overdue maintenance related to python 2-->3 in the write_configfile script.

* Updated GUI structure using Class

* updated gui

* update gui branche with latest main (#255)

* fixed dependencies for python 3.13 (#236)

* test with timing function

* Add devcontainer for use in codespaces (#240)

* devcontainer added

* Update Dockerfile

* Update Dockerfile

* Update devcontainer.json

* Update Dockerfile

* fixed dependencies for python 3.13 (#236) (#239)

* Update Dockerfile

* remove abundant stuff

* Add devcontainer for use in codespaces (#240) (#242)

* devcontainer added

* Update Dockerfile

* Update Dockerfile

* Update devcontainer.json

* Update Dockerfile

* fixed dependencies for python 3.13 (#236) (#239)

* Update Dockerfile

* remove abundant stuff

* Update Dockerfile (#243)

This patch updates the dockerfile for the codespace to be compatible with developer mode.
You need to manual install python in dev model after the docker is created.

* Cleanup main (#245)

* delete abundant files

* deleted:    aeolis/examples/vanWesten2024/blowout/figure_grid_initialization.png
deleted:    aeolis/examples/vanWesten2024/blowout/figure_params_initialization.png
deleted:    aeolis/examples/vanWesten2024/blowout/figure_timeseries_initialization.png

* Update pyproject.toml

* Update README.md

* Update CITATION.cff

* Update release info (#246)

* Update pyproject.toml

* Update CITATION.cff

* Update README.md

* Update Python version and dependencies in installation guide

* Implement error message for missing ne_file

Added error handling for missing 'ne_file' when using Avalanching.

* Print message for aeolis installation in Dockerfile

Add message indicating manual installation of aeolis

* Update vegetation parameters in constants.py (#250)

* Update vegetation parameters in constants.py

Removes unused V_Lat parameter
solves #120 
Changes default for veg_min_elevation to -10 to avoid unwanted use of this functionality.

* Update aeolis/constants.py

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: Copilot <[email protected]>

* input and output tab added
improved domain plotting functionality

* added functionality

* Fix GUI crash when canceling file selection on startup (#256)

* Initial plan

* Fix GUI to handle cancel on startup gracefully

Co-authored-by: Sierd <[email protected]>

* Address code review feedback: move import to top and remove hardcoded path

Co-authored-by: Sierd <[email protected]>

* Remove placeholder path, set configfile to 'No file selected' when canceled

Co-authored-by: Sierd <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Sierd <[email protected]>

* Add Plot Output 1D tab for transect visualization with unified interface (#257)

* Initial plan

* Add Plot Output 1D tab with transect plotting functionality

Co-authored-by: Sierd <[email protected]>

* Add variable change callback for 1D plot updates

Co-authored-by: Sierd <[email protected]>

* Fix code review issues: cross-platform paths and dimension validation

Co-authored-by: Sierd <[email protected]>

* Improve dimension validation and dictionary access robustness

Co-authored-by: Sierd <[email protected]>

* Fix transect direction bug and unify 2D/1D tab interface with dynamic variable dropdowns

Co-authored-by: Sierd <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Sierd <[email protected]>

* bugfixes (#259)

* Initial plan

* Add Plot Output 1D tab with transect plotting functionality

Co-authored-by: Sierd <[email protected]>

* Add variable change callback for 1D plot updates

Co-authored-by: Sierd <[email protected]>

* Fix code review issues: cross-platform paths and dimension validation

Co-authored-by: Sierd <[email protected]>

* Improve dimension validation and dictionary access robustness

Co-authored-by: Sierd <[email protected]>

* Fix transect direction bug and unify 2D/1D tab interface with dynamic variable dropdowns

Co-authored-by: Sierd <[email protected]>

* bugfixes

* added functionality, colorbars, many small fixes.

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Sierd <[email protected]>

* domain overview added to 1D plot mode.

* Delete aeolis/GUI.ipynb

* Remove incompatible parameter checks for ne_file

Removed error handling for missing ne_file when using Avalanching.

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Sierd <[email protected]>
@Sierd Sierd mentioned this pull request Nov 6, 2025
Sierd added a commit that referenced this pull request Nov 6, 2025
* Initialisation of the GUI

Including some overdue maintenance related to python 2-->3 in the write_configfile script.

* Updated GUI structure using Class

* updated gui

* update gui branche with latest main (#255)

* fixed dependencies for python 3.13 (#236)

* test with timing function

* Add devcontainer for use in codespaces (#240)

* devcontainer added

* Update Dockerfile

* Update Dockerfile

* Update devcontainer.json

* Update Dockerfile

* fixed dependencies for python 3.13 (#236) (#239)

* Update Dockerfile

* remove abundant stuff

* Add devcontainer for use in codespaces (#240) (#242)

* devcontainer added

* Update Dockerfile

* Update Dockerfile

* Update devcontainer.json

* Update Dockerfile

* fixed dependencies for python 3.13 (#236) (#239)

* Update Dockerfile

* remove abundant stuff

* Update Dockerfile (#243)

This patch updates the dockerfile for the codespace to be compatible with developer mode.
You need to manual install python in dev model after the docker is created.

* Cleanup main (#245)

* delete abundant files

* deleted:    aeolis/examples/vanWesten2024/blowout/figure_grid_initialization.png
deleted:    aeolis/examples/vanWesten2024/blowout/figure_params_initialization.png
deleted:    aeolis/examples/vanWesten2024/blowout/figure_timeseries_initialization.png

* Update pyproject.toml

* Update README.md

* Update CITATION.cff

* Update release info (#246)

* Update pyproject.toml

* Update CITATION.cff

* Update README.md

* Update Python version and dependencies in installation guide

* Implement error message for missing ne_file

Added error handling for missing 'ne_file' when using Avalanching.

* Print message for aeolis installation in Dockerfile

Add message indicating manual installation of aeolis

* Update vegetation parameters in constants.py (#250)

* Update vegetation parameters in constants.py

Removes unused V_Lat parameter
solves #120 
Changes default for veg_min_elevation to -10 to avoid unwanted use of this functionality.

* Update aeolis/constants.py



---------



---------



* input and output tab added
improved domain plotting functionality

* added functionality

* Fix GUI crash when canceling file selection on startup (#256)

* Initial plan

* Fix GUI to handle cancel on startup gracefully



* Address code review feedback: move import to top and remove hardcoded path



* Remove placeholder path, set configfile to 'No file selected' when canceled



---------




* Add Plot Output 1D tab for transect visualization with unified interface (#257)

* Initial plan

* Add Plot Output 1D tab with transect plotting functionality



* Add variable change callback for 1D plot updates



* Fix code review issues: cross-platform paths and dimension validation



* Improve dimension validation and dictionary access robustness



* Fix transect direction bug and unify 2D/1D tab interface with dynamic variable dropdowns



---------




* bugfixes (#259)

* Initial plan

* Add Plot Output 1D tab with transect plotting functionality



* Add variable change callback for 1D plot updates



* Fix code review issues: cross-platform paths and dimension validation



* Improve dimension validation and dictionary access robustness



* Fix transect direction bug and unify 2D/1D tab interface with dynamic variable dropdowns



* bugfixes

* added functionality, colorbars, many small fixes.

---------




* domain overview added to 1D plot mode.

* Delete aeolis/GUI.ipynb

* Remove incompatible parameter checks for ne_file

Removed error handling for missing ne_file when using Avalanching.

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Sierd <[email protected]>
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

Successfully merging this pull request may close these issues.

2 participants