docs: def key_edited(self, path, new_key_str):
          """ Edits the key of a semantic data entry
  
          :param path: The path inside the tree store to the target entry
          :param str new_key_str: The new value of the target cell
          :return:
          """
          tree_store_path = self.create_tree_store_path_from_key_string(path) if isinstance(path, string_types) else path
          if self.tree_store[tree_store_path][self.KEY_STORAGE_ID] == new_key_str:
              return
  
          dict_path = self.tree_store[tree_store_path][self.ID_STORAGE_ID]
          old_value = self.model.state.get_semantic_data(dict_path)
          self.model.state.remove_semantic_data(dict_path)
  
          if new_key_str == "":
              target_dict = self.model.state.semantic_data
              for element in dict_path[0:-1]:
                  target_dict = target_dict[element]
              new_key_str = generate_semantic_data_key(list(target_dict.keys()))
  
          new_dict_path = self.model.state.add_semantic_data(dict_path[0:-1], old_value, key=new_key_str)
          self._changed_id_to = {':'.join(dict_path): new_dict_path}  # use hashable key (workaround for tree view ctrl)
          self.reload_tree_store_data()