docs: def rename(self):
          """
          Renames the selected item in the tree view
          """
          src = self.get_current_path()
          pardir, name = os.path.split(src)
          new_name, status = QtWidgets.QInputDialog.getText(
              self.tree_view, _('Rename '), _('New name:'),
              QtWidgets.QLineEdit.Normal, name)
          if status:
              dest = os.path.join(pardir, new_name)
              old_files = []
              if os.path.isdir(src):
                  old_files = self._get_files(src)
              else:
                  old_files = [src]
              try:
                  os.rename(src, dest)
              except OSError as e:
                  QtWidgets.QMessageBox.warning(
                      self.tree_view, _('Rename failed'),
                      _('Failed to rename "%s" into "%s".\n\n%s') % (src, dest, str(e)))
              else:
                  if os.path.isdir(dest):
                      new_files = self._get_files(dest)
                  else:
                      new_files = [dest]
                  self.tree_view.file_renamed.emit(os.path.normpath(src),
                                                   os.path.normpath(dest))
                  renamed_files = []
                  for old_f, new_f in zip(old_files, new_files):
                      self.tree_view.file_renamed.emit(old_f, new_f)
                      renamed_files.append((old_f, new_f))
                  # emit all changes in one go
                  self.tree_view.files_renamed.emit(renamed_files)