mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-19 19:36:11 +00:00
Remove Type Link features in light of global variables (#2775)
This commit is contained in:
parent
dada19cf1c
commit
3ba7363f99
@ -103,15 +103,6 @@ Set Structure Offset
|
|||||||
|
|
||||||
**Steps:** -> Structure offset
|
**Steps:** -> Structure offset
|
||||||
|
|
||||||
Link a Type to Address
|
|
||||||
----------------------------------------
|
|
||||||
**Description:** You can link type, enum or structure to a specific address. Types, structures and enums can be defined in the Types widget.
|
|
||||||
|
|
||||||
**Steps:** Right-click on an instruction and choose ``Link Type to Address``.
|
|
||||||
|
|
||||||
**Shortcut:** :kbd:`L`
|
|
||||||
|
|
||||||
|
|
||||||
Show Cross References
|
Show Cross References
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
**Description:** Show X-Refs from and to the specific location. This option will open Cutter's X-Refs dialog in which you will be able to see a list of X-Refs from and to the selected location, in addition to a preview of each cross-reference to quickly inspect the different usages.
|
**Description:** Show X-Refs from and to the specific location. This option will open Cutter's X-Refs dialog in which you will be able to see a list of X-Refs from and to the selected location, in addition to a preview of each cross-reference to quickly inspect the different usages.
|
||||||
|
@ -62,8 +62,6 @@ Disassembly View Shortcuts
|
|||||||
+-------------+----------------------------------+
|
+-------------+----------------------------------+
|
||||||
| Y | Edit/rename local variables |
|
| Y | Edit/rename local variables |
|
||||||
+-------------+----------------------------------+
|
+-------------+----------------------------------+
|
||||||
| L | Link a type/struct to address |
|
|
||||||
+-------------+----------------------------------+
|
|
||||||
| A | Set current address to String |
|
| A | Set current address to String |
|
||||||
+-------------+----------------------------------+
|
+-------------+----------------------------------+
|
||||||
| C | Set current address to Code |
|
| C | Set current address to Code |
|
||||||
|
@ -109,7 +109,6 @@ set(SOURCES
|
|||||||
plugins/PluginManager.cpp
|
plugins/PluginManager.cpp
|
||||||
common/BasicBlockHighlighter.cpp
|
common/BasicBlockHighlighter.cpp
|
||||||
common/BasicInstructionHighlighter.cpp
|
common/BasicInstructionHighlighter.cpp
|
||||||
dialogs/LinkTypeDialog.cpp
|
|
||||||
widgets/ColorPicker.cpp
|
widgets/ColorPicker.cpp
|
||||||
common/ColorThemeWorker.cpp
|
common/ColorThemeWorker.cpp
|
||||||
widgets/ColorThemeComboBox.cpp
|
widgets/ColorThemeComboBox.cpp
|
||||||
@ -271,7 +270,6 @@ set(HEADER_FILES
|
|||||||
widgets/MemoryDockWidget.h
|
widgets/MemoryDockWidget.h
|
||||||
widgets/ColorThemeListView.h
|
widgets/ColorThemeListView.h
|
||||||
dialogs/preferences/ColorThemeEditDialog.h
|
dialogs/preferences/ColorThemeEditDialog.h
|
||||||
dialogs/LinkTypeDialog.h
|
|
||||||
common/BugReporting.h
|
common/BugReporting.h
|
||||||
common/HighDpiPixmap.h
|
common/HighDpiPixmap.h
|
||||||
widgets/GraphLayout.h
|
widgets/GraphLayout.h
|
||||||
@ -365,7 +363,6 @@ set(UI_FILES
|
|||||||
dialogs/EditMethodDialog.ui
|
dialogs/EditMethodDialog.ui
|
||||||
dialogs/TypesInteractionDialog.ui
|
dialogs/TypesInteractionDialog.ui
|
||||||
widgets/SdbWidget.ui
|
widgets/SdbWidget.ui
|
||||||
dialogs/LinkTypeDialog.ui
|
|
||||||
widgets/ColorPicker.ui
|
widgets/ColorPicker.ui
|
||||||
dialogs/preferences/ColorThemeEditDialog.ui
|
dialogs/preferences/ColorThemeEditDialog.ui
|
||||||
widgets/ListDockWidget.ui
|
widgets/ListDockWidget.ui
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
#include "LinkTypeDialog.h"
|
|
||||||
#include "ui_LinkTypeDialog.h"
|
|
||||||
|
|
||||||
LinkTypeDialog::LinkTypeDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LinkTypeDialog)
|
|
||||||
{
|
|
||||||
addrValid = false;
|
|
||||||
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
setWindowTitle(tr("Link type to address"));
|
|
||||||
|
|
||||||
// Populate the structureTypeComboBox
|
|
||||||
ui->structureTypeComboBox->addItem(tr("(No Type)"));
|
|
||||||
for (const TypeDescription &thisType : Core()->getAllStructs()) {
|
|
||||||
ui->structureTypeComboBox->addItem(thisType.type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LinkTypeDialog::~LinkTypeDialog()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LinkTypeDialog::setDefaultType(const QString &type)
|
|
||||||
{
|
|
||||||
int index = ui->structureTypeComboBox->findText(type);
|
|
||||||
if (index != -1) {
|
|
||||||
// index is valid so set is as the default
|
|
||||||
ui->structureTypeComboBox->setCurrentIndex(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool LinkTypeDialog::setDefaultAddress(const QString &address)
|
|
||||||
{
|
|
||||||
// setting the text here will trigger on_exprLineEdit_textChanged, which will update addrValid
|
|
||||||
ui->exprLineEdit->setText(address);
|
|
||||||
|
|
||||||
if (!addrValid) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if the current address is already linked to a type and set it as default
|
|
||||||
QString type = findLinkedType(Core()->math(ui->addressLineEdit->text()));
|
|
||||||
if (!type.isEmpty()) {
|
|
||||||
setDefaultType(type);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LinkTypeDialog::done(int r)
|
|
||||||
{
|
|
||||||
if (r == QDialog::Accepted) {
|
|
||||||
QString address = ui->addressLineEdit->text();
|
|
||||||
if (Core()->isAddressMapped(Core()->math(address))) {
|
|
||||||
// Address is valid so link the type to the address
|
|
||||||
QString type = ui->structureTypeComboBox->currentText();
|
|
||||||
if (type == tr("(No Type)")) {
|
|
||||||
// Delete link
|
|
||||||
RzCoreLocked core(Core());
|
|
||||||
ut64 addr = rz_num_math(core->num, address.toUtf8().constData());
|
|
||||||
rz_analysis_type_unlink(core->analysis, addr);
|
|
||||||
} else {
|
|
||||||
// Create link
|
|
||||||
RzCoreLocked core(Core());
|
|
||||||
ut64 addr = rz_num_math(core->num, address.toUtf8().constData());
|
|
||||||
rz_core_types_link(core, type.toUtf8().constData(), addr);
|
|
||||||
}
|
|
||||||
QDialog::done(r);
|
|
||||||
|
|
||||||
// Seek to the specified address
|
|
||||||
Core()->seekAndShow(address);
|
|
||||||
|
|
||||||
// Refresh the views
|
|
||||||
emit Core()->refreshCodeViews();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Address is invalid so display error message
|
|
||||||
QMessageBox::warning(this, tr("Error"), tr("The given address is invalid"));
|
|
||||||
} else {
|
|
||||||
QDialog::done(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString LinkTypeDialog::findLinkedType(RVA address)
|
|
||||||
{
|
|
||||||
if (address == RVA_INVALID) {
|
|
||||||
return QString();
|
|
||||||
}
|
|
||||||
|
|
||||||
RzCoreLocked core(Core());
|
|
||||||
RzType *link = rz_analysis_type_link_at(core->analysis, address);
|
|
||||||
if (!link) {
|
|
||||||
return QString();
|
|
||||||
}
|
|
||||||
RzBaseType *base = rz_type_get_base_type(core->analysis->typedb, link);
|
|
||||||
if (!base) {
|
|
||||||
return QString();
|
|
||||||
}
|
|
||||||
|
|
||||||
return QString(base->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LinkTypeDialog::on_exprLineEdit_textChanged(const QString &text)
|
|
||||||
{
|
|
||||||
RVA addr = Core()->math(text);
|
|
||||||
if (Core()->isAddressMapped(addr)) {
|
|
||||||
ui->addressLineEdit->setText(RzAddressString(addr));
|
|
||||||
addrValid = true;
|
|
||||||
} else {
|
|
||||||
ui->addressLineEdit->setText(tr("Invalid Address"));
|
|
||||||
addrValid = false;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
#ifndef LINKTYPEDIALOG_H
|
|
||||||
#define LINKTYPEDIALOG_H
|
|
||||||
|
|
||||||
#include "core/Cutter.h"
|
|
||||||
#include <QDialog>
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class LinkTypeDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
class LinkTypeDialog : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit LinkTypeDialog(QWidget *parent = nullptr);
|
|
||||||
~LinkTypeDialog();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Sets the default type which will be displayed in the combo box
|
|
||||||
* @param type Default type to be used as default type
|
|
||||||
*/
|
|
||||||
void setDefaultType(const QString &type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Sets the value of the default address which will be displayed
|
|
||||||
* If the given address is linked to a type, then it also sets the default
|
|
||||||
* type to the currently linked type
|
|
||||||
* @param address The address to be used as default address
|
|
||||||
* @return true iff the given address string was valid
|
|
||||||
*/
|
|
||||||
bool setDefaultAddress(const QString &address);
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Overrides the done() method of QDialog
|
|
||||||
* On clicking the Ok button, it links a valid address to a type.
|
|
||||||
* If "(No Type)" is selected as type, it removes the link.
|
|
||||||
* In case of an invalid address, it displays error message
|
|
||||||
* @param r The value which will be returned by exec()
|
|
||||||
*/
|
|
||||||
void done(int r) override;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Executed whenever the text inside exprLineEdit changes
|
|
||||||
* If expression evaluates to valid address, it is displayed in addressLineEdit
|
|
||||||
* Otherwise "Invalid Address" is shown in addressLineEdit
|
|
||||||
* @param text The current value of exprLineEdit
|
|
||||||
*/
|
|
||||||
void on_exprLineEdit_textChanged(const QString &text);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::LinkTypeDialog *ui;
|
|
||||||
|
|
||||||
bool addrValid;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Used for finding the type which is linked to the given address
|
|
||||||
* @param address
|
|
||||||
* @return The type linked to "address" if it exists, or empty string otherwise
|
|
||||||
*/
|
|
||||||
QString findLinkedType(RVA address);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // LINKTYPEDIALOG_H
|
|
@ -1,117 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>LinkTypeDialog</class>
|
|
||||||
<widget class="QDialog" name="LinkTypeDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>500</width>
|
|
||||||
<height>105</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>500</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Dialog</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="1" column="2">
|
|
||||||
<widget class="QLabel" name="equalSymbolLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>=</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="3">
|
|
||||||
<widget class="QLineEdit" name="addressLineEdit">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLineEdit" name="exprLineEdit">
|
|
||||||
<property name="placeholderText">
|
|
||||||
<string>Enter Address</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="structureTypeLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Structure Type</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>structureTypeComboBox</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1" colspan="3">
|
|
||||||
<widget class="QComboBox" name="structureTypeComboBox"/>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="3">
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="addressLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Address/Flag</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>exprLineEdit</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>LinkTypeDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>LinkTypeDialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
@ -7,7 +7,6 @@
|
|||||||
#include "dialogs/EditVariablesDialog.h"
|
#include "dialogs/EditVariablesDialog.h"
|
||||||
#include "dialogs/SetToDataDialog.h"
|
#include "dialogs/SetToDataDialog.h"
|
||||||
#include "dialogs/EditFunctionDialog.h"
|
#include "dialogs/EditFunctionDialog.h"
|
||||||
#include "dialogs/LinkTypeDialog.h"
|
|
||||||
#include "dialogs/EditStringDialog.h"
|
#include "dialogs/EditStringDialog.h"
|
||||||
#include "dialogs/BreakpointsDialog.h"
|
#include "dialogs/BreakpointsDialog.h"
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
@ -42,7 +41,6 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main
|
|||||||
actionDeleteComment(this),
|
actionDeleteComment(this),
|
||||||
actionDeleteFlag(this),
|
actionDeleteFlag(this),
|
||||||
actionDeleteFunction(this),
|
actionDeleteFunction(this),
|
||||||
actionLinkType(this),
|
|
||||||
actionSetBaseBinary(this),
|
actionSetBaseBinary(this),
|
||||||
actionSetBaseOctal(this),
|
actionSetBaseOctal(this),
|
||||||
actionSetBaseDecimal(this),
|
actionSetBaseDecimal(this),
|
||||||
@ -122,10 +120,6 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main
|
|||||||
connect(structureOffsetMenu, &QMenu::triggered, this,
|
connect(structureOffsetMenu, &QMenu::triggered, this,
|
||||||
&DisassemblyContextMenu::on_actionStructureOffsetMenu_triggered);
|
&DisassemblyContextMenu::on_actionStructureOffsetMenu_triggered);
|
||||||
|
|
||||||
initAction(&actionLinkType, tr("Link Type to Address"), SLOT(on_actionLinkType_triggered()),
|
|
||||||
getLinkTypeSequence());
|
|
||||||
addAction(&actionLinkType);
|
|
||||||
|
|
||||||
addSetAsMenu();
|
addSetAsMenu();
|
||||||
|
|
||||||
addSeparator();
|
addSeparator();
|
||||||
@ -667,11 +661,6 @@ QKeySequence DisassemblyContextMenu::getDisplayOptionsSequence() const
|
|||||||
return {}; // TODO insert correct sequence
|
return {}; // TODO insert correct sequence
|
||||||
}
|
}
|
||||||
|
|
||||||
QKeySequence DisassemblyContextMenu::getLinkTypeSequence() const
|
|
||||||
{
|
|
||||||
return { Qt::Key_L };
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<QKeySequence> DisassemblyContextMenu::getAddBPSequence() const
|
QList<QKeySequence> DisassemblyContextMenu::getAddBPSequence() const
|
||||||
{
|
{
|
||||||
return { Qt::Key_F2, Qt::CTRL | Qt::Key_B };
|
return { Qt::Key_F2, Qt::CTRL | Qt::Key_B };
|
||||||
@ -986,15 +975,6 @@ void DisassemblyContextMenu::on_actionStructureOffsetMenu_triggered(QAction *act
|
|||||||
Core()->applyStructureOffset(action->data().toString(), offset);
|
Core()->applyStructureOffset(action->data().toString(), offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisassemblyContextMenu::on_actionLinkType_triggered()
|
|
||||||
{
|
|
||||||
LinkTypeDialog dialog(mainWindow);
|
|
||||||
if (!dialog.setDefaultAddress(curHighlightedWord)) {
|
|
||||||
dialog.setDefaultAddress(RzAddressString(offset));
|
|
||||||
}
|
|
||||||
dialog.exec();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DisassemblyContextMenu::on_actionDeleteComment_triggered()
|
void DisassemblyContextMenu::on_actionDeleteComment_triggered()
|
||||||
{
|
{
|
||||||
Core()->delComment(offset);
|
Core()->delComment(offset);
|
||||||
|
@ -74,13 +74,6 @@ private slots:
|
|||||||
*/
|
*/
|
||||||
void on_actionStructureOffsetMenu_triggered(QAction *action);
|
void on_actionStructureOffsetMenu_triggered(QAction *action);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Executed on selecting the "Link Type to Address" option
|
|
||||||
* Opens the LinkTypeDialog box from where the user can link the address
|
|
||||||
* to a type
|
|
||||||
*/
|
|
||||||
void on_actionLinkType_triggered();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QKeySequence getCopySequence() const;
|
QKeySequence getCopySequence() const;
|
||||||
QKeySequence getCommentSequence() const;
|
QKeySequence getCommentSequence() const;
|
||||||
@ -99,11 +92,6 @@ private:
|
|||||||
QKeySequence getEditFunctionSequence() const;
|
QKeySequence getEditFunctionSequence() const;
|
||||||
QList<QKeySequence> getAddBPSequence() const;
|
QList<QKeySequence> getAddBPSequence() const;
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the shortcut key for "Link Type to Address" option
|
|
||||||
*/
|
|
||||||
QKeySequence getLinkTypeSequence() const;
|
|
||||||
|
|
||||||
RVA offset;
|
RVA offset;
|
||||||
bool canCopy;
|
bool canCopy;
|
||||||
QString curHighlightedWord; // The current highlighted word
|
QString curHighlightedWord; // The current highlighted word
|
||||||
@ -137,8 +125,6 @@ private:
|
|||||||
|
|
||||||
QMenu *structureOffsetMenu;
|
QMenu *structureOffsetMenu;
|
||||||
|
|
||||||
QAction actionLinkType;
|
|
||||||
|
|
||||||
QMenu *setBaseMenu;
|
QMenu *setBaseMenu;
|
||||||
QAction actionSetBaseBinary;
|
QAction actionSetBaseBinary;
|
||||||
QAction actionSetBaseOctal;
|
QAction actionSetBaseOctal;
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
#include "core/MainWindow.h"
|
#include "core/MainWindow.h"
|
||||||
#include "common/Helpers.h"
|
#include "common/Helpers.h"
|
||||||
#include "dialogs/TypesInteractionDialog.h"
|
#include "dialogs/TypesInteractionDialog.h"
|
||||||
#include "dialogs/LinkTypeDialog.h"
|
|
||||||
|
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
@ -242,9 +241,6 @@ void TypesWidget::showTypesContextMenu(const QPoint &pt)
|
|||||||
// Add "Link To Address" option
|
// Add "Link To Address" option
|
||||||
menu.addAction(actionViewType);
|
menu.addAction(actionViewType);
|
||||||
menu.addAction(actionEditType);
|
menu.addAction(actionEditType);
|
||||||
if (t.category == "Struct") {
|
|
||||||
menu.addAction(ui->actionLink_Type_To_Address);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,19 +334,6 @@ void TypesWidget::on_actionDelete_Type_triggered()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TypesWidget::on_actionLink_Type_To_Address_triggered()
|
|
||||||
{
|
|
||||||
LinkTypeDialog dialog(this);
|
|
||||||
|
|
||||||
QModelIndex index = ui->typesTreeView->currentIndex();
|
|
||||||
if (index.isValid()) {
|
|
||||||
TypeDescription t = index.data(TypesModel::TypeDescriptionRole).value<TypeDescription>();
|
|
||||||
dialog.setDefaultType(t.type);
|
|
||||||
dialog.setDefaultAddress(RzAddressString(Core()->getOffset()));
|
|
||||||
dialog.exec();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TypesWidget::typeItemDoubleClicked(const QModelIndex &index)
|
void TypesWidget::typeItemDoubleClicked(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
if (!index.isValid()) {
|
if (!index.isValid()) {
|
||||||
|
@ -105,12 +105,6 @@ private slots:
|
|||||||
*/
|
*/
|
||||||
void on_actionDelete_Type_triggered();
|
void on_actionDelete_Type_triggered();
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Executed on clicking the Link To Address option in the context menu
|
|
||||||
* Opens the LinkTypeDialog box from where the user can link a address to a type
|
|
||||||
*/
|
|
||||||
void on_actionLink_Type_To_Address_triggered();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief triggers when the user double-clicks an item. This will open
|
* @brief triggers when the user double-clicks an item. This will open
|
||||||
* a dialog that shows the Type's content
|
* a dialog that shows the Type's content
|
||||||
|
@ -95,11 +95,6 @@
|
|||||||
<string>Delete Type</string>
|
<string>Delete Type</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionLink_Type_To_Address">
|
|
||||||
<property name="text">
|
|
||||||
<string>Link Type to Address</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
Loading…
Reference in New Issue
Block a user