parent
835adfb4ce
commit
7e01306fc6
|
@ -1,18 +1,10 @@
|
|||
PopupMenuButton < UIButton
|
||||
height: 18
|
||||
margin-left: 5
|
||||
margin-right: 5
|
||||
margin-top: 1
|
||||
margin-bottom: 1
|
||||
size: 0 21
|
||||
text-offset: 0 0
|
||||
text-offset: 4 0
|
||||
text-align: left
|
||||
font: verdana-11px-antialised
|
||||
|
||||
image-source: /images/ui/button_popupmenu
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-border: 2
|
||||
|
||||
color: #aaaaaa
|
||||
background-color: alpha
|
||||
|
||||
|
@ -24,6 +16,13 @@ PopupMenuButton < UIButton
|
|||
$disabled:
|
||||
color: #555555
|
||||
|
||||
PopupMenuShortcutLabel < Label
|
||||
font: verdana-11px-antialised
|
||||
text-align: right
|
||||
anchors.fill: parent
|
||||
margin-right: 2
|
||||
margin-left: 5
|
||||
|
||||
PopupMenuSeparator < UIWidget
|
||||
margin-left: 2
|
||||
margin-right: 2
|
||||
|
@ -39,5 +38,4 @@ PopupMenu < UIPopupMenu
|
|||
width: 50
|
||||
image-source: /images/ui/menubox
|
||||
image-border: 3
|
||||
padding-top: 3
|
||||
padding-bottom: 3
|
||||
padding: 3
|
||||
|
|
|
@ -33,11 +33,23 @@ function UIPopupMenu:display(pos)
|
|||
currentMenu = self
|
||||
end
|
||||
|
||||
function UIPopupMenu:onGeometryChange()
|
||||
function UIPopupMenu:onGeometryChange(oldRect, newRect)
|
||||
local parent = self:getParent()
|
||||
if not parent then return end
|
||||
local ymax = parent:getY() + parent:getHeight()
|
||||
local xmax = parent:getX() + parent:getWidth()
|
||||
if newRect.y + newRect.height > ymax then
|
||||
local newy = newRect.y - newRect.height
|
||||
if newy > 0 and newy + newRect.height < ymax then self:setY(newy) end
|
||||
end
|
||||
if newRect.x + newRect.width > xmax then
|
||||
local newx = newRect.x - newRect.width
|
||||
if newx > 0 and newx + newRect.width < xmax then self:setX(newx) end
|
||||
end
|
||||
self:bindRectToParent()
|
||||
end
|
||||
|
||||
function UIPopupMenu:addOption(optionName, optionCallback)
|
||||
function UIPopupMenu:addOption(optionName, optionCallback, shortcut)
|
||||
local optionWidget = g_ui.createWidget(self:getStyleName() .. 'Button', self)
|
||||
local lastOptionWidget = self:getLastChild()
|
||||
optionWidget.onClick = function(self)
|
||||
|
@ -46,6 +58,13 @@ function UIPopupMenu:addOption(optionName, optionCallback)
|
|||
end
|
||||
optionWidget:setText(optionName)
|
||||
local width = optionWidget:getTextSize().width + optionWidget:getMarginLeft() + optionWidget:getMarginRight() + 15
|
||||
|
||||
if shortcut then
|
||||
local shortcutLabel = g_ui.createWidget(self:getStyleName() .. 'ShortcutLabel', optionWidget)
|
||||
shortcutLabel:setText(shortcut)
|
||||
width = width + shortcutLabel:getTextSize().width + shortcutLabel:getMarginLeft() + shortcutLabel:getMarginRight()
|
||||
end
|
||||
|
||||
self:setWidth(math.max(self:getWidth(), width))
|
||||
end
|
||||
|
||||
|
|
|
@ -433,7 +433,7 @@ function addTabText(text, speaktype, tab, creatureName)
|
|||
end
|
||||
|
||||
label.onMouseRelease = function (self, mousePos, mouseButton)
|
||||
processMessageMenu(mousePos, mouseButton, creatureName, text)
|
||||
processMessageMenu(mousePos, mouseButton, creatureName, text, self)
|
||||
end
|
||||
|
||||
if consoleBuffer:getChildCount() > MAX_LINES then
|
||||
|
@ -460,7 +460,7 @@ function processChannelTabMenu(tab, mousePos, mouseButton)
|
|||
menu:display(mousePos)
|
||||
end
|
||||
|
||||
function processMessageMenu(mousePos, mouseButton, creatureName, text)
|
||||
function processMessageMenu(mousePos, mouseButton, creatureName, text, label)
|
||||
if mouseButton == MouseRightButton then
|
||||
local menu = g_ui.createWidget('PopupMenu')
|
||||
if creatureName then
|
||||
|
@ -481,20 +481,18 @@ function processMessageMenu(mousePos, mouseButton, creatureName, text)
|
|||
end
|
||||
menu:addSeparator()
|
||||
end
|
||||
--TODO select all
|
||||
menu:addOption(tr('Copy message'), function () g_window.setClipboardText(text) end)
|
||||
|
||||
if modules.game_ruleviolation.hasWindowAccess() then
|
||||
menu:addSeparator()
|
||||
menu:addOption(tr('Rule Violation'), function() modules.game_ruleviolation.show(creatureName, text:match('.+%:%s(.+)')) end)
|
||||
menu:addSeparator()
|
||||
end
|
||||
|
||||
menu:addSeparator()
|
||||
menu:addOption(tr('Copy name'), function () g_window.setClipboardText(creatureName) end)
|
||||
else
|
||||
--TODO select all
|
||||
menu:addOption(tr('Copy message'), function () g_window.setClipboardText(text) end)
|
||||
end
|
||||
if label:hasSelection() then
|
||||
menu:addOption(tr('Copy'), function() g_window.setClipboardText(label:getSelection()) end, '(Ctrl+C)')
|
||||
end
|
||||
menu:addOption(tr('Copy message'), function() g_window.setClipboardText(text) end)
|
||||
menu:addOption(tr('Select all'), function() label:selectAll() end)
|
||||
menu:display(mousePos)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -344,24 +344,28 @@ end
|
|||
function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
||||
if not g_game.isOnline() then return end
|
||||
local menu = g_ui.createWidget('PopupMenu')
|
||||
local classic = modules.client_options.getOption('classicControl')
|
||||
local shortcut = nil
|
||||
|
||||
if not classic then shortcut = '(Shift)' else shortcut = nil end
|
||||
if lookThing then
|
||||
menu:addOption(tr('Look'), function() g_game.look(lookThing) end)
|
||||
menu:addOption(tr('Look'), function() g_game.look(lookThing) end, shortcut)
|
||||
end
|
||||
|
||||
if not classic then shortcut = '(Ctrl)' else shortcut = nil end
|
||||
if useThing then
|
||||
if useThing:isContainer() then
|
||||
if useThing:getParentContainer() then
|
||||
menu:addOption(tr('Open'), function() g_game.open(useThing, useThing:getParentContainer()) end)
|
||||
menu:addOption(tr('Open'), function() g_game.open(useThing, useThing:getParentContainer()) end, shortcut)
|
||||
menu:addOption(tr('Open in new window'), function() g_game.open(useThing) end)
|
||||
else
|
||||
menu:addOption(tr('Open'), function() g_game.open(useThing) end)
|
||||
menu:addOption(tr('Open'), function() g_game.open(useThing) end, shortcut)
|
||||
end
|
||||
else
|
||||
if useThing:isMultiUse() then
|
||||
menu:addOption(tr('Use with ...'), function() startUseWith(useThing) end)
|
||||
menu:addOption(tr('Use with ...'), function() startUseWith(useThing) end, shortcut)
|
||||
else
|
||||
menu:addOption(tr('Use'), function() g_game.use(useThing) end)
|
||||
menu:addOption(tr('Use'), function() g_game.use(useThing) end, shortcut)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -410,10 +414,11 @@ function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
|||
end
|
||||
|
||||
else
|
||||
if not classic then shortcut = '(Alt)' else shortcut = nil end
|
||||
if g_game.getAttackingCreature() ~= creatureThing then
|
||||
menu:addOption(tr('Attack'), function() g_game.attack(creatureThing) end)
|
||||
menu:addOption(tr('Attack'), function() g_game.attack(creatureThing) end, shortcut)
|
||||
else
|
||||
menu:addOption(tr('Stop Attack'), function() g_game.cancelAttack() end)
|
||||
menu:addOption(tr('Stop Attack'), function() g_game.cancelAttack() end, shortcut)
|
||||
end
|
||||
|
||||
if g_game.getFollowingCreature() ~= creatureThing then
|
||||
|
@ -472,7 +477,6 @@ function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
|||
|
||||
menu:addSeparator()
|
||||
menu:addOption(tr('Copy Name'), function() g_window.setClipboardText(creatureThing:getName()) end)
|
||||
|
||||
end
|
||||
|
||||
menu:display(menuPosition)
|
||||
|
|
Loading…
Reference in New Issue