add dialog checking whether to discard changes in a modified buffer

This commit is contained in:
Axel Kohlmeyer
2023-07-28 07:36:25 -04:00
parent bb96707ec8
commit cb5470ece3
2 changed files with 45 additions and 1 deletions

View File

@ -3,7 +3,6 @@ LAMMPS-GUI TODO list:
# Short term goals
- add "Help" entry to menu bar. Should open a popup window with a one page description of how to use it. Use HTML or Markdown text.
- add dialog when exiting asking if file should be saved when it is modified, similar dialog when opening a new file
- add CTRL-q hotkey to log windows so you can exit the entire application (add do you really want to? dialog to this)
- add "render" dialog where a "write_dump image" can be triggered. dialog should offer options for size, zoom, rotation, colors(?)
- add "syntax check" with enabled "-skiprun" flag

View File

@ -143,6 +143,29 @@ void LammpsGui::open()
// open file and switch CWD to path of file
void LammpsGui::open_file(const QString &fileName)
{
if (ui->textEdit->document()->isModified()) {
QMessageBox msg;
msg.setWindowTitle("Unsaved Changes");
msg.setWindowIcon(windowIcon());
msg.setText(QString("The buffer ") + current_file + " has changes");
msg.setInformativeText("Do you want to save the file before opening a new file?");
msg.setIcon(QMessageBox::Question);
msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
int rv = msg.exec();
switch (rv) {
case QMessageBox::Yes:
save();
break;
case QMessageBox::Cancel:
return;
break;
case QMessageBox::No: // fallthrough
default:
// do nothing
break;
}
}
QFileInfo path(fileName);
current_file = path.fileName();
current_dir = path.absolutePath();
@ -214,6 +237,28 @@ void LammpsGui::quit()
lammps_python_finalize();
}
#endif
if (ui->textEdit->document()->isModified()) {
QMessageBox msg;
msg.setWindowTitle("Unsaved Changes");
msg.setWindowIcon(windowIcon());
msg.setText(QString("The buffer ") + current_file + " has changes");
msg.setInformativeText("Do you want to save the file before exiting?");
msg.setIcon(QMessageBox::Question);
msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
int rv = msg.exec();
switch (rv) {
case QMessageBox::Yes:
save();
break;
case QMessageBox::Cancel:
return;
break;
case QMessageBox::No: // fallthrough
default:
// do nothing
break;
}
}
QCoreApplication::quit();
}