cadquery-freecad-module/Libs/pyqode/core/dialogs/unsaved_files.py

58 lines
2.0 KiB
Python

"""
This module contains the unsaved files dialog.
"""
from pyqode.qt.QtWidgets import QDialog
from pyqode.core._forms.dlg_unsaved_files_ui import Ui_Dialog
from pyqode.qt import QtWidgets, QtCore
class DlgUnsavedFiles(QDialog, Ui_Dialog):
"""
This dialog shows the list of unsaved file in the CodeEditTabWidget.
Use can choose to:
- cancel: nothing changed, no tab will be closed
- save all/save selected: save the selected files or all files
- discard all changes: nothing will be saved but all tabs will be
closed.
"""
def __init__(self, parent, files=None):
if files is None:
files = []
QtWidgets.QDialog.__init__(self, parent)
Ui_Dialog.__init__(self)
self.setupUi(self)
self.bt_save_all = self.buttonBox.button(
QtWidgets.QDialogButtonBox.SaveAll)
self.bt_save_all.clicked.connect(self.accept)
self.discarded = False
self.bt_discard = self.buttonBox.button(
QtWidgets.QDialogButtonBox.Discard)
self.bt_discard.clicked.connect(self._set_discarded)
self.bt_discard.clicked.connect(self.accept)
for file in files:
self._add_file(file)
self.listWidget.itemSelectionChanged.connect(
self._on_selection_changed)
self._on_selection_changed()
def _add_file(self, path):
icon = QtWidgets.QFileIconProvider().icon(QtCore.QFileInfo(path))
item = QtWidgets.QListWidgetItem(icon, path)
self.listWidget.addItem(item)
def _set_discarded(self):
self.discarded = True
def _on_selection_changed(self):
nb_items = len(self.listWidget.selectedItems())
if nb_items == 0:
self.bt_save_all.setText("Save")
self.bt_save_all.setEnabled(False)
else:
self.bt_save_all.setEnabled(True)
self.bt_save_all.setText("Save selected")
if nb_items == self.listWidget.count():
self.bt_save_all.setText("Save all")