code: def copy_item(self, erase_original=False):
          
          indexes = self.selectedIndexes()
          if not indexes:
              return
          idx_rows = unsorted_unique([idx.row() for idx in indexes])
          if len(idx_rows) > 1 or not indexes[0].isValid():
              return
          orig_key = self.model.keys[idx_rows[0]]
          if erase_original:
              title = _('Rename')
              field_text = _('New variable name:')
          else:
              title = _('Duplicate')
              field_text = _('Variable name:')
          data = self.model.get_data()
          if isinstance(data, (list, set)):
              new_key, valid = len(data), True
          else:
              new_key, valid = QInputDialog.getText(self, title, field_text,
                                                    QLineEdit.Normal, orig_key)
          if valid and to_text_string(new_key):
              new_key = try_to_eval(to_text_string(new_key))
              if new_key == orig_key:
                  return
              self.copy_value(orig_key, new_key)
              if erase_original:
                  self.remove_values([orig_key])
docs: Copy item