def mainRender(needsRender, menu, selection): term = Terminal() if needsRender == 1: print(term.clear()) print(term.move_y(term.height // 16)) print(term.black_on_cornsilk4(term.center('IOTstack Homebridg Server Options'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Select Option to configure {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) if needsRender >= 1: renderHotZone(term, menu, selection, hotzoneLocation) if needsRender == 1: print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Controls: {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Up] and [Down] to move selection cursor {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [H] Show/hide this text {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Enter] to run command or save input {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Escape] to go back to build stack menu {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode)))
def mainRender(needsRender, menu, selection): global paginationStartIndex global paginationSize term = Terminal() if selection >= paginationStartIndex + paginationSize: paginationStartIndex = selection - (paginationSize - 1) + 1 needsRender = 1 if selection <= paginationStartIndex - 1: paginationStartIndex = selection needsRender = 1 if needsRender == 1: print(term.clear()) print(term.move_y(term.height // 16)) print(term.black_on_cornsilk4(term.center('IOTstack MariaDB Password Options'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Select Password Option {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) if needsRender >= 1: renderHotZone(term, needsRender, menu, selection, hotzoneLocation) if needsRender == 1: print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: if term.height < 32: print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Not enough vertical room to render controls help text {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) else: print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Controls: {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Space] to select option {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Up] and [Down] to move selection cursor {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [H] Show/hide this text {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Enter] to build and save option {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Escape] to cancel changes {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode)))
def mainRender(needsRender, menu, selection): term = Terminal() if needsRender == 1: print(term.clear()) print(term.move_y(term.height // 16)) print(term.black_on_cornsilk4(term.center('IOTstack Next Cloud Options'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Select Option to configure {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) if needsRender >= 1: renderHotZone(term, menu, selection, hotzoneLocation) if needsRender == 1: print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Controls: {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Up] and [Down] to move selection cursor {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [H] Show/hide this text {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Enter] to run command or save input {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Escape] to go back to build stack menu {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) if len(documentationHint) > 1: if len(documentationHint) > 56: documentationAndPadding = padText(documentationHint, 71) print(term.center("{bv} Documentation: {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} {dap} {bv}".format(bv=specialChars[renderMode]["borderVertical"], dap=documentationAndPadding))) else: documentationAndPadding = padText(documentationHint, 56) print(term.center("{bv} Documentation: {dap} {bv}".format(bv=specialChars[renderMode]["borderVertical"], dap=documentationAndPadding))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode)))
def mainRender(needsRender, menu, selection): term = Terminal() if needsRender == 1: print(term.clear()) print(term.move_y(6 - hotzoneLocation[0])) print( term.black_on_cornsilk4( term.center('IOTstack Miscellaneous Commands'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Select Command to run {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) if needsRender >= 1: renderHotZone(term, menu, selection, hotzoneLocation) if needsRender == 1: print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: if term.height < 30: print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Not enough vertical room to render controls help text {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) else: print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Controls: {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Up] and [Down] to move selection cursor {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [H] Show/hide this text {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Enter] to run command {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Escape] to go back to main menu {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode)))
def mainRender(needsRender, menu, selection): term = Terminal() if needsRender == 1: print(term.clear()) print(term.move_y(term.height // 16)) print( term.black_on_cornsilk4( term.center('IOTstack NodeRed Options'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Select Option to configure {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) if needsRender >= 1: renderHotZone(term, menu, selection, hotzoneLocation) if needsRender == 1: if os.path.exists(serviceService + '/addons_list.yml'): if hasRebuiltAddons: print(term.center(commonEmptyLine(renderMode))) print( term.center( '{bv} {t.grey_on_blue4} {text} {t.normal}{t.white_on_black}{t.normal} {bv}' .format( t=term, text= "Addons list has been rebuilt: addons_list.yml", bv=specialChars[renderMode] ["borderVertical"]))) else: print(term.center(commonEmptyLine(renderMode))) print( term.center( '{bv} {t.grey_on_blue4} {text} {t.normal}{t.white_on_black}{t.normal} {bv}' .format( t=term, text= "Using existing addons_list.yml for addons installation", bv=specialChars[renderMode] ["borderVertical"]))) else: print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Controls: {bv}" .format( bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [Up] and [Down] to move selection cursor {bv}" .format( bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [H] Show/hide this text {bv}" .format( bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [Enter] to run command or save input {bv}" .format( bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [Escape] to go back to build stack menu {bv}" .format( bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) if len(documentationHint) > 1: if len(documentationHint) > 56: documentationAndPadding = padText( documentationHint, 71) print( term.center( "{bv} Documentation: {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center("{bv} {dap} {bv}".format( bv=specialChars[renderMode]["borderVertical"], dap=documentationAndPadding))) else: documentationAndPadding = padText( documentationHint, 56) print( term.center( "{bv} Documentation: {dap} {bv}".format( bv=specialChars[renderMode] ["borderVertical"], dap=documentationAndPadding))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode)))
def mainRender(needsRender, menu, selection): global paginationStartIndex global paginationSize term = Terminal() if selection >= paginationStartIndex + paginationSize: paginationStartIndex = selection - (paginationSize - 1) + 1 needsRender = 1 if selection <= paginationStartIndex - 1: paginationStartIndex = selection needsRender = 1 if needsRender == 1: print(term.clear()) print(term.move_y(term.height // 16)) print( term.black_on_cornsilk4( term.center('IOTstack Node Red Addons'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Select NodeRed Addons (npm) to install on initial run {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) if needsRender >= 1: renderHotZone(term, needsRender, menu, selection, hotzoneLocation) if needsRender == 1: print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: if term.height < 32: print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Not enough vertical room to render controls help text {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) else: print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} Note: After initial startup installation, you must use the Palettes menu {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} in the NodeRed WUI to add or remove addons from NodeRed. {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} Controls: {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Space] to select or deselect addon {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Up] and [Down] to move selection cursor {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Tab] Expand or collapse addon menu size {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [S] Switch between sorted by checked and sorted alphabetically {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [H] Show/hide this text {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Enter] to build and save addons list {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print( term.center( "{bv} [Escape] to cancel changes {bv}" .format(bv=specialChars[renderMode] ["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode)))
def mainRender(menu, selection, renderType = 1): global paginationStartIndex global paginationSize paddingBefore = 4 allIssues = [] if selection >= paginationStartIndex + paginationSize: paginationStartIndex = selection - (paginationSize - 1) + 1 renderType = 1 if selection <= paginationStartIndex - 1: paginationStartIndex = selection renderType = 1 try: if (renderType == 1): checkForOptions() print(term.clear()) print(term.move_y(7 - hotzoneLocation[0])) print(term.black_on_cornsilk4(term.center('IOTstack Build Menu'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Select containers to build {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) renderHotZone(term, renderType, menu, selection, paddingBefore, allIssues) if (renderType == 1): print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: room = term.height - (28 + len(allIssues) + paginationSize) if room < 0: allIssues.append({ "serviceName": "BuildStack Menu", "issues": { "screenSize": 'Not enough scren height to render correctly (t-height = ' + str(term.height) + ' v-lines = ' + str(room) + ')' } }) print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Not enough vertical room to render controls help text ({th}, {rm}) {bv}".format(bv=specialChars[renderMode]["borderVertical"], th=padText(str(term.height), 3), rm=padText(str(room), 3)))) print(term.center(commonEmptyLine(renderMode))) else: print(term.center(commonEmptyLine(renderMode))) print(term.center("{bv} Controls: {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Space] to select or deselect image {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Up] and [Down] to move selection cursor {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Right] for options for containers that support them {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Tab] Expand or collapse build menu size {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [H] Show/hide this text {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) # print(term.center("{bv} [F] Filter options {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Enter] to begin build {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center("{bv} [Escape] to cancel build {bv}".format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode))) if len(allIssues) > 0: print(term.center("")) print(term.center("")) print(term.center("")) print(term.center(("{btl}{bh}{bh}{bh}{bh}{bh}{bh} Build Issues " "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}" "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}" "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}" "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}" "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}" "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}" "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}{bh}" "{bh}{bh}{bh}{bh}{bh}{bh}{bh}{btr}").format( btl=specialChars[renderMode]["borderTopLeft"], btr=specialChars[renderMode]["borderTopRight"], bh=specialChars[renderMode]["borderHorizontal"] ))) print(term.center(commonEmptyLine(renderMode, size = 139))) for serviceIssues in allIssues: for index, issue in enumerate(serviceIssues["issues"]): spacesAndBracketsLen = 5 issueAndTypeLen = len(issue) + len(serviceIssues["serviceName"]) + spacesAndBracketsLen serviceNameAndConflictType = '{t.red_on_black}{issueService}{t.normal} ({t.yellow_on_black}{issueType}{t.normal}) '.format(t=term, issueService=serviceIssues["serviceName"], issueType=issue) formattedServiceNameAndConflictType = generateLineText(str(serviceNameAndConflictType), textLength=issueAndTypeLen, paddingBefore=0, lineLength=32) issueDescription = generateLineText(str(serviceIssues["issues"][issue]), textLength=len(str(serviceIssues["issues"][issue])), paddingBefore=0, lineLength=103) print(term.center("{bv} {nm} - {desc} {bv}".format(nm=formattedServiceNameAndConflictType, desc=issueDescription, bv=specialChars[renderMode]["borderVertical"]) )) print(term.center(commonEmptyLine(renderMode, size = 139))) print(term.center(commonBottomBorder(renderMode, size = 139))) except Exception as err: print("There was an error rendering the menu:") print(err) print("Press [Esc] to go back") return return
def mainRender(menu, selection): term = Terminal() print(term.clear()) print(term.clear()) print(term.move_y(term.height // 16)) print(term.black_on_cornsilk4( term.center('IOTstack Example Commands'))) print("") print(term.center(commonTopBorder(renderMode))) print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Select Command to run {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) lineLengthAtTextStart = 71 for (index, menuItem) in enumerate(menu): toPrint = "" if index == selection: # This checks if the current rendering item is the one that's selected toPrint += ( '{bv} -> {t.blue_on_green} {title} {t.normal} <-'.format( t=term, title=menuItem[0], bv=specialChars[renderMode]["borderVertical"])) else: if len( menu[index] ) > 2 and "customProperty" in menu[index][2] and menu[index][2][ "customProperty"] == True: # A custom property check example toPrint += ( '{bv} {t.black_on_green} {title} {t.normal} '. format(t=term, title=menuItem[0], bv=specialChars[renderMode]["borderVertical"])) else: toPrint += ('{bv} {t.normal} {title} '.format( t=term, title=menuItem[0], bv=specialChars[renderMode]["borderVertical"])) for i in range(lineLengthAtTextStart - len(menuItem[0])): # Pad the remainder of the line toPrint += " " toPrint += "{bv}".format( bv=specialChars[renderMode]["borderVertical"]) toPrint = term.center(toPrint) print(toPrint) print(term.center(commonEmptyLine(renderMode))) if not hideHelpText: print(term.center(commonEmptyLine(renderMode))) print( term.center( "{bv} Controls: {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [Up] and [Down] to move selection cursor {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [H] Show/hide this text {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [Enter] to run command {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print( term.center( "{bv} [Escape] to go back to build stack menu {bv}" .format(bv=specialChars[renderMode]["borderVertical"]))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonEmptyLine(renderMode))) print(term.center(commonBottomBorder(renderMode)))