code: def rename(self, node):
          
  
          source = node.path
          base_name, state = QInputDialog.getText(self, "Rename", "Enter your new name:", text=os.path.basename(source))
          if not state:
              return False
  
          base_name = foundations.strings.to_string(base_name)
          if base_name == os.path.basename(source):
              return False
  
          parent_directory = os.path.dirname(source)
          target = os.path.join(parent_directory, base_name)
  
          if self.__script_editor.model.is_authoring_node(node):
              if not foundations.common.path_exists(source):
                  LOGGER.info("{0} | Renaming '{1}' untitled file to '{2}'!".format(
                      self.__class__.__name__, source, target))
                  self.__set_authoring_nodes(source, target)
                  return True
  
          if not base_name in os.listdir(parent_directory):
              if node.family == "File":
                  LOGGER.info("{0} | Renaming '{1}' file to '{2}'!".format(self.__class__.__name__, source, target))
                  self.__rename_file(source, target)
              elif node.family == "Directory":
                  LOGGER.info("{0} | Renaming '{1}' directory to '{2}'!".format(self.__class__.__name__, source, target))
                  self.__rename_directory(source, target)
              elif node.family == "Project":
                  LOGGER.info("{0} | Renaming '{1}' project to '{2}'!".format(self.__class__.__name__, source, target))
                  self.__rename_project(source, target)
          else:
              self.__raise_file_system_exception(base_name, parent_directory)
  
          return True
docs: Renames given Node associated path.
  
          :param node: Node.
          :type node: ProjectNode or DirectoryNode or FileNode
          :return: Method success.
          :rtype: bool