cutter/src/dialogs/LinkTypeDialog.h
2019-03-06 21:30:39 +01:00

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