# coding: utf-8

"""
    Maestro API

    Maestro authors and executes experiences that allow non-coders the ability to define Simple Business Process without having to write code and to deploy them seamlessly without having to have development expertise  # noqa: E501

    OpenAPI spec version: 1.0.0
    Contact: devcenter@docusign.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from docusign_maestro.client.configuration import Configuration


class ESignTabs(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 = {
        'anchor_string': 'str',
        'bold': 'str',
        'document_id': 'str',
        'font': 'str',
        'font_color': 'str',
        'font_size': 'str',
        'height': 'str',
        'italic': 'str',
        'locale_policy': 'dict(str, object)',
        'name': 'str',
        'optional': 'str',
        'page_number': 'str',
        'recipient_id': 'str',
        'scale_value': 'str',
        'stamp_type': 'str',
        'tab_id': 'str',
        'tab_label': 'str',
        'tab_type': 'str',
        'template_locked': 'str',
        'template_required': 'str',
        'tooltip': 'str',
        'underline': 'str',
        'value': 'object',
        'width': 'str',
        'x_position': 'str',
        'y_position': 'str'
    }

    attribute_map = {
        'anchor_string': 'anchorString',
        'bold': 'bold',
        'document_id': 'documentId',
        'font': 'font',
        'font_color': 'fontColor',
        'font_size': 'fontSize',
        'height': 'height',
        'italic': 'italic',
        'locale_policy': 'localePolicy',
        'name': 'name',
        'optional': 'optional',
        'page_number': 'pageNumber',
        'recipient_id': 'recipientId',
        'scale_value': 'scaleValue',
        'stamp_type': 'stampType',
        'tab_id': 'tabId',
        'tab_label': 'tabLabel',
        'tab_type': 'tabType',
        'template_locked': 'templateLocked',
        'template_required': 'templateRequired',
        'tooltip': 'tooltip',
        'underline': 'underline',
        'value': 'value',
        'width': 'width',
        'x_position': 'xPosition',
        'y_position': 'yPosition'
    }

    def __init__(self, _configuration=None, **kwargs):  # noqa: E501
        """ESignTabs - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._anchor_string = None
        self._bold = None
        self._document_id = None
        self._font = None
        self._font_color = None
        self._font_size = None
        self._height = None
        self._italic = None
        self._locale_policy = None
        self._name = None
        self._optional = None
        self._page_number = None
        self._recipient_id = None
        self._scale_value = None
        self._stamp_type = None
        self._tab_id = None
        self._tab_label = None
        self._tab_type = None
        self._template_locked = None
        self._template_required = None
        self._tooltip = None
        self._underline = None
        self._value = None
        self._width = None
        self._x_position = None
        self._y_position = None
        self.discriminator = None

        setattr(self, "_{}".format('anchor_string'), kwargs.get('anchor_string', None))
        setattr(self, "_{}".format('bold'), kwargs.get('bold', None))
        setattr(self, "_{}".format('document_id'), kwargs.get('document_id', None))
        setattr(self, "_{}".format('font'), kwargs.get('font', None))
        setattr(self, "_{}".format('font_color'), kwargs.get('font_color', None))
        setattr(self, "_{}".format('font_size'), kwargs.get('font_size', None))
        setattr(self, "_{}".format('height'), kwargs.get('height', None))
        setattr(self, "_{}".format('italic'), kwargs.get('italic', None))
        setattr(self, "_{}".format('locale_policy'), kwargs.get('locale_policy', None))
        setattr(self, "_{}".format('name'), kwargs.get('name', None))
        setattr(self, "_{}".format('optional'), kwargs.get('optional', None))
        setattr(self, "_{}".format('page_number'), kwargs.get('page_number', None))
        setattr(self, "_{}".format('recipient_id'), kwargs.get('recipient_id', None))
        setattr(self, "_{}".format('scale_value'), kwargs.get('scale_value', None))
        setattr(self, "_{}".format('stamp_type'), kwargs.get('stamp_type', None))
        setattr(self, "_{}".format('tab_id'), kwargs.get('tab_id', None))
        setattr(self, "_{}".format('tab_label'), kwargs.get('tab_label', None))
        setattr(self, "_{}".format('tab_type'), kwargs.get('tab_type', None))
        setattr(self, "_{}".format('template_locked'), kwargs.get('template_locked', None))
        setattr(self, "_{}".format('template_required'), kwargs.get('template_required', None))
        setattr(self, "_{}".format('tooltip'), kwargs.get('tooltip', None))
        setattr(self, "_{}".format('underline'), kwargs.get('underline', None))
        setattr(self, "_{}".format('value'), kwargs.get('value', None))
        setattr(self, "_{}".format('width'), kwargs.get('width', None))
        setattr(self, "_{}".format('x_position'), kwargs.get('x_position', None))
        setattr(self, "_{}".format('y_position'), kwargs.get('y_position', None))

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


        :return: The anchor_string of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._anchor_string

    @anchor_string.setter
    def anchor_string(self, anchor_string):
        """Sets the anchor_string of this ESignTabs.


        :param anchor_string: The anchor_string of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._anchor_string = anchor_string

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


        :return: The bold of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._bold

    @bold.setter
    def bold(self, bold):
        """Sets the bold of this ESignTabs.


        :param bold: The bold of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._bold = bold

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


        :return: The document_id of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._document_id

    @document_id.setter
    def document_id(self, document_id):
        """Sets the document_id of this ESignTabs.


        :param document_id: The document_id of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._document_id = document_id

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


        :return: The font of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._font

    @font.setter
    def font(self, font):
        """Sets the font of this ESignTabs.


        :param font: The font of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._font = font

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


        :return: The font_color of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._font_color

    @font_color.setter
    def font_color(self, font_color):
        """Sets the font_color of this ESignTabs.


        :param font_color: The font_color of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._font_color = font_color

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


        :return: The font_size of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._font_size

    @font_size.setter
    def font_size(self, font_size):
        """Sets the font_size of this ESignTabs.


        :param font_size: The font_size of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._font_size = font_size

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


        :return: The height of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._height

    @height.setter
    def height(self, height):
        """Sets the height of this ESignTabs.


        :param height: The height of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._height = height

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


        :return: The italic of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._italic

    @italic.setter
    def italic(self, italic):
        """Sets the italic of this ESignTabs.


        :param italic: The italic of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._italic = italic

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


        :return: The locale_policy of this ESignTabs.  # noqa: E501
        :rtype: dict(str, object)
        """
        return self._locale_policy

    @locale_policy.setter
    def locale_policy(self, locale_policy):
        """Sets the locale_policy of this ESignTabs.


        :param locale_policy: The locale_policy of this ESignTabs.  # noqa: E501
        :type: dict(str, object)
        """

        self._locale_policy = locale_policy

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


        :return: The name of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this ESignTabs.


        :param name: The name of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._name = name

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


        :return: The optional of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._optional

    @optional.setter
    def optional(self, optional):
        """Sets the optional of this ESignTabs.


        :param optional: The optional of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._optional = optional

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


        :return: The page_number of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._page_number

    @page_number.setter
    def page_number(self, page_number):
        """Sets the page_number of this ESignTabs.


        :param page_number: The page_number of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._page_number = page_number

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


        :return: The recipient_id of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._recipient_id

    @recipient_id.setter
    def recipient_id(self, recipient_id):
        """Sets the recipient_id of this ESignTabs.


        :param recipient_id: The recipient_id of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._recipient_id = recipient_id

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


        :return: The scale_value of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._scale_value

    @scale_value.setter
    def scale_value(self, scale_value):
        """Sets the scale_value of this ESignTabs.


        :param scale_value: The scale_value of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._scale_value = scale_value

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


        :return: The stamp_type of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._stamp_type

    @stamp_type.setter
    def stamp_type(self, stamp_type):
        """Sets the stamp_type of this ESignTabs.


        :param stamp_type: The stamp_type of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._stamp_type = stamp_type

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


        :return: The tab_id of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._tab_id

    @tab_id.setter
    def tab_id(self, tab_id):
        """Sets the tab_id of this ESignTabs.


        :param tab_id: The tab_id of this ESignTabs.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and tab_id is None:
            raise ValueError("Invalid value for `tab_id`, must not be `None`")  # noqa: E501

        self._tab_id = tab_id

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


        :return: The tab_label of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._tab_label

    @tab_label.setter
    def tab_label(self, tab_label):
        """Sets the tab_label of this ESignTabs.


        :param tab_label: The tab_label of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._tab_label = tab_label

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


        :return: The tab_type of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._tab_type

    @tab_type.setter
    def tab_type(self, tab_type):
        """Sets the tab_type of this ESignTabs.


        :param tab_type: The tab_type of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._tab_type = tab_type

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


        :return: The template_locked of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._template_locked

    @template_locked.setter
    def template_locked(self, template_locked):
        """Sets the template_locked of this ESignTabs.


        :param template_locked: The template_locked of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._template_locked = template_locked

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


        :return: The template_required of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._template_required

    @template_required.setter
    def template_required(self, template_required):
        """Sets the template_required of this ESignTabs.


        :param template_required: The template_required of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._template_required = template_required

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


        :return: The tooltip of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._tooltip

    @tooltip.setter
    def tooltip(self, tooltip):
        """Sets the tooltip of this ESignTabs.


        :param tooltip: The tooltip of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._tooltip = tooltip

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


        :return: The underline of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._underline

    @underline.setter
    def underline(self, underline):
        """Sets the underline of this ESignTabs.


        :param underline: The underline of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._underline = underline

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

        Reference of #/definitions/StringOrVariableOrTransformation. Object stands for a String or a Variable or a Transformation. This object should be any of the following object models or types: [string, #/definitions/DSWorkflowVariable, #/definitions/DSWorkflowTransformationExpression]  # noqa: E501

        :return: The value of this ESignTabs.  # noqa: E501
        :rtype: object
        """
        return self._value

    @value.setter
    def value(self, value):
        """Sets the value of this ESignTabs.

        Reference of #/definitions/StringOrVariableOrTransformation. Object stands for a String or a Variable or a Transformation. This object should be any of the following object models or types: [string, #/definitions/DSWorkflowVariable, #/definitions/DSWorkflowTransformationExpression]  # noqa: E501

        :param value: The value of this ESignTabs.  # noqa: E501
        :type: object
        """

        self._value = value

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


        :return: The width of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._width

    @width.setter
    def width(self, width):
        """Sets the width of this ESignTabs.


        :param width: The width of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._width = width

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


        :return: The x_position of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._x_position

    @x_position.setter
    def x_position(self, x_position):
        """Sets the x_position of this ESignTabs.


        :param x_position: The x_position of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._x_position = x_position

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


        :return: The y_position of this ESignTabs.  # noqa: E501
        :rtype: str
        """
        return self._y_position

    @y_position.setter
    def y_position(self, y_position):
        """Sets the y_position of this ESignTabs.


        :param y_position: The y_position of this ESignTabs.  # noqa: E501
        :type: str
        """

        self._y_position = y_position

    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(ESignTabs, 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, ESignTabs):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
