Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 22 additions & 6 deletions guiconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,12 +257,13 @@ def menuconfig(kconf):
def _load_config():
# Loads any existing .config file. See the Kconfig.load_config() docstring.
#
# Returns True if .config is missing or outdated. We always prompt for
# saving the configuration in that case.
# Returns True if .config is missing or outdated. We prompt for saving the
# configuration if there are actual changes or if no .config file exists
# (so user can save the default configuration).

print(_kconf.load_config())
if not os.path.exists(_conf_filename):
# No .config
# No .config exists - treat as changed so user can save defaults
return True

return _needs_save()
Expand Down Expand Up @@ -1774,17 +1775,32 @@ def _vis_after(item):
def _on_quit(_=None):
# Called when the user wants to exit

if not _conf_changed:
config_exists = os.path.exists(_conf_filename)

if not _conf_changed and config_exists:
_quit("No changes to save (for '{}')".format(_conf_filename))
return

# Adjust dialog message if .config doesn't exist
if not config_exists:
dialog_title = "Quit"
dialog_message = (
"No configuration file found.\nSave new configuration before quitting?"
)
else:
dialog_title = "Quit"
dialog_message = "Save changes?"

while True:
ync = messagebox.askyesnocancel("Quit", "Save changes?")
ync = messagebox.askyesnocancel(dialog_title, dialog_message)
if ync is None:
return

if not ync:
_quit("Configuration ({}) was not saved".format(_conf_filename))
if not config_exists:
_quit("Configuration was not saved")
else:
_quit("Configuration ({}) was not saved".format(_conf_filename))
return

if _try_save(_kconf.write_config, _conf_filename, "configuration"):
Expand Down
23 changes: 17 additions & 6 deletions menuconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -863,13 +863,14 @@ def _wrapper(func):
def _load_config():
# Loads any existing .config file. See the Kconfig.load_config() docstring.
#
# Returns True if .config exists and is outdated. We prompt for saving the
# configuration only if there are actual changes.
# Returns True if .config exists and is outdated, or if .config doesn't exist
# at all. We prompt for saving the configuration if there are actual changes
# or if no .config file exists (so user can save the default configuration).

print(_kconf.load_config())
if not os.path.exists(_conf_filename):
# No .config - no changes yet
return False
# No .config exists - treat as changed so user can save defaults
return True

return _needs_save()

Expand Down Expand Up @@ -1071,13 +1072,21 @@ def _menuconfig(stdscr):


def _quit_dialog():
if not _conf_changed:
config_exists = os.path.exists(_conf_filename)

if not _conf_changed and config_exists:
return "No changes to save (for '{}')".format(_conf_filename)

# Use button dialog with Yes/No/Cancel buttons (matching lxdialog style)
# Adjust message if .config doesn't exist
if not config_exists:
dialog_text = "No configuration file found.\nSave new configuration?"
else:
dialog_text = "Save configuration?"

result = _button_dialog(
None, # No title in yesno dialog
"Save configuration?",
dialog_text,
[" Yes ", " No ", " Cancel "],
default_button=0,
)
Expand All @@ -1094,6 +1103,8 @@ def _quit_dialog():
return None

elif result == 1: # No
if not config_exists:
return "Configuration was not saved"
return "Configuration ({}) was not saved".format(_conf_filename)


Expand Down