Ejemplo n.º 1
0
def getOneLine( clientId, submitCallback ):
    """
    activates a text input widget for clientId, which returns one line of text

    submitCallback: func( clientId, text )
    """
    
    assert isInt( clientId )
    assert isFunc( submitCallback)

    pushCmdHandler( clientId, CmdMap( lambda x, remaining: _submitText( x, submitCallback, remaining ) ) )
Ejemplo n.º 2
0
    def __init__( self, menuItems, submitCallback, invalidSelectionCallback = "DEFAULT", alphabeticOptions = False ):
        """
        creates a form menu widget, used to contain other menu widgets
        """
        assert isList( menuItems )
        assert isFunc( submitCallback )
        assert isBool( alphabeticOptions )


        # invalidSelectionCallback may be:
        #  "DEFAULT" - an internal hack to bind to self.menu
        #  None      - meaning an invalid selection defers to a later cmdHandler
        #  Func      - a client-supplied invalidSelectionCallback
        if invalidSelectionCallback == "DEFAULT":
           invalidSelectionCallback = lambda clientId, remaining: defaultInvalidSelectionCallback( clientId, self.menu)
        if isDefined( invalidSelectionCallback ):
            assert isFunc( invalidSelectionCallback )
        
        
        assert len(menuItems) > 0

        self.menuItems = menuItems
        self.prompt = "{!{FB<options: "
        self.cmdMap = CmdMap( invalidSelectionCallback )
        self.alphabeticOptions = alphabeticOptions

        menuIndex = 1

        self.cmdMap.addCmd( "f", lambda clientId, remaining: submitCallback( clientId ) )
        self.cmdMap.addCmd( "a", lambda clientId, remaining: submitCallback( clientId, abort=True ) )
        for item in self.menuItems:
            if isString( item ):
                continue

            assert isTuple( item ) # item wasn't tuple or string
            assert len( item ) == 3
            
            ( itemDesc, itemSelectedFunc, itemValueDescFunc ) = item
            
            assert isString( itemDesc )
            assert isFunc( itemSelectedFunc)
            assert isFunc( itemValueDescFunc)

            itemLabel = menuIndex
            if self.alphabeticOptions:
                itemLabel = chr(96 + menuIndex )

            self.cmdMap.addCmd( "%s" % itemLabel, lambda clientId, remaining: itemSelectedFunc( clientId ) )
            self.prompt += "{FC%s{FB, " % itemLabel
            
            menuIndex += 1

        self.prompt += "{FCa{FB, {FCf{FB> " 
Ejemplo n.º 3
0
    def __init__(self,
                 modeName,
                 modeCmd,
                 modeDefaultCallback=None,
                 modeAddDefaultCmds=True):
        assert isString(modeCmd)
        assert isString(modeName)

        if not modeDefaultCallback:
            modeDefaultCallback = lambda clientId, remaining: sendToClient(
                clientId,
                "Invalid %s mode command. ({!{FC!{@ to exit, {!{FCcommands{@ for help)\r\n"
                % self.modeName)

        self.modeCmd = modeCmd
        self.modeName = modeName
        self.modeMap = CmdMap(modeDefaultCallback)

        def enterMode(clientId, remaining):
            pushCmdHandler(clientId, self.modeMap)
            sendToClient(
                clientId,
                "\r\n{!{FG[{FYEntering %s mode{FG] {@({!{FC!{@ to exit)\r\n" %
                self.modeName)
            if modeAddDefaultCmds:
                sendToClient(clientId, self.modeMap.commands())
            sendToClient(clientId, "\r\n")

        def exitMode(clientId, remaining):
            popCmdHandler(clientId)
            sendToClient(clientId,
                         "{!{FG[{FYExiting %s Mode{FG]\r\n" % self.modeName)

        self.enterModeCallback = enterMode

        self.modeMap.addCmd("!", exitMode)
        if modeAddDefaultCmds:
            self.modeMap.addCmd("exit", exitMode)
            self.modeMap.addCmd(
                "commands", lambda clientId, remaining: sendToClient(
                    clientId, self.modeMap.commands()))
Ejemplo n.º 4
0
    def __init__(self,
                 clientId,
                 nameOfEdit,
                 initialText,
                 submitCallback,
                 invalidSelectionCallback="DEFAULT"):
        """
        creates a text editor widget and activates it for clientId, used to input arbitrarily formatted text

        submitCallback: func( clientId, text )
        """

        assert isString(nameOfEdit)
        assert isString(initialText)
        assert isFunc(submitCallback)

        # invalidSelectionCallback may be:
        #  "DEFAULT" - an internal hack to bind to self.menu
        #  None      - meaning an invalid selection defers to a later cmdHandler
        #  Func      - a client-supplied invalidSelectionCallback
        if invalidSelectionCallback == "DEFAULT":
            invalidSelectionCallback = lambda clientId, remaining: _defaultInvalidSelectionCallback(
                clientId, self.menu)
        if isDefined(invalidSelectionCallback):
            assert isFunc(invalidSelectionCallback)

        self.text = initialText
        self.submitCallback = submitCallback
        self.menu = endl + "{!{FYEditing %s" % nameOfEdit + endl
        self.cmdMap = CmdMap(invalidSelectionCallback)

        _addDisplay(self)
        _addFinish(self)

        self.menu += endl

        _activate(clientId, self)
Ejemplo n.º 5
0
from pydispatch import dispatcher
from mud.parser.cmdMap import CmdMap
from cmds import pushCmdHandler
from send import sendToClient
import signals

def invalidCmd( clientId, remaining ):
    sendToClient( clientId, "Invalid command. ({!{FCcommands{@ for help)\r\n")

rootCmdMap = CmdMap( invalidCmd )
rootCmdMap.addCmd("commands", lambda clientId, remaining: sendToClient( clientId, rootCmdMap.commands() ) )

def addRootMap( clientId ):
    pushCmdHandler( clientId, rootCmdMap )

signals.connect( addRootMap, signals.CONNECTED )