Guard file open and device connect against conflicting state
Opening a file while connected to a device prompts to disconnect first. Connecting to a device while a file is open prompts to save unsaved changes, then closes the file before showing the connect dialog. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -8,7 +8,7 @@ so later rebinding would only ever be seen by the module that did it.
|
||||
import configparser
|
||||
import os
|
||||
|
||||
VERSION = "0.0.0.086"
|
||||
VERSION = "0.0.0.087"
|
||||
PROPERTIES_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "editor.properties")
|
||||
DEFAULT_GRID_SIZE = 10
|
||||
DEFAULT_ADD_TIMESTAMP = True
|
||||
|
||||
@@ -1927,6 +1927,22 @@ _cov_poll_id = None
|
||||
|
||||
def do_device_connect():
|
||||
"""Opens the connect dialog and initiates a device connection."""
|
||||
if app_state.current_file_path and not app_state.live_mode:
|
||||
if app_state.is_dirty:
|
||||
answer = messagebox.askyesnocancel(
|
||||
"Unsaved Changes",
|
||||
"The current file has unsaved changes.\n\n"
|
||||
"Save before connecting to a device?",
|
||||
)
|
||||
if answer is None:
|
||||
return
|
||||
if answer:
|
||||
sax_file.execute_direct_overwrite_save()
|
||||
sax_file.reset_to_startup_state()
|
||||
sax_file.refresh_treeview_from_dom(None)
|
||||
wiresheet.render_components([])
|
||||
app_state.window.title(app_state.base_window_title())
|
||||
|
||||
connect_dialog.ConnectDialog(app_state.window, _connect_to_device)
|
||||
|
||||
|
||||
|
||||
+13
@@ -126,6 +126,19 @@ def open_file():
|
||||
messagebox.showwarning("Action Blocked", "Cannot load SAX profiles because 'Sedona home folder' configuration is missing or empty.")
|
||||
return
|
||||
|
||||
if app_state.live_mode:
|
||||
answer = messagebox.askyesnocancel(
|
||||
"Device Connected",
|
||||
"A live device connection is active.\n\n"
|
||||
"Disconnect from the device and open a file?\n\n"
|
||||
"Choose Yes to disconnect and open, No to cancel.",
|
||||
)
|
||||
if not answer:
|
||||
return
|
||||
# Import here to avoid circular import at module level
|
||||
from main import do_device_disconnect
|
||||
do_device_disconnect()
|
||||
|
||||
file_path = filedialog.askopenfilename(
|
||||
title="Select SAX File",
|
||||
filetypes=[("SAX Files", "*.sax"), ("XML Files", "*.xml"), ("All Files", "*.*")],
|
||||
|
||||
Reference in New Issue
Block a user