summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-09-22 00:20:13 -0400
committerRusty Wagner <rusty@vector35.com>2016-09-22 00:21:40 -0400
commitae7f75fd33a49a25f5d8d735ae876e2c4ba55339 (patch)
treedf344c69c13c77698120daf230f97c95b068a402 /binaryninjaapi.h
parent0ee439859c9f09ed0d725bef385bcc9ac6d635a1 (diff)
Adding API to create simple dialogs with multiple input fields
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 7e496591..a62b4239 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -276,6 +276,7 @@ namespace BinaryNinja
class MainThreadAction;
class MainThreadActionHandler;
class InteractionHandler;
+ struct FormInputField;
/*! Logs to the error console with the given BNLogLevel.
@@ -401,6 +402,7 @@ namespace BinaryNinja
bool GetSaveFileNameInput(std::string& result, const std::string& prompt, const std::string& ext = "",
const std::string& defaultName = "");
bool GetDirectoryNameInput(std::string& result, const std::string& prompt, const std::string& defaultName = "");
+ bool GetFormInput(std::vector<FormInputField>& fields, const std::string& title);
BNMessageBoxButtonResult ShowMessageBox(const std::string& title, const std::string& text,
BNMessageBoxButtonSet buttons = OKButtonSet, BNMessageBoxIcon icon = InformationIcon);
@@ -2311,6 +2313,33 @@ namespace BinaryNinja
static std::vector<Ref<BackgroundTask>> GetRunningTasks();
};
+ struct FormInputField
+ {
+ BNFormInputFieldType type;
+ std::string prompt;
+ Ref<BinaryView> view; // For AddressFormField
+ uint64_t currentAddress; // For AddressFormField
+ std::vector<std::string> choices; // For ChoiceFormField
+ std::string ext; // For OpenFileNameFormField, SaveFileNameFormField
+ std::string defaultName; // For SaveFileNameFormField
+ int64_t intResult;
+ uint64_t addressResult;
+ std::string stringResult;
+ size_t indexResult;
+
+ static FormInputField Label(const std::string& text);
+ static FormInputField Separator();
+ static FormInputField TextLine(const std::string& prompt);
+ static FormInputField MultilineText(const std::string& prompt);
+ static FormInputField Integer(const std::string& prompt);
+ static FormInputField Address(const std::string& prompt, BinaryView* view = nullptr, uint64_t currentAddress = 0);
+ static FormInputField Choice(const std::string& prompt, const std::vector<std::string>& choices);
+ static FormInputField OpenFileName(const std::string& prompt, const std::string& ext);
+ static FormInputField SaveFileName(const std::string& prompt, const std::string& ext,
+ const std::string& defaultName = "");
+ static FormInputField DirectoryName(const std::string& prompt, const std::string& defaultName = "");
+ };
+
class InteractionHandler
{
public:
@@ -2331,6 +2360,7 @@ namespace BinaryNinja
const std::string& ext = "", const std::string& defaultName = "");
virtual bool GetDirectoryNameInput(std::string& result, const std::string& prompt,
const std::string& defaultName = "");
+ virtual bool GetFormInput(std::vector<FormInputField>& fields, const std::string& title) = 0;
virtual BNMessageBoxButtonResult ShowMessageBox(const std::string& title, const std::string& text,
BNMessageBoxButtonSet buttons = OKButtonSet, BNMessageBoxIcon icon = InformationIcon) = 0;