<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def restore_layout(self, name, *args):
 """ Restores given layout. :param name: Layout name. :type name: unicode :param \*args: Arguments. :type \*args: \* :return: Method success. :rtype: bool """


        layout = self.__layouts.get(name)
        if not layout:
            raise umbra.exceptions.LayoutExistError("{0} | '{1}' layout isn't registered!".format(
                self.__class__.__name__, name))

        LOGGER.debug("> Restoring layout '{0}'.".format(name))

        for component, profile in self.__container.components_manager:
            if profile.category == "QWidget" and component not in self.__container.visible_components:
                interface = self.__container.components_manager.get_interface(component)
                interface and interface.hide()

        self.__current_layout = name
        self.__container.centralWidget().setVisible(
            self.__settings.get_key("Layouts", "{0}_central_widget".format(name)).toBool())
        self.__container.restoreState(
            self.__settings.get_key("Layouts", "{0}_window_state".format(name)).toByteArray())
        self.__restore_geometry_on_layout_change and \
        self.__container.restoreGeometry(
            self.__settings.get_key("Layouts", "{0}_geometry".format(name)).toByteArray())
        self.layout_restored.emit(self.__current_layout)
        return True