docs: def on_add(self, widget, new_dict=False):
          """" Adds a new entry to the semantic data of a state. Reloads the tree store.
  
          :param widget: The source widget of the action
          :param bool new_dict: A flag to indicate if the new value is of type dict
          :return:
          """
          self.semantic_data_counter += 1
          treeiter, path = self.get_selected_object()
  
          value = dict() if new_dict else "New Value"
  
          # get target dict path
          if treeiter:
              target_dict_path_as_list = self.tree_store[path][self.ID_STORAGE_ID]
              if not self.tree_store[path][self.IS_DICT_STORAGE_ID]:
                  target_dict_path_as_list.pop()
          else:
              target_dict_path_as_list = []
  
          # generate key
          target_dict = self.model.state.get_semantic_data(target_dict_path_as_list)
          new_key_string = generate_semantic_data_key(list(target_dict.keys()))
          self.model.state.add_semantic_data(target_dict_path_as_list, value, new_key_string)
  
          self.reload_tree_store_data()
  
          # jump to new element
          self.select_entry(target_dict_path_as_list + [new_key_string])
          logger.debug("Added new semantic data entry!")
          return True