# coding: utf-8

"""
    Emby Server REST API (BETA)
"""

import pprint
import re  # noqa: F401

import six

class UIViewInfo(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'view_id': 'str',
        'page_id': 'str',
        'caption': 'str',
        'sub_caption': 'str',
        'plugin_id': 'str',
        'view_type': 'EnumsUIViewType',
        'show_dialog_full_screen': 'bool',
        'is_in_sequence': 'bool',
        'redirect_view_url': 'str',
        'edit_object_container': 'GenericEditIEditObjectContainer',
        'commands': 'list[UICommand]',
        'tab_page_infos': 'list[UITabPageInfo]',
        'is_page_change_info': 'bool'
    }

    attribute_map = {
        'view_id': 'ViewId',
        'page_id': 'PageId',
        'caption': 'Caption',
        'sub_caption': 'SubCaption',
        'plugin_id': 'PluginId',
        'view_type': 'ViewType',
        'show_dialog_full_screen': 'ShowDialogFullScreen',
        'is_in_sequence': 'IsInSequence',
        'redirect_view_url': 'RedirectViewUrl',
        'edit_object_container': 'EditObjectContainer',
        'commands': 'Commands',
        'tab_page_infos': 'TabPageInfos',
        'is_page_change_info': 'IsPageChangeInfo'
    }

    def __init__(self, view_id=None, page_id=None, caption=None, sub_caption=None, plugin_id=None, view_type=None, show_dialog_full_screen=None, is_in_sequence=None, redirect_view_url=None, edit_object_container=None, commands=None, tab_page_infos=None, is_page_change_info=None):  # noqa: E501
        """UIViewInfo - a model defined in Swagger"""  # noqa: E501
        self._view_id = None
        self._page_id = None
        self._caption = None
        self._sub_caption = None
        self._plugin_id = None
        self._view_type = None
        self._show_dialog_full_screen = None
        self._is_in_sequence = None
        self._redirect_view_url = None
        self._edit_object_container = None
        self._commands = None
        self._tab_page_infos = None
        self._is_page_change_info = None
        self.discriminator = None
        if view_id is not None:
            self.view_id = view_id
        if page_id is not None:
            self.page_id = page_id
        if caption is not None:
            self.caption = caption
        if sub_caption is not None:
            self.sub_caption = sub_caption
        if plugin_id is not None:
            self.plugin_id = plugin_id
        if view_type is not None:
            self.view_type = view_type
        if show_dialog_full_screen is not None:
            self.show_dialog_full_screen = show_dialog_full_screen
        if is_in_sequence is not None:
            self.is_in_sequence = is_in_sequence
        if redirect_view_url is not None:
            self.redirect_view_url = redirect_view_url
        if edit_object_container is not None:
            self.edit_object_container = edit_object_container
        if commands is not None:
            self.commands = commands
        if tab_page_infos is not None:
            self.tab_page_infos = tab_page_infos
        if is_page_change_info is not None:
            self.is_page_change_info = is_page_change_info

    @property
    def view_id(self):
        """Gets the view_id of this UIViewInfo.  # noqa: E501


        :return: The view_id of this UIViewInfo.  # noqa: E501
        :rtype: str
        """
        return self._view_id

    @view_id.setter
    def view_id(self, view_id):
        """Sets the view_id of this UIViewInfo.


        :param view_id: The view_id of this UIViewInfo.  # noqa: E501
        :type: str
        """

        self._view_id = view_id

    @property
    def page_id(self):
        """Gets the page_id of this UIViewInfo.  # noqa: E501


        :return: The page_id of this UIViewInfo.  # noqa: E501
        :rtype: str
        """
        return self._page_id

    @page_id.setter
    def page_id(self, page_id):
        """Sets the page_id of this UIViewInfo.


        :param page_id: The page_id of this UIViewInfo.  # noqa: E501
        :type: str
        """

        self._page_id = page_id

    @property
    def caption(self):
        """Gets the caption of this UIViewInfo.  # noqa: E501


        :return: The caption of this UIViewInfo.  # noqa: E501
        :rtype: str
        """
        return self._caption

    @caption.setter
    def caption(self, caption):
        """Sets the caption of this UIViewInfo.


        :param caption: The caption of this UIViewInfo.  # noqa: E501
        :type: str
        """

        self._caption = caption

    @property
    def sub_caption(self):
        """Gets the sub_caption of this UIViewInfo.  # noqa: E501


        :return: The sub_caption of this UIViewInfo.  # noqa: E501
        :rtype: str
        """
        return self._sub_caption

    @sub_caption.setter
    def sub_caption(self, sub_caption):
        """Sets the sub_caption of this UIViewInfo.


        :param sub_caption: The sub_caption of this UIViewInfo.  # noqa: E501
        :type: str
        """

        self._sub_caption = sub_caption

    @property
    def plugin_id(self):
        """Gets the plugin_id of this UIViewInfo.  # noqa: E501


        :return: The plugin_id of this UIViewInfo.  # noqa: E501
        :rtype: str
        """
        return self._plugin_id

    @plugin_id.setter
    def plugin_id(self, plugin_id):
        """Sets the plugin_id of this UIViewInfo.


        :param plugin_id: The plugin_id of this UIViewInfo.  # noqa: E501
        :type: str
        """

        self._plugin_id = plugin_id

    @property
    def view_type(self):
        """Gets the view_type of this UIViewInfo.  # noqa: E501


        :return: The view_type of this UIViewInfo.  # noqa: E501
        :rtype: EnumsUIViewType
        """
        return self._view_type

    @view_type.setter
    def view_type(self, view_type):
        """Sets the view_type of this UIViewInfo.


        :param view_type: The view_type of this UIViewInfo.  # noqa: E501
        :type: EnumsUIViewType
        """

        self._view_type = view_type

    @property
    def show_dialog_full_screen(self):
        """Gets the show_dialog_full_screen of this UIViewInfo.  # noqa: E501


        :return: The show_dialog_full_screen of this UIViewInfo.  # noqa: E501
        :rtype: bool
        """
        return self._show_dialog_full_screen

    @show_dialog_full_screen.setter
    def show_dialog_full_screen(self, show_dialog_full_screen):
        """Sets the show_dialog_full_screen of this UIViewInfo.


        :param show_dialog_full_screen: The show_dialog_full_screen of this UIViewInfo.  # noqa: E501
        :type: bool
        """

        self._show_dialog_full_screen = show_dialog_full_screen

    @property
    def is_in_sequence(self):
        """Gets the is_in_sequence of this UIViewInfo.  # noqa: E501


        :return: The is_in_sequence of this UIViewInfo.  # noqa: E501
        :rtype: bool
        """
        return self._is_in_sequence

    @is_in_sequence.setter
    def is_in_sequence(self, is_in_sequence):
        """Sets the is_in_sequence of this UIViewInfo.


        :param is_in_sequence: The is_in_sequence of this UIViewInfo.  # noqa: E501
        :type: bool
        """

        self._is_in_sequence = is_in_sequence

    @property
    def redirect_view_url(self):
        """Gets the redirect_view_url of this UIViewInfo.  # noqa: E501


        :return: The redirect_view_url of this UIViewInfo.  # noqa: E501
        :rtype: str
        """
        return self._redirect_view_url

    @redirect_view_url.setter
    def redirect_view_url(self, redirect_view_url):
        """Sets the redirect_view_url of this UIViewInfo.


        :param redirect_view_url: The redirect_view_url of this UIViewInfo.  # noqa: E501
        :type: str
        """

        self._redirect_view_url = redirect_view_url

    @property
    def edit_object_container(self):
        """Gets the edit_object_container of this UIViewInfo.  # noqa: E501


        :return: The edit_object_container of this UIViewInfo.  # noqa: E501
        :rtype: GenericEditIEditObjectContainer
        """
        return self._edit_object_container

    @edit_object_container.setter
    def edit_object_container(self, edit_object_container):
        """Sets the edit_object_container of this UIViewInfo.


        :param edit_object_container: The edit_object_container of this UIViewInfo.  # noqa: E501
        :type: GenericEditIEditObjectContainer
        """

        self._edit_object_container = edit_object_container

    @property
    def commands(self):
        """Gets the commands of this UIViewInfo.  # noqa: E501


        :return: The commands of this UIViewInfo.  # noqa: E501
        :rtype: list[UICommand]
        """
        return self._commands

    @commands.setter
    def commands(self, commands):
        """Sets the commands of this UIViewInfo.


        :param commands: The commands of this UIViewInfo.  # noqa: E501
        :type: list[UICommand]
        """

        self._commands = commands

    @property
    def tab_page_infos(self):
        """Gets the tab_page_infos of this UIViewInfo.  # noqa: E501


        :return: The tab_page_infos of this UIViewInfo.  # noqa: E501
        :rtype: list[UITabPageInfo]
        """
        return self._tab_page_infos

    @tab_page_infos.setter
    def tab_page_infos(self, tab_page_infos):
        """Sets the tab_page_infos of this UIViewInfo.


        :param tab_page_infos: The tab_page_infos of this UIViewInfo.  # noqa: E501
        :type: list[UITabPageInfo]
        """

        self._tab_page_infos = tab_page_infos

    @property
    def is_page_change_info(self):
        """Gets the is_page_change_info of this UIViewInfo.  # noqa: E501


        :return: The is_page_change_info of this UIViewInfo.  # noqa: E501
        :rtype: bool
        """
        return self._is_page_change_info

    @is_page_change_info.setter
    def is_page_change_info(self, is_page_change_info):
        """Sets the is_page_change_info of this UIViewInfo.


        :param is_page_change_info: The is_page_change_info of this UIViewInfo.  # noqa: E501
        :type: bool
        """

        self._is_page_change_info = is_page_change_info

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(UIViewInfo, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, UIViewInfo):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
