Esempio n. 1
0
    def __init__(self,
                 menuPairs,
                 finishedCallback,
                 invalidSelectionCallback=None,
                 alphabeticOptions=False):
        """
         menuPairs: [], each element is string or (string, any type)
         finishedCallback: f( clientId, selectedValue )
         invalidSelectionCallback: f( clientId, remaining )
         """
        isList(menuPairs)
        isFunc(finishedCallback)

        if invalidSelectionCallback:
            isFunc(invalidSelectionCallback)
        else:
            invalidSelectionCallback = lambda clientId, remaining: defaultInvalidSelectionCallback(
                clientId, self.menuStr)

        self.menuStr = "{!"
        self.menuMap = CmdMap(invalidSelectionCallback)
        menuIndex = 1

        def finishMenuWithValue(value):
            return lambda clientId, remaining: finishMenu(
                clientId, finishedCallback, value)

        for item in menuPairs:
            if type(item) == str:
                self.menuStr += item + "\r\n"
                continue

            (menuItemDescription, menuItemValue) = item

            optionLabel = ""
            if alphabeticOptions:
                optionLabel = chr(96 + menuIndex)
            else:
                optionLabel = menuIndex

            isStr(menuItemDescription)
            self.menuStr = self.menuStr + " {FC%s{FG) - {FU%s\r\n" % (
                optionLabel, menuItemDescription)
            self.menuMap.addCmd("%s" % optionLabel,
                                finishMenuWithValue(menuItemValue))
            menuIndex += 1

        self.menuStr += "{@"
Esempio n. 2
0
def columnsFromStrings( strs, widths, columnSeparators ):
    columns = []
    
    for s in strs:
        isStr(s)
        columns.append([])
        width = widths.pop(0)
        while( color.lenNoCodes(s) > 0 ):
            newlineIndex = s.find("\r\n")

            if newlineIndex < 0:
                addStringToColumn( columns, width, s, columnSeparators )
                break

            addStringToColumn( columns, width, s[:newlineIndex ], columnSeparators )

            colorState = color.getColorState(s[:newlineIndex])

            s = str(colorState) + s[newlineIndex + 2:]

    return columns
Esempio n. 3
0
    def __init__( self, menuPairs, finishedCallback, invalidSelectionCallback = None, alphabeticOptions = False ):
        """
         menuPairs: [], each element is string or (string, any type)
         finishedCallback: f( clientId, selectedValue )
         invalidSelectionCallback: f( clientId, remaining )
         """
        isList( menuPairs)
        isFunc( finishedCallback)

        if invalidSelectionCallback:
            isFunc( invalidSelectionCallback )
        else:
            invalidSelectionCallback = lambda clientId, remaining: defaultInvalidSelectionCallback( clientId, self.menuStr )

        self.menuStr = "{!"
        self.menuMap = CmdMap( invalidSelectionCallback )
        menuIndex = 1

        def finishMenuWithValue( value ):
            return lambda clientId, remaining: finishMenu( clientId, finishedCallback, value )

        for item in menuPairs:
            if type(item) == str:
                self.menuStr += item + "\r\n"
                continue

            ( menuItemDescription, menuItemValue ) = item

            optionLabel = ""
            if alphabeticOptions:
                optionLabel = chr(96 + menuIndex)
            else:
                optionLabel = menuIndex
                
            isStr( menuItemDescription)
            self.menuStr = self.menuStr + " {FC%s{FG) - {FU%s\r\n" % ( optionLabel, menuItemDescription )
            self.menuMap.addCmd( "%s" % optionLabel, finishMenuWithValue( menuItemValue ) )
            menuIndex += 1

        self.menuStr += "{@"
Esempio n. 4
0
def columnsFromStrings(strs, widths, columnSeparators):
    columns = []

    for s in strs:
        isStr(s)
        columns.append([])
        width = widths.pop(0)
        while (color.lenNoCodes(s) > 0):
            newlineIndex = s.find("\r\n")

            if newlineIndex < 0:
                addStringToColumn(columns, width, s, columnSeparators)
                break

            addStringToColumn(columns, width, s[:newlineIndex],
                              columnSeparators)

            colorState = color.getColorState(s[:newlineIndex])

            s = str(colorState) + s[newlineIndex + 2:]

    return columns