mirror of
https://github.com/1j01/textual-paint.git
synced 2024-12-23 06:41:32 +03:00
Abort if error occurred when reloading to show information loss during save
I'm not sure about this...
This commit is contained in:
parent
572d60076f
commit
7b32452066
@ -2550,7 +2550,7 @@ class PaintApp(App[None]):
|
|||||||
self.message_box(dialog_title, _("An unexpected error occurred while writing %1.", file_path), "ok", error=e)
|
self.message_box(dialog_title, _("An unexpected error occurred while writing %1.", file_path), "ok", error=e)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def reload_after_save(self, content: bytes, file_path: str) -> None:
|
def reload_after_save(self, content: bytes, file_path: str) -> bool:
|
||||||
"""Reload the document from saved content, to show information loss from the file format.
|
"""Reload the document from saved content, to show information loss from the file format.
|
||||||
|
|
||||||
Unlike `open_from_file_path`, this method:
|
Unlike `open_from_file_path`, this method:
|
||||||
@ -2564,6 +2564,7 @@ class PaintApp(App[None]):
|
|||||||
new_image = AnsiArtDocument.decode_based_on_file_extension(content, file_path)
|
new_image = AnsiArtDocument.decode_based_on_file_extension(content, file_path)
|
||||||
self.canvas.image = self.image = new_image
|
self.canvas.image = self.image = new_image
|
||||||
self.canvas.refresh(layout=True)
|
self.canvas.refresh(layout=True)
|
||||||
|
return True
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
self.message_box(_("Open"), file_path + "\n" + _("Paint cannot read this file.") + "\n" + _("Unexpected file format."), "ok")
|
self.message_box(_("Open"), file_path + "\n" + _("Paint cannot read this file.") + "\n" + _("Unexpected file format."), "ok")
|
||||||
except UnidentifiedImageError as e:
|
except UnidentifiedImageError as e:
|
||||||
@ -2572,6 +2573,7 @@ class PaintApp(App[None]):
|
|||||||
self.message_box(_("Open"), e.localized_message, "ok")
|
self.message_box(_("Open"), e.localized_message, "ok")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.message_box(_("Open"), _("An unexpected error occurred while reading %1.", file_path), "ok", error=e)
|
self.message_box(_("Open"), _("An unexpected error occurred while reading %1.", file_path), "ok", error=e)
|
||||||
|
return False
|
||||||
|
|
||||||
async def save(self) -> bool:
|
async def save(self) -> bool:
|
||||||
"""Save the image to a file.
|
"""Save the image to a file.
|
||||||
@ -2594,7 +2596,7 @@ class PaintApp(App[None]):
|
|||||||
# Note: this fails to preview the lost information in the case
|
# Note: this fails to preview the lost information in the case
|
||||||
# of saving the old file in prompt_save_changes,
|
# of saving the old file in prompt_save_changes,
|
||||||
# because the document will be unloaded.
|
# because the document will be unloaded.
|
||||||
self.reload_after_save(content, self.file_path)
|
return self.reload_after_save(content, self.file_path)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
@ -2640,7 +2642,11 @@ class PaintApp(App[None]):
|
|||||||
self.saved_undo_count = len(self.undos)
|
self.saved_undo_count = len(self.undos)
|
||||||
window.close()
|
window.close()
|
||||||
if reload_after_save:
|
if reload_after_save:
|
||||||
self.reload_after_save(content, file_path)
|
if not self.reload_after_save(content, file_path):
|
||||||
|
# I'm unsure about this.
|
||||||
|
# Also, if backup recovery is to happen below,
|
||||||
|
# it should happen in this case too I think.
|
||||||
|
return
|
||||||
saved_future.set_result(None)
|
saved_future.set_result(None)
|
||||||
|
|
||||||
# TODO: should this look for a backup file and offer to recover it?
|
# TODO: should this look for a backup file and offer to recover it?
|
||||||
|
Loading…
Reference in New Issue
Block a user