def modulo_(off=False):
    nb = createNumberBlock(off, 'modulo_', 'darkblue')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement('resto da divisão  por')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    return nb
def binaryFunction(name, operator, off):
    nb = createNumberBlock(off, name, 'darkblue')
    nb.addCodeElement(operator, {'máx': 'max_', 'mín': 'min_'})
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    return nb
def random_min_max(off=False):
    sb = createNumberBlock(off, 'random_min_max', 'darkblue')
    sb.addCodeElement('aleatorio')
    sb.addCodeElement('<i>min</i>')
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    sb.addCodeElement()
    sb.addCodeElement('<i>max</i>')
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def constrains_(off=False):
    nb = createNumberBlock(off, 'constrains_', 'darkblue')
    nb.addCodeElement('restringe')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement('entre')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement('e')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    return nb
def blinkLed(off=False):
    sb = createStatementBlock(off, 'blinkLed')
    sb.addCodeElement('pisca')
    sb.addVariableElement('led', countComponents, 'component_led')
    sb.addCodeElement()
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    sb.addCodeElement('vezes em')
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    sb.addCodeElement('s')
    return sb
def setRGBLed(off=False):
    sb = createStatementBlock(off, 'setRGBLed')
    sb.addCodeElement(gettext_noop('set'))
    sb.addVariableElement('led rgb', countComponents, 'component_rgb_led')
    sb.addCodeElement(gettext_noop('R'))
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    sb.addCodeElement(gettext_noop('G'))
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    sb.addCodeElement(gettext_noop('B'))
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def map_(off=False):
    nb = createNumberBlock(off, 'map_', 'darkblue')
    nb.addCodeElement('mapeie [')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement(',')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement('] para [')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement(',')
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement(']')
    return nb
def relationalOperation(name, operator, off):
    bb = createBooleanBlock(off, name)
    bb.addArgumentHolder(createNumberBlockHolder(off, bb))
    bb.addCodeElement(
        operator, {
            '=': 'equals',
            '<': 'lesser',
            '>': 'greater',
            '&le;': 'lesser_equals',
            '&ge;': 'greater_equals',
            '&ne;': 'not_equals'
        })
    bb.addArgumentHolder(createNumberBlockHolder(off, bb))
    return bb
def numericOperation(name, operator, off):
    nb = createNumberBlock(off, name)
    nb.addCodeElement()
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement(
        operator, {
            '+': 'plus',
            '&minus;': 'minus',
            '&times;': 'multiply',
            '&divide;': 'divide'
        })
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    return nb
def analogWrite(off=False):
    sb = createStatementBlock(off, 'analogWrite')
    sb.addCodeElement(gettext_noop('set analog pin'))
    sb.addArgumentHolder(createDropdownNumberBlockHolder(off, PWM_PINS, sb))
    sb.addCodeElement(gettext_noop('value'))
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def map2_(off=False):
    nb = createNumberBlock(off, 'map2_', 'darkblue')
    nb.addCodeElement('mapeie [0, 1024] para [0, 255]')
    nb.addCodeElement()
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    return nb
def decNumericVar(off=False):
    sb = createStatementBlock(off, 'decNumericVar', 'red')
    sb.addCodeElement('decrementa')
    sb.addVariableElement(TITLE_NUMERIC_VAR, numericVars)
    sb.addCodeElement('de')
    sb.addCodeElement()
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def setBrightnessLed(off=False):
    sb = createStatementBlock(off, 'setBrightnessLed')
    sb.addCodeElement(gettext_noop('set'))
    sb.addVariableElement('led', countComponents, 'component_led')
    sb.addCodeElement('brilho')
    sb.addCodeElement()
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def setServo(off=False):
    sb = createStatementBlock(off, 'setServo')
    sb.addCodeElement(gettext_noop('set'))
    sb.addVariableElement('servo', countComponents, 'component_servo')
    sb.addCodeElement(gettext_noop('angle'))
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    sb.addCodeElement('&deg;')
    return sb
def speedMotor(off=False):
    sb = createStatementBlock(off, 'speedMotor')
    sb.addCodeElement(gettext_noop('speed'))
    sb.addCodeElement()
    sb.addVariableElement('motor', countComponents, 'component_motor')
    sb.addCodeElement()
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def setBuzzer(off=False):
    sb = createStatementBlock(off, 'setBuzzer')
    sb.addCodeElement(gettext_noop('play'))
    sb.addVariableElement('buzina', countComponents, 'component_buzzer')
    sb.addCodeElement('<i>' + gettext_noop('note') + '</i>')
    sb.addArgumentHolder(
        createDropdownNumberBlockHolder(off, MANY_FEW_NOTES, sb))
    sb.addCodeElement('<i>' + gettext_noop('duration') + '</i>')
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def unaryFunction(name, operator, off):
    nb = createNumberBlock(off, name, 'darkblue')
    nb.addCodeElement(operator, {
        '&radic;': 'sqrt_',
        'abs': 'abs_',
        'arredonde': 'round_'
    })
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    return nb
def delay_(off=False):
    sb = createStatementBlock(off, 'delay_', 'orange')
    sb.addCodeElement(gettext_noop('delay'))
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    sb.addCodeElement('ms')
    return sb
def intToStr(off=False):
    sb = createStringBlock(off, 'intToStr', 'darkblue')
    sb.addCodeElement("converte")
    sb.addArgumentHolder(createNumberBlockHolder(off, sb))
    return sb
def repeat_(off=False):
    csb = createCompoundStatementBlock(off, 'repeat_', loop=True)
    csb.addCodeElement(gettext_noop('repeat'))
    csb.addArgumentHolder(createNumberBlockHolder(off, csb))
    return csb
def trigonometryFunction(name, operator, off):
    nb = createNumberBlock(off, name, 'darkblue')
    nb.addCodeElement(operator, {'sen': 'sin_', 'cos': 'cos_', 'tan': 'tan_'})
    nb.addArgumentHolder(createNumberBlockHolder(off, nb))
    nb.addCodeElement()
    return nb