docs: def _try_close_dirty_tabs(self, exept=None):
          """
          Tries to close dirty tabs. Uses DlgUnsavedFiles to ask the user
          what he wants to do.
          """
          widgets, filenames = self._collect_dirty_tabs(exept=exept)
          if not len(filenames):
              return True
          dlg = DlgUnsavedFiles(self, files=filenames)
          if dlg.exec_() == dlg.Accepted:
              if not dlg.discarded:
                  for item in dlg.listWidget.selectedItems():
                      filename = item.text()
                      widget = None
                      for widget in widgets:
                          if widget.file.path == filename:
                              break
                      if widget != exept:
                          self._save_editor(widget)
                          self.removeTab(self.indexOf(widget))
              return True
          return False