def logicOperation(name, operator, off):
    bb = createBooleanBlock(off, name)
    bb.addArgumentHolder(createBooleanBlockHolder(off, bb))
    bb.addCodeElement(operator, {
        gettext_noop('and'): 'and_',
        gettext_noop('or'): 'or_'
    })
    bb.addArgumentHolder(createBooleanBlockHolder(off, bb))
    return bb
def delayUntil(off=False):
    sb = createStatementBlock(off, 'delayUntil', 'orange')
    sb.addCodeElement(gettext_noop('espere ate que'))
    sb.addArgumentHolder(createBooleanBlockHolder(off, sb))
    return sb
def boolToStr(off=False):
    sb = createStringBlock(off, 'boolToStr', 'darkblue')
    sb.addCodeElement("converte")
    sb.addArgumentHolder(createBooleanBlockHolder(off, sb))
    return sb
def while_(off=False):
    csb = createCompoundStatementBlock(off, name='while_', loop=True)
    csb.addCodeElement(gettext_noop('while'))
    csb.addArgumentHolder(createBooleanBlockHolder(off, csb))
    return csb
def doWhile(off=False):
    csb = createCompoundStatementBlock(off, name='doWhile', loop=True)
    csb.addCodeElement('faça')
    csb.block.addCodeElement('até')
    csb.block.addArgumentHolder(createBooleanBlockHolder(off, csb))
    return csb
def if_else_(off=False):
    csb = createCompoundStatementBlock(off, 'if_else_', 2)
    csb.addCodeElement(gettext_noop('if  '))
    csb.addArgumentHolder(createBooleanBlockHolder(off, csb))
    csb.block.addCodeElement(gettext_noop('else'))
    return csb
def not_(off=False):
    bb = createBooleanBlock(off, 'not_')
    bb.addCodeElement(gettext_noop('not'))
    bb.addArgumentHolder(createBooleanBlockHolder(off, bb))
    return bb