BinEditor: Flatten context menu.

This commit is contained in:
ck
2010-02-18 11:34:47 +01:00
parent 4d5e1a9a0c
commit d8e7bb9ca0

View File

@@ -1236,15 +1236,12 @@ void BinEditor::contextMenuEvent(QContextMenuEvent *event)
QMenu contextMenu; QMenu contextMenu;
QAction copyAsciiAction(tr("Copy Selection as ASCII Characters"), this); QAction copyAsciiAction(tr("Copy Selection as ASCII Characters"), this);
QAction copyHexAction(tr("Copy Selection as Hex Values"), this); QAction copyHexAction(tr("Copy Selection as Hex Values"), this);
QMenu jumpBeMenu; QAction jumpToBeAddressHere(this);
QMenu jumpLeMenu; QAction jumpToBeAddressNewWindow(this);
QAction jumpToBeAddressHere(tr("In This Window"), this); QAction jumpToLeAddressHere(this);
QAction jumpToBeAddressNewWindow(tr("In New Window"), this); QAction jumpToLeAddressNewWindow(this);
QAction jumpToLeAddressHere(tr("In This Window"), this);
QAction jumpToLeAddressNewWindow(tr("In New Window"), this);
contextMenu.addAction(&copyAsciiAction); contextMenu.addAction(&copyAsciiAction);
contextMenu.addAction(&copyHexAction); contextMenu.addAction(&copyHexAction);
contextMenu.addMenu(&jumpBeMenu);
quint64 beAddress = 0; quint64 beAddress = 0;
quint64 leAddress = 0; quint64 leAddress = 0;
@@ -1256,18 +1253,21 @@ void BinEditor::contextMenuEvent(QContextMenuEvent *event)
leAddress += val << ((byteCount - pos - 1) * 8); leAddress += val << ((byteCount - pos - 1) * 8);
} }
setupJumpToMenuAction(&jumpBeMenu, &jumpToBeAddressHere, setupJumpToMenuAction(&contextMenu, &jumpToBeAddressHere,
&jumpToBeAddressNewWindow, beAddress); &jumpToBeAddressNewWindow, beAddress);
// If the menu entries would be identical, show only one of them. // If the menu entries would be identical, show only one of them.
if (beAddress != leAddress) { if (beAddress != leAddress) {
setupJumpToMenuAction(&jumpLeMenu, &jumpToLeAddressHere, setupJumpToMenuAction(&contextMenu, &jumpToLeAddressHere,
&jumpToLeAddressNewWindow, leAddress); &jumpToLeAddressNewWindow, leAddress);
contextMenu.addMenu(&jumpLeMenu);
} }
} else { } else {
jumpBeMenu.setTitle(tr("Jump to Address")); jumpToBeAddressHere.setText(tr("Jump to Address in This Window"));
jumpBeMenu.setEnabled(false); jumpToBeAddressNewWindow.setText(tr("Jump to Address in New Window"));
jumpToBeAddressHere.setEnabled(false);
jumpToBeAddressNewWindow.setEnabled(false);
contextMenu.addAction(&jumpToBeAddressHere);
contextMenu.addAction(&jumpToBeAddressNewWindow);
} }
QAction *action = contextMenu.exec(event->globalPos()); QAction *action = contextMenu.exec(event->globalPos());
@@ -1288,15 +1288,16 @@ void BinEditor::contextMenuEvent(QContextMenuEvent *event)
void BinEditor::setupJumpToMenuAction(QMenu *menu, QAction *actionHere, void BinEditor::setupJumpToMenuAction(QMenu *menu, QAction *actionHere,
QAction *actionNew, quint64 addr) QAction *actionNew, quint64 addr)
{ {
menu->setTitle(tr("Jump to Address 0x%1").arg(QString::number(addr, 16))); actionHere->setText(tr("Jump to Address 0x%1 in This Window")
.arg(QString::number(addr, 16)));
actionNew->setText(tr("Jump to Address 0x%1 in New Window")
.arg(QString::number(addr, 16)));
menu->addAction(actionHere); menu->addAction(actionHere);
menu->addAction(actionNew);
if (addr < m_baseAddr || addr >= m_baseAddr + m_size) if (addr < m_baseAddr || addr >= m_baseAddr + m_size)
actionHere->setEnabled(false); actionHere->setEnabled(false);
if (!m_canRequestNewWindow) if (!m_canRequestNewWindow)
actionNew->setEnabled(false); actionNew->setEnabled(false);
menu->addAction(actionNew);
if (!actionHere->isEnabled() && !actionNew->isEnabled())
menu->setEnabled(false);
} }
void BinEditor::setNewWindowRequestAllowed() void BinEditor::setNewWindowRequestAllowed()