|
6 | 6 | from PyQt5.QtWidgets import ( |
7 | 7 | QLabel, |
8 | 8 | QMainWindow, |
| 9 | + QMessageBox, |
9 | 10 | QToolBar, |
10 | 11 | QDockWidget, |
11 | 12 | QAction, |
@@ -218,9 +219,20 @@ def closeEvent(self, event): |
218 | 219 |
|
219 | 220 | if self.components["editor"].document().isModified(): |
220 | 221 |
|
221 | | - rv = confirm(self, "Confirm close", "Close without saving?") |
| 222 | + dlg = QMessageBox(self) |
| 223 | + dlg.setWindowTitle("Unsaved changes") |
| 224 | + dlg.setText("Save changes before closing?") |
| 225 | + dlg.setStandardButtons( |
| 226 | + QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel |
| 227 | + ) |
| 228 | + dlg.setDefaultButton(QMessageBox.Save) |
| 229 | + rv = dlg.exec_() |
222 | 230 |
|
223 | | - if rv: |
| 231 | + if rv == QMessageBox.Save: |
| 232 | + self.components["editor"].save() |
| 233 | + event.accept() |
| 234 | + super(MainWindow, self).closeEvent(event) |
| 235 | + elif rv == QMessageBox.Discard: |
224 | 236 | event.accept() |
225 | 237 | super(MainWindow, self).closeEvent(event) |
226 | 238 | else: |
@@ -309,6 +321,11 @@ def prepare_menubar(self): |
309 | 321 | examples_menu = menu_file.addMenu("Examples") |
310 | 322 | self._populate_examples_menu(examples_menu) |
311 | 323 |
|
| 324 | + menu_file.addSeparator() |
| 325 | + menu_file.addAction( |
| 326 | + QAction("Quit", self, shortcut="ctrl+Q", triggered=self.close) |
| 327 | + ) |
| 328 | + |
312 | 329 | # global menu elements |
313 | 330 | menu_view.addSeparator() |
314 | 331 | for d in self.findChildren(QDockWidget): |
|
0 commit comments