Skip to content

401 project save - #344

Merged
rozyczko merged 4 commits into
developfrom
401-project-save
Sep 9, 2026
Merged

401 project save#344
rozyczko merged 4 commits into
developfrom
401-project-save

Conversation

@rozyczko

@rozyczko rozyczko commented Sep 8, 2026

Copy link
Copy Markdown
Member

This pull request implements tracking of unsaved changes to projects, improves save feedback, and enhances user experience regarding project state and application closure.

Unsaved Changes Tracking and Save Feedback

  • Added hasUnsavedChanges and lastSaved properties, along with corresponding signals, to both the backend (project.py, Project.qml) and frontend (BackendWrapper.qml) to track and expose whether the project has unsaved changes and when it was last saved.
  • Modified setters and backend signals so that any change to project content marks the project as "dirty" (unsaved), and saving or loading clears this flag. The backend now has explicit logic for marking/clearing dirty state, including a context manager to suppress dirty tracking during create/load/reset operations.
  • Save operations now emit success or error signals, with detailed user-friendly error messages for common failure cases (e.g., permission denied, file exists).

User Interface and User Experience

  • The "Save" button in the main application window is only enabled when there are unsaved changes, and provides visual feedback (flashing icon) on successful save. Tooltips and button states are contextually updated.
  • Closing the application with unsaved changes now prompts the user to save, discard, or cancel, ensuring no accidental data loss. The dialog only allows quitting after a successful save.
  • The reset dialog now warns specifically about unsaved changes if present, rather than always warning about data loss.
  • Save errors are shown in a modal dialog, ensuring users are aware of failures and can take action.

Backend and QML Integration

  • Exposed new properties and signals (projectLastSaved, projectHasUnsavedChanges, projectSaved, projectSaveError) through the BackendWrapper for easy binding in QML.
  • Connected all relevant backend signals to dirty tracking, ensuring all meaningful changes are captured and the UI accurately reflects the save state.

@rozyczko rozyczko added [scope] enhancement Adds/improves features (major.MINOR.patch) [priority] high Should be prioritized soon labels Sep 8, 2026
@rozyczko
rozyczko merged commit 5db37c1 into develop Sep 9, 2026
16 checks passed
@rozyczko
rozyczko deleted the 401-project-save branch September 9, 2026 12:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[priority] high Should be prioritized soon [scope] enhancement Adds/improves features (major.MINOR.patch)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant