Exemplo n.º 1
0
  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 Code-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)))
        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)))
Exemplo n.º 2
0
    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)))
Exemplo n.º 3
0
  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