mirror of
https://github.com/rizinorg/cutter.git
synced 2025-01-10 14:05:25 +00:00
64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
#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
|
|
*/
|
|
void setDefaultAddress(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;
|
|
|
|
/**
|
|
* @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
|