Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 11, 2009, 5:24:32 PM (14 years ago)
Author:
dafrick
Message:

Improved KeyBindMenu further. This is the final version for the presentation, unless there are some complaints.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation2/data/gui/scripts/KeyBindMenu.lua

    r6311 r6324  
    5656
    5757    lineHeight = 35
     58    commandWidth = 200
    5859    buttonWidth = 170
    5960    clearWidth = 20
    60    
     61    spaceWidth = 10
     62   
     63    P.createLines()
     64   
     65    local funct = luaState:createLuaFunctor("KeyBindMenu.callback()")
     66    orxonox.KeyBinderManager:getInstance():registerKeybindCallback(funct)
     67end
     68
     69
     70function P.KeyNameNiceifier(key)
     71    local name = string.sub(key, string.find(key, '%.(.*)')+1)
     72    local group = string.sub(key, string.find(key, '(.*)%.'))
     73    group = string.sub(group,1,string.len(group)-1)
     74    if( group == "Keys") then
     75        return "Key " .. string.sub(name, string.find(name, 'Key(.*)')+3)
     76    elseif( group == "MouseButtons") then
     77        return "Mouse " .. name
     78    end
     79    return key
     80end
     81
     82function P.createLine(k)
     83    local offset = 0
     84    local line = winMgr:createWindow("DefaultWindow", "orxonox/KeyBindPane/Binding" .. k)
     85    line:setHeight(CEGUI.UDim(0, lineHeight))
     86    line:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, lineHeight*(k-1))))
     87   
     88    local command = winMgr:createWindow("TaharezLook/StaticText", "orxonox/KeyBindPane/Binding" .. k .. "/Command")
     89    command:setSize(CEGUI.UVector2(CEGUI.UDim(0, commandWidth), CEGUI.UDim(0.9, 0)))
     90    command:setPosition(CEGUI.UVector2(CEGUI.UDim(0, offset), CEGUI.UDim(0.05, 0)))
     91    command:setText(nameList[k])
     92    line:addChildWindow(command)
     93    offset = offset + commandWidth + spaceWidth
     94   
     95    local plus = winMgr:createWindow("TaharezLook/TabButton", "orxonox/KeyBindPane/Binding" .. k .. "/Plus")
     96    plus:setSize(CEGUI.UVector2(CEGUI.UDim(0, clearWidth), CEGUI.UDim(0.7, 0)))
     97    plus:setPosition(CEGUI.UVector2(CEGUI.UDim(0, offset), CEGUI.UDim(0.15, 0)))
     98    plus:setText("+")
     99    orxonox.KeyBinderManager:getInstance():subscribeEventHelper(plus, "Clicked", P.filename .. ".KeyBindPlus_clicked")
     100    line:addChildWindow(plus)
     101    offset = offset + clearWidth + spaceWidth
     102   
     103    local numButtons = orxonox.KeyBinderManager:getInstance():getCurrent():getNumberOfBindings(commandList[k]);
     104    for i=0,(numButtons-1) do
     105        local button = winMgr:createWindow("TaharezLook/TabButton", "orxonox/KeyBindPane/Binding" .. k .. "/Button" .. i)
     106        button:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0.7, 0)))
     107        button:setPosition(CEGUI.UVector2(CEGUI.UDim(0, offset), CEGUI.UDim(0.15, 0)))
     108        local name = orxonox.KeyBinderManager:getInstance():getCurrent():getBinding(commandList[k],i)
     109        name = P.KeyNameNiceifier(name)
     110        button:setText(name)
     111        orxonox.KeyBinderManager:getInstance():subscribeEventHelper(button, "Clicked", P.filename .. ".KeyBindButton_clicked")
     112        --button:subscribeScriptedEvent("EventClicked", P.filename .. ".KeyBindButton_clicked")
     113        line:addChildWindow(button)
     114        offset = offset + buttonWidth
     115       
     116        local clear = winMgr:createWindow("TaharezLook/TabButton", "orxonox/KeyBindPane/Binding" .. k .. "/Clear" .. i)
     117        clear:setSize(CEGUI.UVector2(CEGUI.UDim(0, clearWidth), CEGUI.UDim(0.7, 0)))
     118        clear:setPosition(CEGUI.UVector2(CEGUI.UDim(0, (i*(buttonWidth+clearWidth+spaceWidth)+buttonWidth)+commandWidth+clearWidth+2*spaceWidth), CEGUI.UDim(0.15, 0)))
     119        clear:setText("X")
     120        orxonox.KeyBinderManager:getInstance():subscribeEventHelper(clear, "Clicked", P.filename .. ".KeyBindClear_clicked")
     121        line:addChildWindow(clear)
     122        offset = offset + clearWidth + spaceWidth
     123    end
     124   
     125    line:setWidth(CEGUI.UDim(0, offset+clearWidth))
     126   
     127    return line
     128end
     129
     130function P.createLines()
     131
    61132    local window = winMgr:getWindow("orxonox/KeyBindPane")
    62133
     
    66137        window:addChildWindow(line)
    67138    end
    68    
    69     local funct = luaState:createLuaFunctor("KeyBindMenu.callback()")
    70     orxonox.KeyBinderManager:getInstance():registerKeybindCallback(funct)
    71 end
    72 
    73 function P.createLine(k)
    74     local line = winMgr:createWindow("DefaultWindow", "orxonox/KeyBindPane/Binding" .. k)
    75     line:setHeight(CEGUI.UDim(0, lineHeight))
    76     line:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, lineHeight*(k-1))))
    77    
    78     local command = winMgr:createWindow("TaharezLook/StaticText", "orxonox/KeyBindPane/Binding" .. k .. "/Command")
    79     command:setSize(CEGUI.UVector2(CEGUI.UDim(0, 200), CEGUI.UDim(1, 0)))
    80     command:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 0), CEGUI.UDim(0, 0)))
    81     command:setText(nameList[k])
    82     line:addChildWindow(command)
    83    
    84     local plus = winMgr:createWindow("TaharezLook/TabButton", "orxonox/KeyBindPane/Binding" .. k .. "/Plus")
    85     plus:setSize(CEGUI.UVector2(CEGUI.UDim(0, clearWidth), CEGUI.UDim(1, 0)))
    86     plus:setPosition(CEGUI.UVector2(CEGUI.UDim(0, 200), CEGUI.UDim(0, 0)))
    87     plus:setText("+")
    88     orxonox.KeyBinderManager:getInstance():subscribeEventHelper(plus, "Clicked", P.filename .. ".KeyBindPlus_clicked")
    89     line:addChildWindow(plus)
    90    
    91     numButtons = orxonox.KeyBinderManager:getInstance():getCurrent():getNumberOfBindings(commandList[k]);
    92     for i=0,(numButtons-1) do
    93         local button = winMgr:createWindow("TaharezLook/TabButton", "orxonox/KeyBindPane/Binding" .. k .. "/Button" .. i)
    94         button:setSize(CEGUI.UVector2(CEGUI.UDim(0, buttonWidth), CEGUI.UDim(0.8, 0)))
    95         button:setPosition(CEGUI.UVector2(CEGUI.UDim(0, (i*(buttonWidth+clearWidth))+200+clearWidth), CEGUI.UDim(0.1, 0)))
    96         button:setText(orxonox.KeyBinderManager:getInstance():getCurrent():getBinding(commandList[k],i))
    97         orxonox.KeyBinderManager:getInstance():subscribeEventHelper(button, "Clicked", P.filename .. ".KeyBindButton_clicked")
    98         --button:subscribeScriptedEvent("EventClicked", P.filename .. ".KeyBindButton_clicked")
    99         line:addChildWindow(button)
    100        
    101         local clear = winMgr:createWindow("TaharezLook/TabButton", "orxonox/KeyBindPane/Binding" .. k .. "/Clear" .. i)
    102         clear:setSize(CEGUI.UVector2(CEGUI.UDim(0, clearWidth), CEGUI.UDim(0.8, 0)))
    103         clear:setPosition(CEGUI.UVector2(CEGUI.UDim(0, (i*(buttonWidth+clearWidth)+buttonWidth)+200+clearWidth), CEGUI.UDim(0.1, 0)))
    104         clear:setText("X")
    105         orxonox.KeyBinderManager:getInstance():subscribeEventHelper(clear, "Clicked", P.filename .. ".KeyBindClear_clicked")
    106         line:addChildWindow(clear)
    107     end
    108    
    109     line:setWidth(CEGUI.UDim(0, 200+numButtons*(buttonWidth+clearWidth)+clearWidth))
    110    
    111     return line
     139
    112140end
    113141
     
    170198    linesList = {}
    171199
    172     window = winMgr:getWindow("orxonox/KeyBindPane")
    173     for q,w in pairs(commandList) do
    174         local line = P.createLine(q)
    175         table.insert(linesList, line)
    176         window:addChildWindow(line)
    177     end
     200    P.createLines()
    178201   
    179202    if(InfoPopup ~= nil) then
Note: See TracChangeset for help on using the changeset viewer.