diff options
| author | kat <katherine@vector35.com> | 2022-10-23 05:27:30 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2022-11-10 16:19:13 -0500 |
| commit | 2e74d0a19579c8f5dee38c5b8a7660549746146b (patch) | |
| tree | db478b838d1d02bfce2d0cdac19150e1f42fccfe | |
| parent | ef840b45be92f50fc9e708977efd6b2dcc259ba0 (diff) | |
Several documentation improvements and fixes
- Reduce file count, add minifier script
- Group UI and group Core C
- Add more items to groups
- Add Tranform docs
81 files changed, 1763 insertions, 41 deletions
@@ -19,120 +19,191 @@ */ + +/*! The Core set of pure C definitions that the C++ API (and rust/python APIs) wrap. + + The **vast** majority of the time, you should use the clases and utilities provided by the C++, Python, or + Rust APIs instead. + + \defgroup core Core +*/ + +/*! Classes available to C++ Core Plugins. + + \defgroup coreapi C++ Core API +*/ + +/*! Classes available to C++ UI Plugins. + + \defgroup uiapi C++ UI API +*/ + /*! Classes related to interacting with, hooking, and implementing Architectures \defgroup architectures Architectures + \ingroup coreapi */ -/* +/*! Documentation for interacting with basic blocks \defgroup basicblocks Basic Blocks + \ingroup coreapi */ /*! Classes related to interacting with and implementing custom BinaryViews \defgroup binaryview BinaryView + \ingroup coreapi */ /*! - \defgroup callingconvention CallingConvention + \ingroup coreapi +*/ +/*! + \defgroup confidence Confidence + \ingroup coreapi */ /*! \defgroup database Database + \ingroup coreapi */ /*! \defgroup databuffer DataBuffer + \ingroup coreapi */ /*! \defgroup datarenderer DataRenderer + \ingroup coreapi */ /*! \defgroup debuginfo DebugInfo + \ingroup coreapi */ /*! \defgroup demangle Demangle + \ingroup coreapi */ /*! \defgroup downloadprovider DownloadProvider + \ingroup coreapi */ /*! \defgroup fileaccessor FileAccessor + \ingroup coreapi */ /*! \defgroup filemetadata FileMetadata + \ingroup coreapi */ /*! \defgroup flowgraph Flowgraph + \ingroup coreapi */ /*! \defgroup function Function + \ingroup coreapi */ /*! \defgroup functionrecognizer FunctionRecognizer + \ingroup coreapi */ /*! \defgroup highlevelil High Level IL + \ingroup coreapi */ /*! \defgroup interaction Interaction + \ingroup coreapi */ /*! \defgroup lineardisassembly LinearDisassembly + \ingroup coreapi */ /*! \defgroup logging Logging + \ingroup coreapi */ /*! \defgroup lowlevelil Low Level IL + \ingroup coreapi */ /*! \defgroup mainthread MainThread + \ingroup coreapi */ /*! \defgroup mediumlevelil Medium Level IL + \ingroup coreapi */ /*! \defgroup metadata Metadata + \ingroup coreapi */ /*! \defgroup platform Platform + \ingroup coreapi */ /*! \defgroup plugin Plugin + \ingroup coreapi */ /*! \defgroup pluginmanager Plugin Manager + \ingroup coreapi +*/ +/*! + \defgroup namelist NameList + \ingroup coreapi +*/ +/*! + \defgroup refcount RefCount + \ingroup coreapi */ /*! \defgroup scriptingprovider Scripting Provider + \ingroup coreapi */ /*! \defgroup secretsprovider Secrets Provider + \ingroup coreapi */ /*! \defgroup settings Settings + \ingroup coreapi */ /*! \defgroup tempfile TempFile + \ingroup coreapi */ /*! \defgroup transform Transform + \ingroup coreapi */ /*! \defgroup types Types + \ingroup coreapi */ /*! \defgroup typeparser TypeParser + \ingroup coreapi */ /*! \defgroup typeprinter TypePrinter + \ingroup coreapi */ /*! \defgroup update Update + \ingroup coreapi +*/ +/*! + \defgroup undo Undo + \ingroup coreapi */ /*! \defgroup websocketprovider Websocket Provider + \ingroup coreapi */ /*! \defgroup workflow Workflows + \ingroup coreapi */ #endif
\ No newline at end of file diff --git a/api-docs/cppdocs/Doxyfile b/api-docs/cppdocs/Doxyfile index 244c3163..9c33604c 100644 --- a/api-docs/cppdocs/Doxyfile +++ b/api-docs/cppdocs/Doxyfile @@ -384,7 +384,7 @@ IDL_PROPERTY_SUPPORT = YES # all members of a group must be documented explicitly. # The default value is: NO. -DISTRIBUTE_GROUP_DOC = YES +DISTRIBUTE_GROUP_DOC = NO # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option @@ -640,7 +640,7 @@ SORT_MEMBERS_CTORS_1ST = NO # appear in their defined order. # The default value is: NO. -SORT_GROUP_NAMES = NO +SORT_GROUP_NAMES = YES # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will @@ -709,14 +709,14 @@ MAX_INITIALIZER_LINES = 30 # list will mention the files that were used to generate the documentation. # The default value is: YES. -SHOW_USED_FILES = YES +SHOW_USED_FILES = NO # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. -SHOW_FILES = YES +SHOW_FILES = NO # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the @@ -904,7 +904,17 @@ EXCLUDE_PATTERNS = # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* -EXCLUDE_SYMBOLS = +# These symbols by themselves generate 60MB and 1500 pages of documentation. +# For shipping with builds this is not reasonable. + +EXCLUDE_SYMBOLS = BinaryNinja::LowLevelILInstructionAccessor \ + BinaryNinja::LowLevelILInstructionAccessor* \ + BinaryNinja::MediumLevelILInstructionAccessor \ + BinaryNinja::MediumLevelILInstructionAccessor* \ + BinaryNinja::HighLevelILInstructionAccessor \ + BinaryNinja::HighLevelILInstructionAccessor* \ + + #EXCLUDE_SYMBOLS = QProgressIndicator #Broke Exhale # The EXAMPLE_PATH tag can be used to specify one or more files or directories @@ -1084,7 +1094,7 @@ VERBATIM_HEADERS = NO # classes, structs, unions or interfaces. # The default value is: YES. -ALPHABETICAL_INDEX = YES +ALPHABETICAL_INDEX = NO # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. @@ -2225,7 +2235,7 @@ EXTERNAL_PAGES = YES # powerful graphs. # The default value is: YES. -CLASS_DIAGRAMS = YES +CLASS_DIAGRAMS = NO # You can include diagrams made with dia in doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The @@ -2298,14 +2308,14 @@ CLASS_GRAPH = NO # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -COLLABORATION_GRAPH = YES +COLLABORATION_GRAPH = NO # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for # groups, showing the direct groups dependencies. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -GROUP_GRAPHS = YES +GROUP_GRAPHS = NO # If the UML_LOOK tag is set to YES, doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling @@ -2383,7 +2393,7 @@ CALLER_GRAPH = NO # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -GRAPHICAL_HIERARCHY = YES +GRAPHICAL_HIERARCHY = NO # If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the # dependencies a directory has on other directories in a graphical way. The @@ -2392,7 +2402,7 @@ GRAPHICAL_HIERARCHY = YES # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -DIRECTORY_GRAPH = YES +DIRECTORY_GRAPH = NO # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section diff --git a/api-docs/cppdocs/README.md b/api-docs/cppdocs/README.md index 56412839..615518ee 100644 --- a/api-docs/cppdocs/README.md +++ b/api-docs/cppdocs/README.md @@ -19,6 +19,8 @@ The theme for our documentation works best with doxygen 1.9.0 - 1.9.4 ### macOS (Homebrew) ``` -wget https://raw.githubusercontent.com/Homebrew/homebrew-core/41828ee36b96e35b63b2a4c8cfc2df2c3728944a/Formula/doxygen.rb` -brew install ./doxygen.rb +$ wget https://raw.githubusercontent.com/Homebrew/homebrew-core/41828ee36b96e35b63b2a4c8cfc2df2c3728944a/Formula/doxygen.rb +$ shasum -a 256 doxygen.rb +4d1294c815cf0f76c55b14c5f47c25f523bd860a7cc9b077cce9589d84678396 doxygen.rb +$ brew install ./doxygen.rb ``` diff --git a/api-docs/cppdocs/build_min_docs.py b/api-docs/cppdocs/build_min_docs.py new file mode 100644 index 00000000..455c1376 --- /dev/null +++ b/api-docs/cppdocs/build_min_docs.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 + +# =-=-- +# This script builds the documentation with doxygen and runs minification routines. +# This allows shipping a few thousand fewer files in updates including C++ documentation. +# +# Usage: +# install doxygen 1.9.4 (or this script will not work. running minification on a different version can cause +# real issues.) +# python3 build_min_docs.py +# =-=-- + +__DOXYGEN_REQUIRED_VERSION__ = "1.9.4" + +import os +import sys +import json +from collections import namedtuple +from typing import List +import subprocess +import shutil + + +def system_with_output(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE): + proc = subprocess.Popen("" + cmd, + stdout=stdout, + stderr=stderr, + shell=True, + universal_newlines=True) + std_out, std_err = proc.communicate() + return proc.returncode, std_out, std_err + + +deletion_queue = [] + + +NavItemEntry = namedtuple("NavItemEntry", ["dName", "htmlLink", "vName"]) + + +# Load the singular variable in a file as a list of navitems +def pop_var(filename): + """ + Load in the file data and entries within a file. + + File is in the format `var varName = <json valid array>` + if <json_valid_array>[n][2] is a list, item[n][2] is a subfile, and we want to + load the entry and return it. + + :param filename: Filename to load the entries and data from. + :return: Tuple containing a list of NavItemEntrys and the data in the file. + """ + fp = open(filename) + file_data = fp.read() + fp.close() + data_string = file_data.split(' =', 1)[1][:-1] + data = json.loads(data_string) + items = [] + for entry in data: + if not isinstance(entry[2], list): + items.append(NavItemEntry(entry[0], entry[1], entry[2])) + return items, file_data + + +def load_items_in_file(filename): + """ + Recursively load in the text of file {filename} and all subfiles referenced by it. + + :param filename: Target root filename. e.g. 'modules.js' + :return: Combined text of javascript file tree. + """ + items = [] + sub_items, file_data = pop_var(filename) + items.append(file_data) + deletion_queue.append(filename) + for item in sub_items: + if item.vName is not None: + items += load_items_in_file("html/" + item.vName + ".js") + return items + + +def minifier(): + + # Typically, doxygen's navbar will lazy load the data in all of these variables. + # While this has miniscule performance benefits, it generates thousands of js files. + # Here, we take all js variables that the navbar will ever be able to load, and + # add them to the top of the navbar.js file itself. + + navtree_built_data = "" + for mod in load_items_in_file("html/modules.js"): + navtree_built_data += mod + "\n" + for mod in load_items_in_file("html/namespaces.js"): + navtree_built_data += mod + "\n" + for mod in load_items_in_file("html/annotated.js"): + navtree_built_data += mod + "\n" + + # The navtree indices also need to be loaded in since we're modifying how navbar.js::getScript works. + # This also saves another ~60 files. + for nav_tree_index_file in os.listdir("html"): + if 'navtreeindex' in nav_tree_index_file: + with open("html/" + nav_tree_index_file, "r") as fp: + navtree_built_data += fp.read() + "\n" + deletion_queue.append("html/" + nav_tree_index_file) + + while "\n\n" in navtree_built_data: + navtree_built_data = navtree_built_data.replace("\n\n", "\n") + + navtree_built_data = navtree_built_data.replace("\n", "") + + fp = open("html/navtree.js", "r") + navtree_orig = fp.read() + fp.close() + + # getScript(scriptName,func,show) here originally loads the js file and calls func once that is complete + # Here, we just want to skip the whole process and immediately call the callback. + nav_tree_fixed_get_script = "function getScript(scriptName,func,show) { func(); }" + + navtree_before_get_script = navtree_orig.split("function getScript(scriptName,func,show)")[0] + navtree_after_get_script = navtree_orig.split("function getScript(scriptName,func,show)")[1].split('}', 1)[1] + + nav_tree_fixed = navtree_before_get_script + nav_tree_fixed_get_script + navtree_after_get_script + navtree = navtree_built_data + "\n" + nav_tree_fixed + + fp = open("html/navtree.js", "w") + fp.write(navtree) + fp.close() + + +def build_doxygen(): + if not os.path.exists('./Doxyfile'): + print('No Doxyfile found. Are you in the right directory?') + sys.exit(1) + _, vers, _ = system_with_output("doxygen -V") + if __DOXYGEN_REQUIRED_VERSION__ not in vers.strip(): + print(f'Please use Doxygen {__DOXYGEN_REQUIRED_VERSION__} to build documentation') + sys.exit(1) + + if os.path.exists('./html/'): + print('Clearing ./html/') + try: + shutil.rmtree("./html/") + except OSError: + # doing it twice works (on macOS) ¯\_(ツ)_/¯ + shutil.rmtree("./html/") + print(f'Building doxygen docs...') + stat, out, err = system_with_output("doxygen Doxyfile") + print(f"Built Doxygen with status code {stat}") + print("Output dir is ./html/") + + +def main(): + build_doxygen() + print("Minifying Output") + minifier() + for file in deletion_queue: + file = "./" + file + os.remove(file) + print(f'Was able to clear {len(deletion_queue)} "redundant" files') + print(f'Done. Output is in ./html/') + + +if __name__ == "__main__": + main() diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 1dcdc48a..72b076d6 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -55,6 +55,9 @@ #endif namespace BinaryNinja { + /*! + \ingroup refcount + */ class RefCountObject { public: @@ -74,6 +77,10 @@ namespace BinaryNinja { } }; + + /*! + \ingroup refcount + */ template <class T, T* (*AddObjectReference)(T*), void (*FreeObjectReference)(T*)> class CoreRefCountObject { @@ -138,6 +145,9 @@ namespace BinaryNinja { } }; + /*! + \ingroup refcount + */ template <class T> class StaticCoreRefCountObject { @@ -171,6 +181,9 @@ namespace BinaryNinja { void AddRefForRegistration() { AddRefInternal(); } }; + /*! + \ingroup refcount + */ template <class T> class Ref { @@ -297,6 +310,10 @@ namespace BinaryNinja { T* GetPtr() const { return m_obj; } }; + + /*! + \ingroup confidence + */ class ConfidenceBase { protected: @@ -321,6 +338,9 @@ namespace BinaryNinja { bool IsUnknown() const { return m_confidence == 0; } }; + /*! + \ingroup confidence + */ template <class T> class Confidence : public ConfidenceBase { @@ -380,6 +400,9 @@ namespace BinaryNinja { bool operator!=(const Confidence<T>& a) const { return !(*this == a); } }; + /*! + \ingroup confidence + */ template <class T> class Confidence<Ref<T>> : public ConfidenceBase { @@ -760,6 +783,10 @@ namespace BinaryNinja { static std::vector<std::string> GetLoggerNames(); }; + /*! + @addtogroup coreapi + @{ + */ std::string EscapeString(const std::string& s); std::string UnescapeString(const std::string& s); @@ -815,6 +842,9 @@ namespace BinaryNinja { void SetCurrentPluginLoadOrder(BNPluginLoadOrder order); void AddRequiredPluginDependency(const std::string& name); void AddOptionalPluginDependency(const std::string& name); + /*! + @} + */ class BinaryView; @@ -1364,6 +1394,10 @@ namespace BinaryNinja { virtual bool Navigate(const std::string& view, uint64_t offset) = 0; }; + /*! + + \ingroup coreapi + */ class User : public CoreRefCountObject<BNUser, BNNewUserReference, BNFreeUser> { private: @@ -1467,6 +1501,10 @@ namespace BinaryNinja { struct UndoEntry; + /*! + + \ingroup database + */ struct DatabaseException : std::runtime_error { DatabaseException(const std::string& desc) : std::runtime_error(desc.c_str()) {} @@ -1569,6 +1607,10 @@ namespace BinaryNinja { void WriteAnalysisCache(Ref<KeyValueStore> val); }; + /*! + + \ingroup undo + */ struct UndoAction { BNActionType actionType; @@ -1579,6 +1621,10 @@ namespace BinaryNinja { UndoAction(const BNUndoAction& action); }; + /*! + + \ingroup undo + */ struct UndoEntry { Ref<User> user; @@ -1587,6 +1633,10 @@ namespace BinaryNinja { uint64_t timestamp; }; + /*! + + \ingroup coreapi + */ struct MergeResult { BNMergeStatus status; @@ -1873,6 +1923,10 @@ namespace BinaryNinja { class Segment; class Component; + /*! + + \ingroup binaryview + */ class BinaryDataNotification { private: @@ -2200,6 +2254,10 @@ namespace BinaryNinja { virtual size_t Write(uint64_t offset, const void* src, size_t len) = 0; }; + /*! + + \ingroup fileaccessor + */ class CoreFileAccessor : public FileAccessor { public: @@ -2213,6 +2271,11 @@ namespace BinaryNinja { class Function; class BasicBlock; + + /*! + + \ingroup namelist + */ class NameList { protected: @@ -2269,6 +2332,10 @@ namespace BinaryNinja { static NameList FromAPIObject(BNNameList* name); }; + /*! + + \ingroup namelist + */ class QualifiedName : public NameList { public: @@ -2288,6 +2355,10 @@ namespace BinaryNinja { static QualifiedName FromAPIObject(const BNQualifiedName* name); }; + /*! + + \ingroup namelist + */ class NameSpace : public NameList { public: @@ -2490,6 +2561,9 @@ namespace BinaryNinja { class DisassemblySettings; + /*! + \ingroup binaryview + */ class AnalysisCompletionEvent : public CoreRefCountObject<BNAnalysisCompletionEvent, BNNewAnalysisCompletionEventReference, BNFreeAnalysisCompletionEvent> @@ -4937,6 +5011,9 @@ namespace BinaryNinja { static BNPlatform* PlatformRecognizerCallback(void* ctxt, BNBinaryView* view, BNMetadata* metadata); }; + /*! + \ingroup binaryview + */ class CoreBinaryViewType : public BinaryViewType { public: @@ -4948,6 +5025,8 @@ namespace BinaryNinja { }; /*! Thrown whenever a read is performed out of bounds. + + \ingroup binaryview */ class ReadException : public std::exception { @@ -5215,6 +5294,8 @@ namespace BinaryNinja { }; /*! Raised whenever a write is performed out of bounds. + + \ingroup binaryview */ class WriteException : public std::exception { @@ -5430,7 +5511,31 @@ namespace BinaryNinja { size_t fixedLength; // Variable length if zero }; - /*! + /*! Allows users to implement custom transformations. + + New transformations may be added at runtime, so an instance of a transform is created like + + \code{.cpp} + + DataBuffer inputData = binaryView->ReadBuffer(0, 32); // Read the first 32 bytes of the file + DataBuffer outputDataHash; + + Transform::GetByName("SHA512")->Encode(inputData, outputDataHash); // Writes the SHA512 hash to outputDataHash + + \endcode + + Getting a list of registered transforms: + + <b> From the interactive python console: </b> + \code{.py} + list(Transform) + \endcode + + <b> At Runtime: </b> + \code{.cpp} + std::vector<Ref<Transform>> registeredTypes = Transform::GetTransformTypes(); + \endcode + \ingroup transform */ class Transform : public StaticCoreRefCountObject<BNTransform> @@ -5472,6 +5577,9 @@ namespace BinaryNinja { const std::map<std::string, DataBuffer>& params = std::map<std::string, DataBuffer>()); }; + /*! + \ingroup transform + */ class CoreTransform : public Transform { public: @@ -7323,6 +7431,9 @@ namespace BinaryNinja { overload(Ts...) -> overload<Ts...>; #endif + /*! + \ingroup workflow + */ class AnalysisContext : public CoreRefCountObject<BNAnalysisContext, BNNewAnalysisContextReference, BNFreeAnalysisContext> { @@ -11155,6 +11266,9 @@ namespace BinaryNinja { virtual Variable GetParameterVariableForIncomingVariable(const Variable& var, Function* func); }; + /*! + \ingroup callingconvention + */ class CoreCallingConvention : public CallingConvention { public: @@ -12183,6 +12297,10 @@ namespace BinaryNinja { static FormInputField DirectoryName(const std::string& prompt, const std::string& defaultName = ""); }; + /*! + + \ingroup coreapi + */ class ReportCollection : public CoreRefCountObject<BNReportCollection, BNNewReportCollectionReference, BNFreeReportCollection> { @@ -12703,6 +12821,10 @@ namespace BinaryNinja { static void RegisterTypeSpecificDataRenderer(DataRenderer* renderer); }; + /*! + + \ingroup coreapi + */ class DisassemblyTextRenderer : public CoreRefCountObject<BNDisassemblyTextRenderer, BNNewDisassemblyTextRendererReference, BNFreeDisassemblyTextRenderer> @@ -12866,6 +12988,10 @@ namespace BinaryNinja { static int Compare(LinearViewCursor* a, LinearViewCursor* b); }; + /*! + + \ingroup simplifyname + */ class SimplifyName { public: @@ -13070,6 +13196,10 @@ namespace BinaryNinja { static void Register(SecretsProvider* provider); }; + /*! + + \ingroup secretsprovider + */ class CoreSecretsProvider : public SecretsProvider { public: @@ -13090,6 +13220,8 @@ namespace BinaryNinja { Components have a Guid, which persistent across saves and loads of the database, and should be used for retrieving components when such is required and a reference to the Component cannot be held. + \ingroup coreapi + */ class Component : public CoreRefCountObject<BNComponent, BNNewComponentReference, BNFreeComponent> { diff --git a/binaryninjacore.h b/binaryninjacore.h index e9f7bdca..a6c2c308 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -76,6 +76,10 @@ #define PATH_SEP "/" #endif +/*! + @addtogroup core + @{ +*/ #define BN_MAX_INSTRUCTION_LENGTH 256 #define BN_DEFAULT_INSTRUCTION_LENGTH 16 #define BN_DEFAULT_OPCODE_DISPLAY 8 @@ -6371,4 +6375,8 @@ extern "C" } #endif +/*! + @} +*/ + #endif diff --git a/ui/action.h b/ui/action.h index 51d2feff..a81310e6 100644 --- a/ui/action.h +++ b/ui/action.h @@ -25,6 +25,15 @@ class View; class UIContext; struct LinearViewCursorPosition; +/*! + + \defgroup action Action + \ingroup uiapi +*/ + +/*! + \ingroup action +*/ struct BINARYNINJAUIAPI HighlightTokenState { bool valid; @@ -45,6 +54,9 @@ struct BINARYNINJAUIAPI HighlightTokenState }; +/*! + \ingroup action +*/ struct BINARYNINJAUIAPI UIActionContext { UIContext* context; @@ -66,6 +78,9 @@ struct BINARYNINJAUIAPI UIActionContext operator BinaryNinja::PluginCommandContext() const; }; +/*! + \ingroup action +*/ struct BINARYNINJAUIAPI UIAction { std::function<void(const UIActionContext& context)> activate; @@ -112,6 +127,9 @@ struct BINARYNINJAUIAPI UIAction static void writeKeyBindingsFile(); }; +/*! + \ingroup action +*/ struct BINARYNINJAUIAPI UITransformAction { std::function<void(const UIActionContext& context, TransformRef xform)> activate; @@ -131,6 +149,9 @@ struct BINARYNINJAUIAPI UITransformAction UITransformAction(const UITransformAction& other); }; +/*! + \ingroup action +*/ struct BINARYNINJAUIAPI UIHighlightColorAction { std::function<void(const UIActionContext& context, BNHighlightColor color)> activate; @@ -150,6 +171,9 @@ struct BINARYNINJAUIAPI UIHighlightColorAction UIHighlightColorAction(const UIHighlightColorAction& other); }; +/*! + \ingroup action +*/ struct BINARYNINJAUIAPI UIBookmarkAction { std::function<void(const UIActionContext& context, int index)> activate; @@ -159,6 +183,9 @@ struct BINARYNINJAUIAPI UIBookmarkAction const std::function<bool(const UIActionContext& context, int index)>& isValid); }; +/*! + \ingroup action +*/ enum ActionPriority { LowActionPriority, @@ -166,6 +193,9 @@ enum ActionPriority HighActionPriority }; +/*! + \ingroup action +*/ class BINARYNINJAUIAPI UIActionHandler { std::map<QString, UIAction> m_actions; @@ -257,6 +287,9 @@ class BINARYNINJAUIAPI UIActionHandler static void reparentWidget(QWidget* widget); }; +/*! + \ingroup action +*/ enum MenuItemVisibility { DefaultMenuItemVisibility, @@ -267,6 +300,9 @@ enum MenuItemVisibility class MenuInstance; +/*! + \ingroup action +*/ class BINARYNINJAUIAPI Menu { std::map<QString, QString> m_actions; @@ -335,6 +371,9 @@ class BINARYNINJAUIAPI Menu static std::vector<QString> getMainMenus(); }; +/*! + \ingroup action +*/ class BINARYNINJAUIAPI MenuInstance { Menu* m_menu; @@ -381,6 +420,9 @@ class BINARYNINJAUIAPI MenuInstance static void updateActionBindings(const QString& name); }; +/*! + \ingroup action +*/ class BINARYNINJAUIAPI MainMenuInstance { QMenuBar* m_instance; diff --git a/ui/addressdialog.h b/ui/addressdialog.h index 7ad3e93f..c725ef9c 100644 --- a/ui/addressdialog.h +++ b/ui/addressdialog.h @@ -13,7 +13,15 @@ #include "uitypes.h" #include "getsymbolslistthread.h" +/*! + \defgroup addressdialog AddressDialog + \ingroup uiapi +*/ + +/*! + \ingroup addressdialog +*/ class BINARYNINJAUIAPI AddressDialogWithPreview : public QDialog { Q_OBJECT @@ -55,6 +63,9 @@ class BINARYNINJAUIAPI AddressDialogWithPreview : public QDialog uint64_t getOffset() const { return m_addr; } }; +/*! + \ingroup addressdialog +*/ class BINARYNINJAUIAPI FileOffsetDialogWithPreview : public QDialog { Q_OBJECT @@ -92,6 +103,9 @@ class BINARYNINJAUIAPI FileOffsetDialogWithPreview : public QDialog uint64_t getOffset() const { return m_fileOffset; } }; +/*! + \ingroup addressdialog +*/ class BINARYNINJAUIAPI AddUserXrefDialog : public QDialog { Q_OBJECT diff --git a/ui/addressindicator.h b/ui/addressindicator.h index 76d3eefa..fce16a11 100644 --- a/ui/addressindicator.h +++ b/ui/addressindicator.h @@ -5,7 +5,16 @@ #include "menus.h" #include "uicontext.h" -//! Format for displaying offsets. +/*! + + \defgroup addressindicator AddressIndicator + \ingroup uiapi +*/ + +/*! Format for displaying offsets + + \ingroup addressindicator +*/ enum class OffsetFormat : char { VirtualAddress, @@ -15,7 +24,10 @@ enum class OffsetFormat : char FunctionStart }; -//! Format for displaying an address range. +/*! Format for displaying an address range + + \ingroup addressindicator +*/ enum class RangeFormat : char { StartOnly, @@ -24,13 +36,20 @@ enum class RangeFormat : char StartAndEnd }; -//! Options for displaying an address or address range. +/*! Options for displaying an address or address range + + \ingroup addressindicator +*/ struct DisplayOptions { OffsetFormat format = OffsetFormat::VirtualAddress; RangeFormat rangeFormat = RangeFormat::StartAndEnd; }; +/*! + + \ingroup addressindicator +*/ class BINARYNINJAUIAPI AddressIndicator : public MenuHelper { Q_OBJECT diff --git a/ui/assembledialog.h b/ui/assembledialog.h index 62be31ef..5fa13357 100644 --- a/ui/assembledialog.h +++ b/ui/assembledialog.h @@ -6,6 +6,16 @@ #include "dialogtextedit.h" #include "uicontext.h" +/*! + + \defgroup assembledialog AssembleDialog + \ingroup uiapi +*/ + +/*! + + \ingroup assembledialog +*/ class BINARYNINJAUIAPI AssembleDialog : public QDialog { Q_OBJECT diff --git a/ui/clickablelabel.h b/ui/clickablelabel.h index 6b7d8744..d9b679d7 100644 --- a/ui/clickablelabel.h +++ b/ui/clickablelabel.h @@ -7,7 +7,16 @@ #include <QtWidgets/QLabel> #include "uicontext.h" +/*! + \defgroup clickablelabel ClickableLabel + \ingroup uiapi +*/ + +/*! + + \ingroup clickablelabel +*/ struct BINARYNINJAUIAPI IconImage { QImage original; @@ -18,6 +27,10 @@ struct BINARYNINJAUIAPI IconImage }; +/*! + + \ingroup clickablelabel +*/ class BINARYNINJAUIAPI ClickableLabel : public QLabel { Q_OBJECT @@ -44,6 +57,10 @@ class BINARYNINJAUIAPI ClickableLabel : public QLabel }; +/*! + + \ingroup clickablelabel +*/ class BINARYNINJAUIAPI ClickableIcon : public QWidget { Q_OBJECT @@ -80,6 +97,10 @@ class BINARYNINJAUIAPI ClickableIcon : public QWidget }; +/*! + + \ingroup clickablelabel +*/ class BINARYNINJAUIAPI ClickableStateLabel : public ClickableLabel { Q_OBJECT diff --git a/ui/commandpalette.h b/ui/commandpalette.h index af773ba9..d697f608 100644 --- a/ui/commandpalette.h +++ b/ui/commandpalette.h @@ -9,6 +9,16 @@ #include <vector> #include "action.h" +/*! + + \defgroup commandpalette CommandPalette + \ingroup uiapi +*/ + +/*! + + \ingroup commandpalette +*/ struct BINARYNINJAUIAPI CommandListItem { QString name; @@ -20,6 +30,10 @@ class CommandPalette; class CommandListFilter; +/*! + + \ingroup commandpalette +*/ class BINARYNINJAUIAPI CommandListDelegate : public QStyledItemDelegate { Q_OBJECT @@ -32,6 +46,10 @@ class BINARYNINJAUIAPI CommandListDelegate : public QStyledItemDelegate virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override; }; +/*! + + \ingroup commandpalette +*/ class BINARYNINJAUIAPI CommandListModel : public QAbstractItemModel { Q_OBJECT @@ -61,6 +79,10 @@ class BINARYNINJAUIAPI CommandListModel : public QAbstractItemModel void addRecentItem(const QString& name); }; +/*! + + \ingroup commandpalette +*/ class BINARYNINJAUIAPI CommandList : public QListView { Q_OBJECT @@ -84,6 +106,10 @@ class BINARYNINJAUIAPI CommandList : public QListView virtual void focusOutEvent(QFocusEvent* event) override; }; +/*! + + \ingroup commandpalette +*/ class BINARYNINJAUIAPI CommandListFilter : public QLineEdit { Q_OBJECT @@ -103,6 +129,10 @@ class BINARYNINJAUIAPI CommandListFilter : public QLineEdit virtual void focusOutEvent(QFocusEvent* event) override; }; +/*! + + \ingroup commandpalette +*/ class BINARYNINJAUIAPI CommandPalette : public QFrame { Q_OBJECT diff --git a/ui/commands.h b/ui/commands.h index 3530e8ad..b0ed34be 100644 --- a/ui/commands.h +++ b/ui/commands.h @@ -5,6 +5,12 @@ #include "render.h" #include "uicontext.h" +/*! + @addtogroup commands + \ingroup uiapi + @{ +*/ + bool BINARYNINJAUIAPI undefineNameForAddress(BinaryViewRef data, uint64_t addr); bool BINARYNINJAUIAPI undefineNameForLocalVariable( BinaryViewRef data, FunctionRef func, const BinaryNinja::Variable& var); @@ -46,3 +52,7 @@ std::string BINARYNINJAUIAPI createStructureName(BinaryViewRef data); std::optional<BinaryNinja::Variable> BINARYNINJAUIAPI getSplitVariableForAssignment( FunctionRef func, BNFunctionGraphType ilType, uint64_t location, const BinaryNinja::Variable& var); + +/*! + @} +*/ diff --git a/ui/commentdialog.h b/ui/commentdialog.h index 2a70c3eb..f1c40ca5 100644 --- a/ui/commentdialog.h +++ b/ui/commentdialog.h @@ -7,6 +7,16 @@ #include "uicontext.h" #include "uicomment.h" +/*! + + \defgroup commentdialog CommentDialog + \ingroup uiapi +*/ + +/*! + + \ingroup commentdialog +*/ class BINARYNINJAUIAPI CommentDialog : public QDialog { Q_OBJECT diff --git a/ui/compiledialog.h b/ui/compiledialog.h index b40bc68d..a0218cca 100644 --- a/ui/compiledialog.h +++ b/ui/compiledialog.h @@ -8,12 +8,26 @@ #include "dialogtextedit.h" #include "uicontext.h" +/*! + + \defgroup compiledialog CompileDialog + \ingroup uiapi +*/ + +/*! + + \ingroup compiledialog +*/ enum CompileMode { CompileStandalone, CompilePatch }; +/*! + + \ingroup compiledialog +*/ class BINARYNINJAUIAPI CompileDialog : public QDialog { Q_OBJECT diff --git a/ui/compileoptions.h b/ui/compileoptions.h index 58521bd1..2f9031ea 100644 --- a/ui/compileoptions.h +++ b/ui/compileoptions.h @@ -7,6 +7,10 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI CompileOptions : public QDialog { Q_OBJECT diff --git a/ui/createstructdialog.h b/ui/createstructdialog.h index bcb9cd20..7fa534a7 100644 --- a/ui/createstructdialog.h +++ b/ui/createstructdialog.h @@ -6,6 +6,10 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI CreateStructDialog : public QDialog { Q_OBJECT diff --git a/ui/createtypedialog.h b/ui/createtypedialog.h index 3c47e4ab..7b4e8b9e 100644 --- a/ui/createtypedialog.h +++ b/ui/createtypedialog.h @@ -6,6 +6,10 @@ #include "dialogtextedit.h" #include "uicontext.h" +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI CreateTypeDialog : public QDialog { Q_OBJECT diff --git a/ui/datatypelist.h b/ui/datatypelist.h index c2a96489..7d802b98 100644 --- a/ui/datatypelist.h +++ b/ui/datatypelist.h @@ -5,6 +5,10 @@ #include "viewframe.h" #include "menus.h" +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI DataTypeList : public MenuHelper { Q_OBJECT diff --git a/ui/dialogtextedit.h b/ui/dialogtextedit.h index 28f025c7..cf0cf228 100644 --- a/ui/dialogtextedit.h +++ b/ui/dialogtextedit.h @@ -3,6 +3,10 @@ #include <QtWidgets/QTextEdit> #include "uicontext.h" +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI DialogTextEdit : public QTextEdit { Q_OBJECT diff --git a/ui/disassemblyview.h b/ui/disassemblyview.h index ffd963e5..f7cadb2a 100644 --- a/ui/disassemblyview.h +++ b/ui/disassemblyview.h @@ -18,6 +18,16 @@ #define FUNCTION_UPDATE_CHECK_INTERVAL 100 +/*! + + \defgroup disassemblyview + \ingroup uiapi +*/ + +/*! + + \ingroup disassemblyview +*/ class BINARYNINJAUIAPI DisassemblyHistoryEntry : public FlowGraphHistoryEntry { BNFunctionGraphType m_graphType; @@ -31,7 +41,10 @@ class BINARYNINJAUIAPI DisassemblyHistoryEntry : public FlowGraphHistoryEntry }; class DisassemblyContainer; +/*! + \ingroup disassemblyview +*/ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget { Q_OBJECT @@ -124,7 +137,10 @@ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget void cycleILView(bool forward); }; +/*! + \ingroup disassemblyview +*/ class GraphTypeLabel : public MenuHelper { Q_OBJECT @@ -142,7 +158,10 @@ class GraphTypeLabel : public MenuHelper void showMenu() override; }; +/*! + \ingroup disassemblyview +*/ class BINARYNINJAUIAPI DisassemblyFunctionHeader : public QWidget { Q_OBJECT @@ -184,6 +203,10 @@ class BINARYNINJAUIAPI DisassemblyFunctionHeader : public QWidget virtual QSize sizeHint() const override; }; +/*! + + \ingroup disassemblyview +*/ class BINARYNINJAUIAPI DisassemblyContainer : public QWidget, public ViewContainer { Q_OBJECT @@ -216,6 +239,10 @@ class BINARYNINJAUIAPI DisassemblyContainer : public QWidget, public ViewContain void linkActivatedEvent(const QString& link); }; +/*! + + \ingroup disassemblyview +*/ class DisassemblyViewType : public ViewType { static DisassemblyViewType* m_instance; diff --git a/ui/dockhandler.h b/ui/dockhandler.h index cb150a81..846fb883 100644 --- a/ui/dockhandler.h +++ b/ui/dockhandler.h @@ -14,7 +14,16 @@ class ContextMenuManager; class DockHandler; class Menu; +/*! + \defgroup dockhandler DockHandler + \ingroup uiapi +*/ + +/*! + + \ingroup dockhandler +*/ struct BINARYNINJAUIAPI DockProperties { DockProperties() {}; @@ -53,7 +62,10 @@ struct BINARYNINJAUIAPI DockProperties std::function<void()> actionOnShow; }; +/*! + \ingroup dockhandler +*/ struct DockSizePrefs { DockSizePrefs() {} @@ -63,7 +75,10 @@ struct DockSizePrefs bool nonUniformVisibility = false; }; +/*! + \ingroup dockhandler +*/ class BINARYNINJAUIAPI DockContextHandler { protected: @@ -90,7 +105,10 @@ class BINARYNINJAUIAPI DockContextHandler }; Q_DECLARE_INTERFACE(DockContextHandler, "binary.ninja.dockcontexthandler/1.0"); +/*! + \ingroup dockhandler +*/ class BINARYNINJAUIAPI DockHandler : public QObject { Q_OBJECT diff --git a/ui/expandablegroup.h b/ui/expandablegroup.h index 63b1d70a..1591c9a7 100644 --- a/ui/expandablegroup.h +++ b/ui/expandablegroup.h @@ -7,6 +7,10 @@ #include <QtWidgets/QScrollArea> #include <QtCore/QPropertyAnimation> +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI ExpandableGroup : public QWidget { Q_OBJECT diff --git a/ui/featuremap.h b/ui/featuremap.h index f4b82c03..f67d4443 100644 --- a/ui/featuremap.h +++ b/ui/featuremap.h @@ -27,6 +27,16 @@ class Menu; class View; class SplitPaneWidget; +/*! + + \defgroup featuremap FeatureMap + \ingroup uiapi +*/ + +/*! + + \ingroup featuremap +*/ class BINARYNINJAUIAPI FeatureMap : public QWidget, public BinaryNinja::BinaryDataNotification { Q_OBJECT diff --git a/ui/filecontext.h b/ui/filecontext.h index e7a79927..e9b37267 100644 --- a/ui/filecontext.h +++ b/ui/filecontext.h @@ -22,6 +22,16 @@ class FileContextBase FileContextBase() {} }; +/*! + + \defgroup filecontext FileContext + \ingroup uiapi +*/ + +/*! + + \ingroup filecontext +*/ class BINARYNINJAUIAPI FileContext : public FileContextBase, public BinaryNinja::NavigationHandler { QString m_filename; diff --git a/ui/filter.h b/ui/filter.h index ba186a38..006b92de 100644 --- a/ui/filter.h +++ b/ui/filter.h @@ -4,6 +4,16 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \defgroup filter Filter + \ingroup uiapi +*/ + +/*! + + \ingroup filter +*/ class BINARYNINJAUIAPI FilterTarget { public: @@ -17,6 +27,10 @@ class BINARYNINJAUIAPI FilterTarget virtual void closeFilter(); }; +/*! + + \ingroup filter +*/ class BINARYNINJAUIAPI FilterEdit : public QLineEdit { Q_OBJECT @@ -30,6 +44,10 @@ class BINARYNINJAUIAPI FilterEdit : public QLineEdit virtual void keyPressEvent(QKeyEvent* event) override; }; +/*! + + \ingroup filter +*/ class BINARYNINJAUIAPI FilteredView : public QWidget { Q_OBJECT diff --git a/ui/flowgraphwidget.h b/ui/flowgraphwidget.h index 08c41b7d..9ee41e65 100644 --- a/ui/flowgraphwidget.h +++ b/ui/flowgraphwidget.h @@ -10,6 +10,16 @@ #include "commentdialog.h" #include "instructionedit.h" +/*! + + \defgroup flowgraphwidget FlowGraphWidget + \ingroup uiapi +*/ + +/*! + + \ingroup flowgraphwidget +*/ class BINARYNINJAUIAPI GraphLayoutCompleteEvent : public QEvent { FlowGraphRef m_graph; @@ -19,6 +29,10 @@ class BINARYNINJAUIAPI GraphLayoutCompleteEvent : public QEvent FlowGraphRef GetGraph() { return m_graph; } }; +/*! + + \ingroup flowgraphwidget +*/ class BINARYNINJAUIAPI FlowGraphHistoryEntry : public HistoryEntry { PlatformRef m_platform; diff --git a/ui/fontsettings.h b/ui/fontsettings.h index 7e54a28f..f32db195 100644 --- a/ui/fontsettings.h +++ b/ui/fontsettings.h @@ -4,6 +4,12 @@ #include <QtWidgets/QWidget> #include "uicontext.h" +/*! + @addtogroup FontSettings + \ingroup uiapi + @{ +*/ + enum AntialiasingStyle { SubpixelAntialiasing, @@ -34,3 +40,7 @@ void BINARYNINJAUIAPI setAntialiasingStyle(AntialiasingStyle style); void BINARYNINJAUIAPI adjustFontForAntialiasingSettings(QFont& font, QWidget* widget); int BINARYNINJAUIAPI getFontWidthAndAdjustSpacing(QFont& font); + +/*! + @} +*/ diff --git a/ui/forminputdialog.h b/ui/forminputdialog.h index 7c797366..43d3faae 100644 --- a/ui/forminputdialog.h +++ b/ui/forminputdialog.h @@ -9,6 +9,10 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI FormInputDialog : public QDialog { Q_OBJECT diff --git a/ui/getsymbolslistthread.h b/ui/getsymbolslistthread.h index 220c8f84..73c97962 100644 --- a/ui/getsymbolslistthread.h +++ b/ui/getsymbolslistthread.h @@ -12,6 +12,11 @@ // QThread has issues working in the bindings on some platforms class GetSymbolsListThread; #else + +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI GetSymbolsListThread : public QThread { Q_OBJECT diff --git a/ui/globalarea.h b/ui/globalarea.h index cfb28fda..098f209f 100644 --- a/ui/globalarea.h +++ b/ui/globalarea.h @@ -5,6 +5,16 @@ #include "viewframe.h" #include "tabwidget.h" +/*! + + \defgroup globalarea GlobalArea + \ingroup uiapi +*/ + +/*! + + \ingroup globalarea +*/ class BINARYNINJAUIAPI GlobalAreaWidget : public QWidget { Q_OBJECT @@ -28,6 +38,10 @@ class BINARYNINJAUIAPI GlobalAreaWidget : public QWidget virtual void focus(); }; +/*! + + \ingroup globalarea +*/ class BINARYNINJAUIAPI GlobalAreaTabStyle : public DockableTabStyle { int closeButtonSize(const QWidget* widget) const; @@ -44,6 +58,10 @@ class BINARYNINJAUIAPI GlobalAreaTabStyle : public DockableTabStyle virtual DockableTabStyle* duplicate() override; }; +/*! + + \ingroup globalarea +*/ class BINARYNINJAUIAPI CloseButton : public QWidget { Q_OBJECT @@ -71,6 +89,10 @@ class BINARYNINJAUIAPI CloseButton : public QWidget void clicked(); }; +/*! + + \ingroup globalarea +*/ class BINARYNINJAUIAPI GlobalArea : public QWidget { Q_OBJECT diff --git a/ui/hexeditor.h b/ui/hexeditor.h index 5769ad47..b971a1cb 100644 --- a/ui/hexeditor.h +++ b/ui/hexeditor.h @@ -11,6 +11,16 @@ #define HEX_EDITOR_UPDATE_CHECK_INTERVAL 200 +/*! + + \defgroup hexeditor HexEditor + \ingroup uiapi +*/ + +/*! + + \ingroup hexeditor +*/ class BINARYNINJAUIAPI HexEditor : public QAbstractScrollArea, public View, @@ -219,6 +229,10 @@ class BINARYNINJAUIAPI HexEditor : void updateTimerEvent(); }; +/*! + + \ingroup hexeditor +*/ class HexEditorViewType : public ViewType { static HexEditorViewType* m_instance; diff --git a/ui/ilchooser.h b/ui/ilchooser.h index 5779c7b2..e57b82a6 100644 --- a/ui/ilchooser.h +++ b/ui/ilchooser.h @@ -3,6 +3,16 @@ #include "pane.h" #include "menus.h" +/*! + + \defgroup ilchooser ILChooser + \ingroup uiapi +*/ + +/*! + + \ingroup ilchooser +*/ class BINARYNINJAUIAPI ILChooserWidget : public MenuHelper { Q_OBJECT @@ -21,6 +31,10 @@ class BINARYNINJAUIAPI ILChooserWidget : public MenuHelper virtual void showMenu() override; }; +/*! + + \ingroup ilchooser +*/ class BINARYNINJAUIAPI ViewPaneHeaderILChooserWidget : public ViewPaneHeaderSubtypeWidget { Q_OBJECT diff --git a/ui/instructionedit.h b/ui/instructionedit.h index ea398f34..0f904196 100644 --- a/ui/instructionedit.h +++ b/ui/instructionedit.h @@ -4,6 +4,10 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI InstructionEdit : public QLineEdit { Q_OBJECT diff --git a/ui/linearview.h b/ui/linearview.h index 2e591fdc..3c5ce9eb 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -17,6 +17,16 @@ #define LINEAR_VIEW_UPDATE_CHECK_INTERVAL 200 #define MAX_STRING_TYPE_LENGTH 1048576 +/*! + + \defgroup linearview LinearView + \ingroup uiapi +*/ + +/*! + + \ingroup linearview +*/ struct BINARYNINJAUIAPI LinearViewLine : public BinaryNinja::LinearDisassemblyLine { BinaryNinja::Ref<BinaryNinja::LinearViewCursor> cursor; @@ -24,6 +34,10 @@ struct BINARYNINJAUIAPI LinearViewLine : public BinaryNinja::LinearDisassemblyLi size_t lineIndex; }; +/*! + + \ingroup linearview +*/ struct BINARYNINJAUIAPI LinearViewCursorPosition { FunctionRef function; @@ -53,6 +67,10 @@ struct BINARYNINJAUIAPI LinearViewCursorPosition LinearViewCursorPosition AsLine() const; }; +/*! + + \ingroup linearview +*/ class BINARYNINJAUIAPI LinearViewHistoryEntry : public HistoryEntry { std::vector<BinaryNinja::LinearViewObjectIdentifier> m_topPath; @@ -93,6 +111,10 @@ public: virtual bool deserialize(const Json::Value& value) override; }; +/*! + + \ingroup linearview +*/ class BINARYNINJAUIAPI LinearView : public QAbstractScrollArea, public View, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -445,6 +467,10 @@ protected: void splitToNewPaneAndNavigateFromCursorPosition(); }; +/*! + + \ingroup linearview +*/ class LinearViewType : public ViewType { static LinearViewType* m_instance; diff --git a/ui/logview.h b/ui/logview.h index f9ece62d..19251df7 100644 --- a/ui/logview.h +++ b/ui/logview.h @@ -27,6 +27,16 @@ class LogStatus; class View; class ViewFrame; +/*! + + \defgroup logview LogView + \ingroup uiapi +*/ + +/*! + + \ingroup logview +*/ struct BINARYNINJAUIAPI LogListItem { size_t sessionId; @@ -39,6 +49,10 @@ struct BINARYNINJAUIAPI LogListItem LogListItem(size_t sessionId, BNLogLevel level, std::string text, bool selected = false, const std::string& logger_name = "", size_t tid = 0); }; +/*! + + \ingroup logview +*/ enum LoggingScope { CurrentTabOnly, @@ -47,6 +61,10 @@ enum LoggingScope AllTabs }; +/*! + + \ingroup logview +*/ class BINARYNINJAUIAPI LogListFilterProxyModel : public QSortFilterProxyModel { Q_OBJECT @@ -66,7 +84,10 @@ class BINARYNINJAUIAPI LogListFilterProxyModel : public QSortFilterProxyModel void updateFilter(); }; +/*! + \ingroup logview +*/ class BINARYNINJAUIAPI LogListModel : public QAbstractItemModel, public BinaryNinja::LogListener { Q_OBJECT @@ -131,7 +152,10 @@ class BINARYNINJAUIAPI LogListModel : public QAbstractItemModel, public BinaryNi void notifySessionChanged(size_t sessionId); }; +/*! + \ingroup logview +*/ class BINARYNINJAUIAPI LogItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -164,7 +188,10 @@ class BINARYNINJAUIAPI LogItemDelegate : public QStyledItemDelegate void viewChanged(QWidget* frame); }; +/*! + \ingroup logview +*/ class BINARYNINJAUIAPI LogViewComboBox : public QComboBox { Q_OBJECT @@ -179,7 +206,10 @@ class BINARYNINJAUIAPI LogViewComboBox : public QComboBox void itemSelected(QString text); }; +/*! + \ingroup logview +*/ class BINARYNINJAUIAPI LogView : public GlobalAreaWidget { Q_OBJECT @@ -249,7 +279,10 @@ class BINARYNINJAUIAPI LogView : public GlobalAreaWidget void showContextMenu(); }; +/*! + \ingroup logview +*/ class BINARYNINJAUIAPI LogStatus : public QWidget { Q_OBJECT diff --git a/ui/memorymap.h b/ui/memorymap.h index 544cf2a3..7b831c0c 100644 --- a/ui/memorymap.h +++ b/ui/memorymap.h @@ -15,7 +15,16 @@ #include "uitypes.h" #include "fontsettings.h" +/*! + \defgroup memorymap MemoryMap + \ingroup uiapi +*/ + +/*! + + \ingroup memorymap +*/ class BINARYNINJAUIAPI DataComparedTableItem : public QTableWidgetItem { public: @@ -23,7 +32,10 @@ public: bool operator<(const QTableWidgetItem& other) const; }; +/*! + \ingroup memorymap +*/ class BINARYNINJAUIAPI MemoryMapItemDelegate : public QStyledItemDelegate { public: @@ -31,7 +43,10 @@ public: virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; }; +/*! + \ingroup memorymap +*/ class BINARYNINJAUIAPI SegmentDialog : public QDialog { @@ -53,7 +68,10 @@ public: SegmentDialog(QWidget* parent, BinaryViewRef data, SegmentRef segment = nullptr); }; +/*! + \ingroup memorymap +*/ class BINARYNINJAUIAPI SectionDialog : public QDialog { @@ -72,7 +90,10 @@ public: SectionDialog(QWidget* parent, BinaryViewRef data, SectionRef section = nullptr); }; +/*! + \ingroup memorymap +*/ class BINARYNINJAUIAPI SegmentWidget : public QWidget, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -114,7 +135,10 @@ Q_SIGNALS: void addressDoubleClicked(uint64_t address); }; +/*! + \ingroup memorymap +*/ class BINARYNINJAUIAPI SectionWidget : public QWidget, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -155,7 +179,10 @@ Q_SIGNALS: void addressDoubleClicked(uint64_t address); }; +/*! + \ingroup memorymap +*/ class BINARYNINJAUIAPI MemoryMapSidebarWidget : public SidebarWidget { Q_OBJECT @@ -175,7 +202,10 @@ class BINARYNINJAUIAPI MemoryMapSidebarWidget : public SidebarWidget QWidget* headerWidget() override { return m_header; } }; +/*! + \ingroup memorymap +*/ class BINARYNINJAUIAPI MemoryMapSidebarWidgetType : public SidebarWidgetType { public: @@ -11,6 +11,16 @@ #include "action.h" #include "viewframe.h" +/*! + + \defgroup menus Menus + \ingroup uiapi +*/ + +/*! + + \ingroup menus +*/ class BINARYNINJAUIAPI ContextMenuManager : public QObject { Q_OBJECT @@ -36,7 +46,10 @@ class BINARYNINJAUIAPI ContextMenuManager : public QObject void onClose(); }; +/*! + \ingroup menus +*/ class BINARYNINJAUIAPI MenuHelper : public QLabel { Q_OBJECT diff --git a/ui/mergevariablesdialog.h b/ui/mergevariablesdialog.h index b4c81c06..9082b6a4 100644 --- a/ui/mergevariablesdialog.h +++ b/ui/mergevariablesdialog.h @@ -11,6 +11,16 @@ #include "uicontext.h" #include "render.h" +/*! + + \defgroup mergevariablesdialog + \ingroup uiapi +*/ + +/*! + + \ingroup mergevariablesdialog +*/ class BINARYNINJAUIAPI MergeVariableHeader : public QWidget { std::vector<BinaryNinja::InstructionTextToken> m_tokens; @@ -25,6 +35,10 @@ public: MergeVariableHeader(const std::vector<BinaryNinja::InstructionTextToken>& tokens, QWidget* parent = nullptr); }; +/*! + + \ingroup mergevariablesdialog +*/ class BINARYNINJAUIAPI MergeVariableListItem : public QListWidgetItem { QWidget* m_owner; @@ -46,6 +60,10 @@ public: const std::string& name); }; +/*! + + \ingroup mergevariablesdialog +*/ class BINARYNINJAUIAPI MergeVariableItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -62,6 +80,10 @@ public: virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& idx) const override; }; +/*! + + \ingroup mergevariablesdialog +*/ class BINARYNINJAUIAPI MergeVariablesDialog : public QDialog { Q_OBJECT diff --git a/ui/minigraph.h b/ui/minigraph.h index a4be4368..2dced4a9 100644 --- a/ui/minigraph.h +++ b/ui/minigraph.h @@ -13,6 +13,16 @@ class FlowGraphWidget; class Menu; class ViewFrame; +/*! + + \defgroup minigraph MiniGraph + \ingroup uiapi +*/ + +/*! + + \ingroup minigraph +*/ class BINARYNINJAUIAPI MiniGraph : public SidebarWidget, public UIContextNotification { Q_OBJECT @@ -51,7 +61,10 @@ class BINARYNINJAUIAPI MiniGraph : public SidebarWidget, public UIContextNotific void newPane(); }; +/*! + \ingroup minigraph +*/ class BINARYNINJAUIAPI MiniGraphSidebarWidgetType : public SidebarWidgetType { public: diff --git a/ui/options.h b/ui/options.h index 01714117..0bfba08c 100644 --- a/ui/options.h +++ b/ui/options.h @@ -15,6 +15,16 @@ #include <tuple> #include <vector> +/*! + + \defgroup options Options + \ingroup uiapi +*/ + +/*! + + \ingroup options +*/ class BINARYNINJAUIAPI OptionsDialog : public QDialog { Q_OBJECT @@ -15,6 +15,16 @@ class CloseButton; class TabDragIndicator; class SyncGroup; +/*! + + \defgroup pane Pane + \ingroup uiapi +*/ + +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI Pane : public QWidget { Q_OBJECT @@ -64,6 +74,10 @@ class BINARYNINJAUIAPI Pane : public QWidget void newWindowForPaneRequested(QScreen* screen, QPoint pos); }; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI SplitButton : public ClickableIcon { Q_OBJECT @@ -93,6 +107,10 @@ class BINARYNINJAUIAPI SplitButton : public ClickableIcon void splitWithDirection(Qt::Orientation orientation); }; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI PaneHeader : public QWidget { Q_OBJECT @@ -126,6 +144,10 @@ class BINARYNINJAUIAPI PaneHeader : public QWidget class ViewFrame; class ViewPaneHeader; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI ViewPane : public Pane { Q_OBJECT @@ -160,6 +182,10 @@ class DataTypeList; class ViewList; class SyncGroupWidget; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI ViewPaneHeaderSubtypeWidget : public QWidget { Q_OBJECT @@ -169,6 +195,10 @@ class BINARYNINJAUIAPI ViewPaneHeaderSubtypeWidget : public QWidget virtual void updateStatus() = 0; }; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI ViewPaneHeader : public PaneHeader { Q_OBJECT @@ -204,6 +234,10 @@ class BINARYNINJAUIAPI ViewPaneHeader : public PaneHeader void updateViewType(ViewFrame* frame); }; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI WidgetPane : public Pane { Q_OBJECT @@ -219,6 +253,10 @@ class BINARYNINJAUIAPI WidgetPane : public Pane void updateWidgetStatus(); }; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI WidgetPaneHeader : public PaneHeader { Q_OBJECT @@ -234,6 +272,10 @@ class BINARYNINJAUIAPI WidgetPaneHeader : public PaneHeader class SplitPaneWidget; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI SplitPaneContainer : public QWidget { Q_OBJECT @@ -313,6 +355,10 @@ Q_SIGNALS: void childViewChanged(ViewFrame* frame); }; +/*! + + \ingroup pane +*/ class BINARYNINJAUIAPI SplitPaneWidget : public QWidget { Q_OBJECT diff --git a/ui/platformcursor.h b/ui/platformcursor.h index 5e19b65f..68ed23db 100644 --- a/ui/platformcursor.h +++ b/ui/platformcursor.h @@ -1,4 +1,13 @@ #pragma once +/*! + \addtogroup PlatformCursor + \ingroup uiapi + @{ +*/ + void hideCursorUntilMouseMoves(); + + +/*! @} */ diff --git a/ui/platformdialog.h b/ui/platformdialog.h index 071d4f8e..9d8709c2 100644 --- a/ui/platformdialog.h +++ b/ui/platformdialog.h @@ -5,6 +5,16 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \defgroup platformdialog PlatformDialog + \ingroup uiapi +*/ + +/*! + + \ingroup platformdialog +*/ class BINARYNINJAUIAPI PlatformDialog : public QDialog { Q_OBJECT diff --git a/ui/possiblevaluesetdialog.h b/ui/possiblevaluesetdialog.h index 8202fca0..79d56abd 100644 --- a/ui/possiblevaluesetdialog.h +++ b/ui/possiblevaluesetdialog.h @@ -7,6 +7,11 @@ #include "uitypes.h" + +/*! + + \ingroup uiapi +*/ class BINARYNINJAUIAPI PossibleValueSetDialog : public QDialog { Q_OBJECT diff --git a/ui/preview.h b/ui/preview.h index 4ce1e3b2..84f40d79 100644 --- a/ui/preview.h +++ b/ui/preview.h @@ -4,6 +4,16 @@ #include <QtWidgets/QWidget> #include "uitypes.h" +/*! + + \defgroup preview Preview + \ingroup uiapi +*/ + +/*! + + \ingroup preview +*/ class BINARYNINJAUIAPI PreviewScrollHandler { public: @@ -11,6 +21,11 @@ class BINARYNINJAUIAPI PreviewScrollHandler virtual void sendWheelEvent(QWheelEvent* event) = 0; }; + +/*! + + \ingroup preview +*/ class BINARYNINJAUIAPI PreviewWidget : public QFrame { Q_OBJECT diff --git a/ui/progressindicator.h b/ui/progressindicator.h index f89f6232..128f49f4 100644 --- a/ui/progressindicator.h +++ b/ui/progressindicator.h @@ -29,6 +29,7 @@ \class QProgressIndicator \brief The QProgressIndicator class lets an application display a progress indicator to show that a lengthy task is under way. + \ingroup uiapi Progress indicators are indeterminate and do nothing more than spin to show that the application is busy. \sa QProgressBar diff --git a/ui/progresstask.h b/ui/progresstask.h index c46dfbff..6f15da42 100644 --- a/ui/progresstask.h +++ b/ui/progresstask.h @@ -17,9 +17,22 @@ #include "binaryninjaapi.h" #include "uitypes.h" +/*! + + \defgroup progresstask ProgressTask + \ingroup uiapi +*/ + +/*! + + \defgroup backgroundthread BackgroundThread + \ingroup uiapi +*/ /*! Dialog displaying a progress bar and cancel button + + \ingroup progresstask */ class BINARYNINJAUIAPI ProgressDialog : public QDialog { @@ -85,6 +98,8 @@ class BINARYNINJAUIAPI ProgressDialog : public QDialog task->wait(); // Task deletes itself later \endcode + + \ingroup progresstask */ class BINARYNINJAUIAPI ProgressTask : public QObject { @@ -244,6 +259,8 @@ std::function<QVariant(QVariant)> convertToQVariantFunction(Func&& func); // Call start to start the thread ->start(); \endcode + + \ingroup backgroundthread */ class BINARYNINJAUIAPI BackgroundThread : public QObject { diff --git a/ui/qfileaccessor.h b/ui/qfileaccessor.h index 1686eccc..0211fa1b 100644 --- a/ui/qfileaccessor.h +++ b/ui/qfileaccessor.h @@ -4,6 +4,15 @@ #include "binaryninjaapi.h" #include "action.h" +/*! + + \defgroup qfileaccessor QFileAccessor + \ingroup uiapi +*/ + +/*! + \ingroup qfileaccessor +*/ class BINARYNINJAUIAPI QFileAccessor : public BinaryNinja::FileAccessor { QFile* m_file; diff --git a/ui/render.h b/ui/render.h index e8a03774..5d08c278 100644 --- a/ui/render.h +++ b/ui/render.h @@ -5,6 +5,15 @@ #include "uicontext.h" #include "action.h" +/*! + + \defgroup render Render + \ingroup uiapi +*/ + +/*! + \ingroup render +*/ enum HexEditorHighlightMode { NoHighlight, @@ -12,6 +21,9 @@ enum HexEditorHighlightMode ByteValueHighlight }; +/*! + \ingroup render +*/ enum HexEditorColorMode { NoColorization, @@ -19,6 +31,9 @@ enum HexEditorColorMode ModificationColorization }; +/*! + \ingroup render +*/ enum HexEditorHighlightContrast { NormalContrastHighlight, @@ -26,6 +41,9 @@ enum HexEditorHighlightContrast HighContrastHighlight }; +/*! + \ingroup render +*/ struct BINARYNINJAUIAPI HexEditorHighlightState { HexEditorHighlightMode mode; @@ -36,6 +54,9 @@ struct BINARYNINJAUIAPI HexEditorHighlightState void saveSettings(); }; +/*! + \ingroup render +*/ class BINARYNINJAUIAPI FontParameters { QWidget* m_owner; @@ -58,6 +79,9 @@ class BINARYNINJAUIAPI FontParameters int getOffset() const { return m_charOffset; } }; +/*! + \ingroup render +*/ class BINARYNINJAUIAPI RenderContext { QWidget* m_owner; diff --git a/ui/reportcollectionwidget.h b/ui/reportcollectionwidget.h index 42d56421..d74bd063 100644 --- a/ui/reportcollectionwidget.h +++ b/ui/reportcollectionwidget.h @@ -8,6 +8,15 @@ #include "viewframe.h" #include "uicontext.h" +/*! + + \defgroup reportcollectionwidget ReportCollectionWidget + \ingroup uiapi +*/ + +/*! + \ingroup reportcollectionwidget +*/ class BINARYNINJAUIAPI ReportCollectionWidget : public QWidget, public ViewContainer { Q_OBJECT diff --git a/ui/reportwidget.h b/ui/reportwidget.h index 414fb412..515cb395 100644 --- a/ui/reportwidget.h +++ b/ui/reportwidget.h @@ -32,6 +32,15 @@ class WebPage2 : public QWebEnginePage }; #endif +/*! + + \defgroup reportwidget + \ingroup uiapi +*/ + +/*! + \ingroup reportwidget +*/ class BINARYNINJAUIAPI ReportWidget : public QScrollArea, public UIActionHandler { Q_OBJECT diff --git a/ui/scriptingconsole.h b/ui/scriptingconsole.h index acedb0d7..21636be5 100644 --- a/ui/scriptingconsole.h +++ b/ui/scriptingconsole.h @@ -25,6 +25,15 @@ class ScriptingConsole; +/*! + + \defgroup scriptingconsole ScriptingConsole + \ingroup uiapi +*/ + +/*! + \ingroup scriptingconsole +*/ class BINARYNINJAUIAPI ScriptingCompletionModel : public QAbstractListModel { Q_OBJECT @@ -43,6 +52,9 @@ class BINARYNINJAUIAPI ScriptingCompletionModel : public QAbstractListModel void setModelData(const std::vector<std::string>& completions, bool searching); }; +/*! + \ingroup scriptingconsole +*/ class BINARYNINJAUIAPI ScriptingCompletionPopup : public QDialog { Q_OBJECT @@ -66,6 +78,9 @@ class BINARYNINJAUIAPI ScriptingCompletionPopup : public QDialog void complete(QString text); }; +/*! + \ingroup scriptingconsole +*/ class BINARYNINJAUIAPI ScriptingConsoleEdit : public QTextEdit { Q_OBJECT @@ -101,6 +116,9 @@ class BINARYNINJAUIAPI ScriptingConsoleEdit : public QTextEdit virtual void keyPressEvent(QKeyEvent* event) override; }; +/*! + \ingroup scriptingconsole +*/ class BINARYNINJAUIAPI ScriptingConsoleOutput : public QPlainTextEdit { Q_OBJECT @@ -126,6 +144,9 @@ class BINARYNINJAUIAPI ScriptingConsoleOutput : public QPlainTextEdit class ScriptingConsoleWidget; +/*! + \ingroup scriptingconsole +*/ class BINARYNINJAUIAPI ScriptingConsole : public GlobalAreaWidget, BinaryNinja::ScriptingOutputListener { Q_OBJECT diff --git a/ui/searchresult.h b/ui/searchresult.h index 3b648367..954d0142 100644 --- a/ui/searchresult.h +++ b/ui/searchresult.h @@ -20,6 +20,15 @@ #define COLUMN_MIN_WIDTH_IN_CHAR 10 #define COLUMN_MAX_WIDTH_IN_CHAR 30 +/*! + + \defgroup searchreult SearchResult + \ingroup uiapi +*/ + +/*! + \ingroup searchresult +*/ class CachedTokens { public: @@ -33,7 +42,9 @@ class CachedTokens {} }; - +/*! + \ingroup searchresult +*/ class SearchResultItem { private: @@ -62,7 +73,9 @@ class SearchResultItem Q_DECLARE_METATYPE(SearchResultItem); - +/*! + \ingroup searchresult +*/ class BINARYNINJAUIAPI SearchResultModel : public QAbstractTableModel { Q_OBJECT @@ -124,7 +137,9 @@ class BINARYNINJAUIAPI SearchResultModel : public QAbstractTableModel void setUserColumnWidth(size_t column); }; - +/*! + \ingroup searchresult +*/ class BINARYNINJAUIAPI SearchResultFilterProxyModel : public QSortFilterProxyModel { Q_OBJECT @@ -136,7 +151,9 @@ class BINARYNINJAUIAPI SearchResultFilterProxyModel : public QSortFilterProxyMod virtual QVariant data(const QModelIndex& idx, int role) const override; }; - +/*! + \ingroup searchresult +*/ class BINARYNINJAUIAPI SearchResultItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -151,6 +168,10 @@ class BINARYNINJAUIAPI SearchResultItemDelegate : public QStyledItemDelegate }; class SearchResultWidget; + +/*! + \ingroup searchresult +*/ class BINARYNINJAUIAPI SearchResultTable : public QTableView { Q_OBJECT @@ -207,6 +228,10 @@ class BINARYNINJAUIAPI SearchResultTable : public QTableView }; class SearchProgressBar; + +/*! + \ingroup searchresult +*/ class BINARYNINJAUIAPI SearchResultWidget : public QWidget { Q_OBJECT @@ -249,7 +274,9 @@ class BINARYNINJAUIAPI SearchResultWidget : public QWidget void updateTotal(); }; - +/*! + \ingroup searchresult +*/ class BINARYNINJAUIAPI SearchProgressBar : public QWidget { Q_OBJECT diff --git a/ui/settingsview.h b/ui/settingsview.h index 5507f182..30a6007f 100644 --- a/ui/settingsview.h +++ b/ui/settingsview.h @@ -29,7 +29,15 @@ #include "menus.h" #include "clickablelabel.h" +/*! + \defgroup settingsview SettingsView + \ingroup uiapi +*/ + +/*! + \ingroup settingsview +*/ struct SettingsEntry { SettingsEntry(int p, const QString& h, const QString& g, std::vector<void*>&& j) : @@ -43,6 +51,9 @@ struct SettingsEntry }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsTreeModel : public QAbstractItemModel { Q_OBJECT @@ -72,6 +83,9 @@ class BINARYNINJAUIAPI SettingsTreeModel : public QAbstractItemModel }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsFilterProxyModel : public QSortFilterProxyModel { Q_OBJECT @@ -103,6 +117,9 @@ class BINARYNINJAUIAPI SettingsFilterProxyModel : public QSortFilterProxyModel }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsOutlineProxyModel : public QSortFilterProxyModel { Q_OBJECT @@ -115,6 +132,9 @@ class BINARYNINJAUIAPI SettingsOutlineProxyModel : public QSortFilterProxyModel }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsEditor : public QWidget { Q_OBJECT @@ -203,6 +223,9 @@ class BINARYNINJAUIAPI SettingsEditor : public QWidget }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsDelegate : public QStyledItemDelegate { Q_OBJECT @@ -264,6 +287,9 @@ class BINARYNINJAUIAPI SettingsDelegate : public QStyledItemDelegate }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsTreeView : public QTreeView { Q_OBJECT @@ -281,6 +307,9 @@ class BINARYNINJAUIAPI SettingsTreeView : public QTreeView }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI BinaryViewScopeLabel : public MenuHelper { Q_OBJECT @@ -310,6 +339,9 @@ class BINARYNINJAUIAPI BinaryViewScopeLabel : public MenuHelper }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsScopeBar : public QWidget { Q_OBJECT @@ -334,6 +366,9 @@ class BINARYNINJAUIAPI SettingsScopeBar : public QWidget }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SearchFilter : public QLineEdit { Q_OBJECT @@ -360,6 +395,9 @@ class BINARYNINJAUIAPI SearchFilter : public QLineEdit }; +/*! + \ingroup settingsview +*/ class BINARYNINJAUIAPI SettingsView : public QWidget { Q_OBJECT diff --git a/ui/sidebar.h b/ui/sidebar.h index ef0b0c0b..79dcb3a8 100644 --- a/ui/sidebar.h +++ b/ui/sidebar.h @@ -13,6 +13,15 @@ class MainWindow; class ContextMenuManager; class SplitPaneWidget; +/*! + + \defgroup sidebar Sidebar + \ingroup uiapi +*/ + +/*! + \ingroup sidebar +*/ struct SidebarIcon { QImage original; @@ -22,6 +31,9 @@ struct SidebarIcon static SidebarIcon generate(const QImage& src); }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI SidebarWidget : public QWidget { Q_OBJECT @@ -47,6 +59,9 @@ class BINARYNINJAUIAPI SidebarWidget : public QWidget virtual QWidget* headerWidget() { return nullptr; } }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI SidebarWidgetAndHeader : public QWidget { Q_OBJECT @@ -65,6 +80,9 @@ class BINARYNINJAUIAPI SidebarWidgetAndHeader : public QWidget void updateFonts(); }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI SidebarHeaderTitle : public QLabel { Q_OBJECT @@ -73,6 +91,9 @@ class BINARYNINJAUIAPI SidebarHeaderTitle : public QLabel SidebarHeaderTitle(const QString& name); }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI SidebarHeader : public QWidget { Q_OBJECT @@ -81,6 +102,9 @@ class BINARYNINJAUIAPI SidebarHeader : public QWidget SidebarHeader(const QString& name, QWidget* rightSide = nullptr); }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI SidebarInvalidContextWidget : public SidebarWidget { Q_OBJECT @@ -92,6 +116,9 @@ class BINARYNINJAUIAPI SidebarInvalidContextWidget : public SidebarWidget void openFile(); }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI SidebarWidgetType { SidebarIcon m_icon; @@ -114,6 +141,9 @@ class BINARYNINJAUIAPI SidebarWidgetType class ViewFrame; +/*! + \ingroup sidebar +*/ struct SidebarWidgetContainerState { SidebarWidgetType* contentWidgetType; @@ -122,6 +152,9 @@ struct SidebarWidgetContainerState QList<int> parentSplitterSizes; }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI SidebarWidgetContainer : public QWidget { Q_OBJECT @@ -193,6 +226,9 @@ class BINARYNINJAUIAPI SidebarWidgetContainer : public QWidget void hideContents(); }; +/*! + \ingroup sidebar +*/ class BINARYNINJAUIAPI Sidebar : public QWidget { Q_OBJECT diff --git a/ui/stackview.h b/ui/stackview.h index 85f6f169..e64b4706 100644 --- a/ui/stackview.h +++ b/ui/stackview.h @@ -12,7 +12,16 @@ #define STACK_VIEW_UPDATE_CHECK_INTERVAL 200 -//! Dialog to enable arbitrary stack variable creation. +/*! + + \defgroup stackview StackView + \ingroup uiapi +*/ + +/*! Dialog to enable arbitrary stack variable creation. + + \ingroup stackview +*/ class BINARYNINJAUIAPI CreateStackVariableDialog : public QDialog { Q_OBJECT @@ -34,7 +43,10 @@ class BINARYNINJAUIAPI CreateStackVariableDialog : public QDialog CreateStackVariableDialog(QWidget* parent, BinaryViewRef data, FunctionRef func, int64_t initialOffset = 0); }; -//! A single line in the stack view. +/*! A single line in the stack view. + + \ingroup stackview +*/ class StackViewLine { public: @@ -142,7 +154,10 @@ class StackViewLine BinaryNinja::DisassemblyTextLine m_content; }; -//! Simple direction enum; used for cursor movement functions. +/*! Simple direction enum; used for cursor movement functions. + + \ingroup stackview +*/ enum class Direction { Up, @@ -151,7 +166,10 @@ enum class Direction Right }; -//! The stack view! +/*! The Stack View + + \ingroup stackview +*/ class BINARYNINJAUIAPI StackView : public QAbstractScrollArea, public View { Q_OBJECT @@ -252,7 +270,10 @@ class BINARYNINJAUIAPI StackView : public QAbstractScrollArea, public View void updateFonts() override; }; -//! Stack view sidebar widget wrapper. +/*! Stack view sidebar widget wrapper. + + \ingroup stackview +*/ class BINARYNINJAUIAPI StackViewSidebarWidget : public SidebarWidget { Q_OBJECT @@ -269,6 +290,10 @@ class BINARYNINJAUIAPI StackViewSidebarWidget : public SidebarWidget QWidget* headerWidget() override { return m_header; } }; +/*! + + \ingroup stackview +*/ class BINARYNINJAUIAPI StackViewSidebarWidgetType : public SidebarWidgetType { public: diff --git a/ui/statusbarwidget.h b/ui/statusbarwidget.h index b7ab2537..c2ddb529 100644 --- a/ui/statusbarwidget.h +++ b/ui/statusbarwidget.h @@ -4,6 +4,16 @@ #include <QtWidgets/QLabel> #include "uicontext.h" +/*! + + \defgroup statusbarwidget StatusBarWidget + \ingroup uiapi +*/ + +/*! + + \ingroup statusbarwidget +*/ class BINARYNINJAUIAPI StatusBarWidget : public QWidget { Q_OBJECT @@ -13,6 +23,10 @@ class BINARYNINJAUIAPI StatusBarWidget : public QWidget virtual void updateStatus(); }; +/*! + + \ingroup statusbarwidget +*/ class BINARYNINJAUIAPI DisabledOptionsStatusBarWidget : public StatusBarWidget { public: diff --git a/ui/stringsview.h b/ui/stringsview.h index 64822c44..100a496f 100644 --- a/ui/stringsview.h +++ b/ui/stringsview.h @@ -12,6 +12,16 @@ #define STRINGS_LIST_UPDATE_INTERVAL 250 +/*! + + \defgroup stringsview StringsView + \ingroup uiapi +*/ + +/*! + + \ingroup stringsview +*/ class BINARYNINJAUIAPI StringsListModel : public QAbstractItemModel, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -81,6 +91,10 @@ class BINARYNINJAUIAPI StringsListModel : public QAbstractItemModel, public Bina bool getIncludeOnlyFromCurrentFunction() const { return m_includeOnlyFromCurrentFunction; }; }; +/*! + + \ingroup stringsview +*/ class BINARYNINJAUIAPI StringItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -104,6 +118,10 @@ class BINARYNINJAUIAPI StringItemDelegate : public QStyledItemDelegate class StringsContainer; class StringsViewSidebarWidget; +/*! + + \ingroup stringsview +*/ class BINARYNINJAUIAPI StringsView : public QListView, public View, public FilterTarget { Q_OBJECT @@ -168,6 +186,10 @@ class BINARYNINJAUIAPI StringsView : public QListView, public View, public Filte void updateTimerEvent(); }; +/*! + + \ingroup stringsview +*/ class BINARYNINJAUIAPI StringsContainer : public QWidget, public ViewContainer { Q_OBJECT @@ -192,6 +214,10 @@ class BINARYNINJAUIAPI StringsContainer : public QWidget, public ViewContainer virtual void focusInEvent(QFocusEvent* event) override; }; +/*! + + \ingroup stringsview +*/ class StringsViewType : public ViewType { static StringsViewType* m_instance; @@ -203,7 +229,10 @@ class StringsViewType : public ViewType static void init(); }; +/*! + \ingroup stringsview +*/ class BINARYNINJAUIAPI StringsViewSidebarWidget : public SidebarWidget { Q_OBJECT @@ -225,7 +254,10 @@ class BINARYNINJAUIAPI StringsViewSidebarWidget : public SidebarWidget void showContextMenu(); }; +/*! + \ingroup stringsview +*/ class BINARYNINJAUIAPI StringsViewSidebarWidgetType : public SidebarWidgetType { public: diff --git a/ui/symbollist.h b/ui/symbollist.h index ffefa3c8..5a7b1c1d 100644 --- a/ui/symbollist.h +++ b/ui/symbollist.h @@ -20,6 +20,16 @@ class SymbolsView; static std::string emptyArch; +/*! + + \defgroup symbollist SymbolList + \ingroup uiapi +*/ + +/*! + + \ingroup symbollist +*/ class BINARYNINJAUIAPI SymbolListDelegate : public QStyledItemDelegate { Q_OBJECT @@ -32,6 +42,10 @@ class BINARYNINJAUIAPI SymbolListDelegate : public QStyledItemDelegate virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override; }; +/*! + + \ingroup symbollist +*/ class BINARYNINJAUIAPI SymbolListModel : public QAbstractItemModel, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -282,7 +296,10 @@ class BINARYNINJAUIAPI SymbolListModel : public QAbstractItemModel, public Binar void beforeListReset(); }; +/*! + \ingroup symbollist +*/ class BINARYNINJAUIAPI SymbolList : public QListView, public FilterTarget { Q_OBJECT diff --git a/ui/symbolsview.h b/ui/symbolsview.h index 0997285b..8df6b2e7 100644 --- a/ui/symbolsview.h +++ b/ui/symbolsview.h @@ -9,6 +9,16 @@ class ViewFrame; class SymbolList; +/*! + + \defgroup symbolview SymbolView + \ingroup uiapi +*/ + +/*! + + \ingroup symbolview +*/ class BINARYNINJAUIAPI SymbolsView : public SidebarWidget, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -60,6 +70,10 @@ class BINARYNINJAUIAPI SymbolsView : public SidebarWidget, public BinaryNinja::B void showContextMenu(); }; +/*! + + \ingroup symbolview +*/ class BINARYNINJAUIAPI SymbolsViewSidebarWidgetType : public SidebarWidgetType { public: diff --git a/ui/syncgroup.h b/ui/syncgroup.h index 6600f8ce..187a4151 100644 --- a/ui/syncgroup.h +++ b/ui/syncgroup.h @@ -3,6 +3,16 @@ #include "viewframe.h" #include "clickablelabel.h" +/*! + + \defgroup syncgroup SyncGroup + \ingroup uiapi +*/ + +/*! + + \ingroup syncgroup +*/ class BINARYNINJAUIAPI SyncGroup { std::set<ViewFrame*> m_members; @@ -26,6 +36,10 @@ class BINARYNINJAUIAPI SyncGroup static void syncToTarget(View* srcView, ViewFrame* targetFrame, const ViewLocation& location); }; +/*! + + \ingroup syncgroup +*/ class BINARYNINJAUIAPI SyncGroupWidget : public ClickableIcon { Q_OBJECT diff --git a/ui/tabwidget.h b/ui/tabwidget.h index 0aefdc17..ba2b6b54 100644 --- a/ui/tabwidget.h +++ b/ui/tabwidget.h @@ -15,6 +15,16 @@ class DockableTabWidget; +/*! + + \defgroup tabwidget TabWidget + \ingroup uiapi +*/ + +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI DockableTabCollection { std::set<DockableTabWidget*> m_containers; @@ -26,6 +36,10 @@ class BINARYNINJAUIAPI DockableTabCollection const std::set<DockableTabWidget*>& containers() const { return m_containers; } }; +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI TabDragIndicator : public QWidget { Q_OBJECT @@ -50,6 +64,10 @@ class BINARYNINJAUIAPI TabDragIndicator : public QWidget virtual void paintEvent(QPaintEvent* event) override; }; +/*! + + \ingroup tabwidget +*/ enum DockableTabInteractionState { NoTabInteraction, @@ -59,6 +77,10 @@ enum DockableTabInteractionState CloseButtonPressInactive }; +/*! + + \ingroup tabwidget +*/ struct BINARYNINJAUIAPI DockableTabInfo { QString title; @@ -68,6 +90,10 @@ struct BINARYNINJAUIAPI DockableTabInfo bool canClose; }; +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI DockableTabStyle { public: @@ -83,6 +109,10 @@ class BINARYNINJAUIAPI DockableTabStyle virtual DockableTabStyle* duplicate(); }; +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI DefaultDockableTabStyle : public DockableTabStyle { QStyleOptionTab styleForTab( @@ -103,6 +133,10 @@ class BINARYNINJAUIAPI DefaultDockableTabStyle : public DockableTabStyle virtual DockableTabStyle* duplicate() override; }; +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI DockableTabBar : public QAbstractScrollArea { Q_OBJECT @@ -191,6 +225,10 @@ class BINARYNINJAUIAPI DockableTabBar : public QAbstractScrollArea virtual void wheelEvent(QWheelEvent* event) override; }; +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI DockableTabBarWithCornerWidget : public QWidget { DockableTabBar* m_bar; @@ -210,6 +248,10 @@ class BINARYNINJAUIAPI DockableTabBarWithCornerWidget : public QWidget QWidget* cornerWidget() const { return m_cornerWidget; } }; +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI DockableTabWidget : public QWidget { Q_OBJECT @@ -277,6 +319,10 @@ class BINARYNINJAUIAPI DockableTabWidget : public QWidget void reparentTab(int oldIdx, DockableTabWidget* target, int newIdx); }; +/*! + + \ingroup tabwidget +*/ class BINARYNINJAUIAPI SplitTabWidget : public QWidget { Q_OBJECT diff --git a/ui/taglist.h b/ui/taglist.h index c5ef0c7d..9b3198d4 100644 --- a/ui/taglist.h +++ b/ui/taglist.h @@ -12,7 +12,16 @@ #include "filter.h" #include "tagtypelist.h" +/*! + \defgroup taglist TagList + \ingroup uiapi +*/ + +/*! + + \ingroup taglist +*/ class BINARYNINJAUIAPI TagListModel : public QAbstractItemModel { Q_OBJECT @@ -66,7 +75,10 @@ class BINARYNINJAUIAPI TagListModel : public QAbstractItemModel QItemSelectionModel* selectionModel, int sortColumn, Qt::SortOrder sortOrder, bool& selectionUpdated); }; +/*! + \ingroup taglist +*/ class BINARYNINJAUIAPI TagItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -87,7 +99,10 @@ class BINARYNINJAUIAPI TagItemDelegate : public QStyledItemDelegate virtual void setEditorData(QWidget* editor, const QModelIndex& index) const override; }; +/*! + \ingroup taglist +*/ class BINARYNINJAUIAPI TagList : public QTreeView, public BinaryNinja::BinaryDataNotification, public FilterTarget { Q_OBJECT @@ -177,7 +192,10 @@ class BINARYNINJAUIAPI TagList : public QTreeView, public BinaryNinja::BinaryDat void activateFirstItem() override; }; +/*! + \ingroup taglist +*/ class BINARYNINJAUIAPI TagListWidget : public SidebarWidget { Q_OBJECT @@ -216,7 +234,10 @@ class BINARYNINJAUIAPI TagListWidget : public SidebarWidget virtual QWidget* headerWidget() override { return m_header; } }; +/*! + \ingroup taglist +*/ class BINARYNINJAUIAPI TagListDialog : public QDialog { Q_OBJECT @@ -244,7 +265,10 @@ class BINARYNINJAUIAPI TagListDialog : public QDialog void removeTag(); }; +/*! + \ingroup taglist +*/ class BINARYNINJAUIAPI TagListSidebarWidgetType : public SidebarWidgetType { public: diff --git a/ui/tagtypelist.h b/ui/tagtypelist.h index b272113f..284bbfe1 100644 --- a/ui/tagtypelist.h +++ b/ui/tagtypelist.h @@ -12,6 +12,16 @@ #define TAGS_UPDATE_CHECK_INTERVAL 200 +/*! + + \defgroup tagtypelist TagTypeList + \ingroup uiapi +*/ + +/*! + + \ingroup tagtypelist +*/ class BINARYNINJAUIAPI TagTypeListModel : public QAbstractItemModel, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -48,7 +58,10 @@ class BINARYNINJAUIAPI TagTypeListModel : public QAbstractItemModel, public Bina void needRepaint(); }; +/*! + \ingroup tagtypelist +*/ class BINARYNINJAUIAPI TagTypeItemDelegate : public QItemDelegate { Q_OBJECT @@ -72,7 +85,10 @@ class BINARYNINJAUIAPI TagTypeItemDelegate : public QItemDelegate const QModelIndex& index) override; }; +/*! + \ingroup tagtypelist +*/ class BINARYNINJAUIAPI TagTypeList : public QTableView, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -120,6 +136,10 @@ class BINARYNINJAUIAPI TagTypeList : public QTableView, public BinaryNinja::Bina bool hasSelection(); }; +/*! + + \ingroup tagtypelist +*/ class BINARYNINJAUIAPI TagTypeDialogModel : public QAbstractItemModel { Q_OBJECT @@ -142,6 +162,10 @@ class BINARYNINJAUIAPI TagTypeDialogModel : public QAbstractItemModel virtual QVariant data(const QModelIndex& i, int role) const override; }; +/*! + + \ingroup tagtypelist +*/ class BINARYNINJAUIAPI TagTypeSelectDialog : public QDialog { Q_OBJECT diff --git a/ui/textbrowser.h b/ui/textbrowser.h index d58a0c2f..b62a076b 100644 --- a/ui/textbrowser.h +++ b/ui/textbrowser.h @@ -17,6 +17,16 @@ class TextBrowser; class TextBrowserDownloadThread; +/*! + + \defgroup textbrowser TextBrowser + \ingroup uiapi +*/ + +/*! + + \ingroup textbrowser +*/ class BINARYNINJAUIAPI TextBrowserDownloadCache { QMutex m_mutex; @@ -34,6 +44,10 @@ class BINARYNINJAUIAPI TextBrowserDownloadCache bool isInProgress(const QUrl& url); }; +/*! + + \ingroup textbrowser +*/ class TextBrowserDownloadQueue : public QObject { Q_OBJECT @@ -60,6 +74,10 @@ class TextBrowserDownloadQueue : public QObject void dataDownloaded(QUrl name, QByteArray contents); }; +/*! + + \ingroup textbrowser +*/ class TextBrowserDownloadThread : public QThread { Q_OBJECT @@ -77,6 +95,10 @@ class TextBrowserDownloadThread : public QThread TextBrowserDownloadThread(TextBrowserDownloadQueue* queue); }; +/*! + + \ingroup textbrowser +*/ class BINARYNINJAUIAPI TextBrowser : public QTextBrowser { Q_OBJECT diff --git a/ui/textdialog.h b/ui/textdialog.h index 81750bf9..74df6315 100644 --- a/ui/textdialog.h +++ b/ui/textdialog.h @@ -8,6 +8,16 @@ #include "uitypes.h" #include "binaryninjaapi.h" +/*! + + \defgroup textdialog TextDialog + \ingroup uiapi +*/ + +/*! + + \ingroup textdialog +*/ class BINARYNINJAUIAPI TextDialog : public QDialog { Q_OBJECT @@ -6,6 +6,12 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + @addtogroup Theme + \ingroup uiapi + @{ +*/ + class BINARYNINJAUIAPI CustomFusionStyle : public QProxyStyle { public: @@ -37,3 +43,7 @@ QColor BINARYNINJAUIAPI avgColor(QColor a, QColor b); QColor BINARYNINJAUIAPI mixColor(QColor a, QColor b, uint8_t mix); QColor BINARYNINJAUIAPI getThemeHighlightColor(BNHighlightStandardColor color); + +/*! + @} +*/ diff --git a/ui/tokenizedtextview.h b/ui/tokenizedtextview.h index 3bfd091c..0624564d 100644 --- a/ui/tokenizedtextview.h +++ b/ui/tokenizedtextview.h @@ -9,6 +9,16 @@ #include "menus.h" #include "uicontext.h" +/*! + + \defgroup tokenizedtextview TokenizedTextView + \ingroup uiapi +*/ + +/*! + + \ingroup tokenizedtextview +*/ class BINARYNINJAUIAPI TokenizedTextViewHistoryEntry : public HistoryEntry { size_t m_topLine, m_cursorLine; @@ -27,6 +37,10 @@ class BINARYNINJAUIAPI TokenizedTextViewHistoryEntry : public HistoryEntry virtual bool deserialize(const Json::Value& value) override; }; +/*! + + \ingroup tokenizedtextview +*/ class BINARYNINJAUIAPI TokenizedTextView : public QAbstractScrollArea, public View, diff --git a/ui/transformparam.h b/ui/transformparam.h index 5c67650a..e0ecf3c5 100644 --- a/ui/transformparam.h +++ b/ui/transformparam.h @@ -4,6 +4,16 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \defgroup transformparam TransformParam + \ingroup uiapi +*/ + +/*! + + \ingroup transformparam +*/ class BINARYNINJAUIAPI TransformParameterDialog : public QDialog { Q_OBJECT diff --git a/ui/typedialog.h b/ui/typedialog.h index 7388a83c..c8768559 100644 --- a/ui/typedialog.h +++ b/ui/typedialog.h @@ -17,6 +17,17 @@ class GetTypesListThread; class ParseTypeThread; #else + +/*! + + \defgroup typedialog TypeDialog + \ingroup uiapi +*/ + +/*! + + \ingroup typedialog +*/ class BINARYNINJAUIAPI GetTypesListThread : public QThread { Q_OBJECT @@ -39,7 +50,10 @@ class BINARYNINJAUIAPI GetTypesListThread : public QThread Q_DECLARE_METATYPE(BinaryNinja::QualifiedNameAndType); -//! QThread subclass for handling type string parsing to avoid UI interruptions. +/*! QThread subclass for handling type string parsing to avoid UI interruptions. + + \ingroup typedialog +*/ class ParseTypeThread : public QThread { Q_OBJECT @@ -58,6 +72,10 @@ class ParseTypeThread : public QThread }; #endif +/*! + + \ingroup typedialog +*/ class BINARYNINJAUIAPI TypeDialog : public QDialog { Q_OBJECT diff --git a/ui/typeview.h b/ui/typeview.h index e47823b3..1aa89cc8 100644 --- a/ui/typeview.h +++ b/ui/typeview.h @@ -21,6 +21,16 @@ #define TYPE_VIEW_UPDATE_CHECK_INTERVAL 200 +/*! + + \defgroup typeview TypeView + \ingroup uiapi +*/ + +/*! + + \ingroup typeview +*/ enum TypeLinesFilteredReason { TypeLinesFilterNotApplied, @@ -30,14 +40,20 @@ enum TypeLinesFilteredReason TypeLinesFilteredByBothFilters }; +/*! + \ingroup typeview +*/ struct BINARYNINJAUIAPI TypeDefinitionLinesAndFilterStatus { std::vector<BinaryNinja::TypeDefinitionLine> lines; TypeLinesFilteredReason reason; }; +/*! + \ingroup typeview +*/ class BINARYNINJAUIAPI TypeViewHistoryEntry : public HistoryEntry { BinaryNinja::QualifiedName m_cursorType; @@ -78,6 +94,10 @@ class BINARYNINJAUIAPI TypeViewHistoryEntry : public HistoryEntry class TypesContainer; +/*! + + \ingroup typeview +*/ enum ModifyExistingMember { DontModify, @@ -85,6 +105,10 @@ enum ModifyExistingMember ToggleSign }; +/*! + + \ingroup typeview +*/ class BINARYNINJAUIAPI TypeView : public QAbstractScrollArea, public View, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -294,7 +318,10 @@ class BINARYNINJAUIAPI TypeView : public QAbstractScrollArea, public View, publi void expandAll(); }; +/*! + \ingroup typeview +*/ class BINARYNINJAUIAPI LineNumberArea : public QWidget { public: @@ -309,6 +336,10 @@ class BINARYNINJAUIAPI LineNumberArea : public QWidget TypeView* m_typeEditor; }; +/*! + + \ingroup typeview +*/ class TypeViewType : public ViewType { static TypeViewType* m_instance; @@ -320,7 +351,10 @@ class TypeViewType : public ViewType static void init(); }; +/*! + \ingroup typeview +*/ class BINARYNINJAUIAPI TypeFilterEdit : public QLineEdit { Q_OBJECT @@ -335,7 +369,10 @@ class BINARYNINJAUIAPI TypeFilterEdit : public QLineEdit void focusView(); }; +/*! + \ingroup typeview +*/ class BINARYNINJAUIAPI TypeFilter : public QWidget { Q_OBJECT @@ -365,7 +402,10 @@ class BINARYNINJAUIAPI TypeFilter : public QWidget void clearTextFilter(); }; +/*! + \ingroup typeview +*/ class BINARYNINJAUIAPI TypesContainer : public QWidget, public ViewContainer { Q_OBJECT @@ -387,7 +427,10 @@ class BINARYNINJAUIAPI TypesContainer : public QWidget, public ViewContainer virtual void focusInEvent(QFocusEvent* event) override; }; +/*! + \ingroup typeview +*/ class BINARYNINJAUIAPI TypeViewSidebarWidget : public SidebarWidget { Q_OBJECT @@ -408,7 +451,10 @@ class BINARYNINJAUIAPI TypeViewSidebarWidget : public SidebarWidget void showAddMenu(); }; +/*! + \ingroup typeview +*/ class BINARYNINJAUIAPI TypeViewSidebarWidgetType : public SidebarWidgetType { public: diff --git a/ui/uicomment.h b/ui/uicomment.h index d80444ec..2856c3c0 100644 --- a/ui/uicomment.h +++ b/ui/uicomment.h @@ -3,7 +3,17 @@ #include "binaryninjaapi.h" #include "uicontext.h" +/*! + + \defgroup uicomment UIComment + \ingroup uiapi +*/ + // these are only intended to be used for the ui +/*! + + \ingroup uicomment +*/ typedef enum { FunctionComment, @@ -11,6 +21,10 @@ typedef enum DataComment } UICommentType; +/*! + + \ingroup uicomment +*/ class UIComment { public: diff --git a/ui/uicontext.h b/ui/uicontext.h index 424411ab..352a62dd 100644 --- a/ui/uicontext.h +++ b/ui/uicontext.h @@ -25,8 +25,16 @@ class Pane; struct SelectionInfoForXref; /*! + + \defgroup uicontext UIContext + \ingroup uiapi +*/ + +/*! Interface used to receive notifications related to files and contexts. Many notifications include the ability to modify the behavior of the context. + + \ingroup uicontext */ class BINARYNINJAUIAPI UIContextNotification { @@ -220,6 +228,10 @@ class BINARYNINJAUIAPI UIContextNotification } }; +/*! + + \ingroup uicontext +*/ class BINARYNINJAUIAPI UIContextHandler { public: @@ -229,6 +241,10 @@ class BINARYNINJAUIAPI UIContextHandler virtual void registerFileOpenMode(const QString& buttonName, const QString& description, const QString& action); }; +/*! + + \ingroup uicontext +*/ class BINARYNINJAUIAPI UIContext { static UIContextHandler* m_handler; @@ -453,6 +469,10 @@ class BINARYNINJAUIAPI UIContext Q_DECLARE_METATYPE(UIContext*) +/*! + @addtogroup uicontext + @{ +*/ void BINARYNINJAUIAPI InitUIViews(); void BINARYNINJAUIAPI InitUIActions(); @@ -460,3 +480,7 @@ void BINARYNINJAUIAPI InitUIPlugins(); void BINARYNINJAUIAPI SetCurrentUIPluginLoadOrder(BNPluginLoadOrder order); void BINARYNINJAUIAPI AddRequiredUIPluginDependency(const std::string& name); void BINARYNINJAUIAPI AddOptionalUIPluginDependency(const std::string& name); + +/*! + @} +*/ diff --git a/ui/uitypes.h b/ui/uitypes.h index e0348acd..9c1dadd3 100644 --- a/ui/uitypes.h +++ b/ui/uitypes.h @@ -53,6 +53,12 @@ } #endif +/*! + @addtogroup UITypes + \ingroup uiapi + @{ +*/ + // The Python bindings generator does not recognize automatic conversion of API types into their // Python equivalents if using templates (Ref<*>), so we typedef all API references so that // the Python bindings can be easily generated for them. @@ -99,3 +105,7 @@ typedef BinaryNinja::Ref<BinaryNinja::WebsocketProvider> WebsocketProviderRef; typedef BinaryNinja::Ref<BinaryNinja::RepoPlugin> RepoPluginRef; typedef BinaryNinja::Ref<BinaryNinja::Repository> RepositoryRef; typedef BinaryNinja::Ref<BinaryNinja::RepositoryManager> RepositoryManagerRef; + +/*! + @} +*/ @@ -8,6 +8,12 @@ #include <optional> +/*! + @addtogroup Util + \ingroup uiapi + @{ +*/ + std::string BINARYNINJAUIAPI getStringForLocalVariable(ArchitectureRef arch, FunctionRef func, BinaryNinja::Variable localVar); std::string BINARYNINJAUIAPI getStringForRegisterValue(ArchitectureRef arch, BinaryNinja::RegisterValue value); std::string BINARYNINJAUIAPI getPossibleValueSetStateName(BNRegisterValueType state); @@ -24,3 +30,7 @@ bool BINARYNINJAUIAPI showDisassemblyPreview(QWidget* parent, ViewFrame* frame, void BINARYNINJAUIAPI showTextTooltip(QWidget* parent, const QPoint& previewPos, const QString& text); bool BINARYNINJAUIAPI isBinaryNinjaDataBase(QFileInfo& info, QFileAccessor& accessor); + +/*! + @} +*/ diff --git a/ui/variablelist.h b/ui/variablelist.h index bbf0a51a..e974f6a3 100644 --- a/ui/variablelist.h +++ b/ui/variablelist.h @@ -10,15 +10,27 @@ #include "uitypes.h" #include "viewframe.h" -//! A variable list item can represent either a function-local variable, or a -//! data variable referenced by the current function. +/*! + + \defgroup variablelist VariableList + \ingroup uiapi +*/ + +/*! A variable list item can represent either a function-local variable, or a + data variable referenced by the current function. + + \ingroup variablelist +*/ enum class VariableListItemType { LocalVariable, DataVariable }; -//! An item part of VariableListModel. +/*! An item part of VariableListModel. + + \ingroup variablelist +*/ class VariableListItem { FunctionRef m_func; @@ -74,7 +86,10 @@ class VariableListItem bool isUserDefined() const; }; -//! The backing model for the variable list widget, holds VariableListItem. +/*! The backing model for the variable list widget, holds VariableListItem. + + \ingroup variablelist +*/ class BINARYNINJAUIAPI VariableListModel : public QAbstractListModel { Q_OBJECT @@ -113,6 +128,10 @@ class BINARYNINJAUIAPI VariableListModel : public QAbstractListModel virtual QVariant headerData(int column, Qt::Orientation orientation, int role) const override; }; +/*! + + \ingroup variablelist +*/ class VariableListItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -124,7 +143,10 @@ class VariableListItemDelegate : public QStyledItemDelegate QSize sizeHint(const QStyleOptionViewItem& opt, const QModelIndex& index) const; }; -//! The main variable list dock widget. +/*! The main variable list dock widget. + + \ingroup variablelist +*/ class BINARYNINJAUIAPI VariableList : public SidebarWidget { Q_OBJECT @@ -178,6 +200,10 @@ class BINARYNINJAUIAPI VariableList : public SidebarWidget void setSelectedVariableDeadStoreElimination(BNDeadStoreElimination dse); }; +/*! The main variable list dock widget. + + \ingroup variablelist +*/ class BINARYNINJAUIAPI VariableListSidebarWidgetType : public SidebarWidgetType { public: diff --git a/ui/viewframe.h b/ui/viewframe.h index 21cbc6f1..25937dfd 100644 --- a/ui/viewframe.h +++ b/ui/viewframe.h @@ -21,7 +21,16 @@ #include "action.h" #include "sidebar.h" -// this struct is used to pass selection information for cross references +/*! + + \defgroup viewframe ViewFrame + \ingroup uiapi +*/ + +/*! This struct is used to pass selection information for cross references + + \ingroup viewframe +*/ struct SelectionInfoForXref { // Check these booleans before accessing the address/type/variable info, @@ -60,6 +69,10 @@ struct SelectionInfoForXref bool isValid() const { return addrValid || typeValid || typeFieldValid || localVarValid; } }; +/*! + + \ingroup viewframe +*/ class BINARYNINJAUIAPI HistoryEntry : public BinaryNinja::RefCountObject { QString m_viewType; @@ -96,7 +109,10 @@ class TransformParameterDialog; class ViewPaneHeaderSubtypeWidget; // struct BinaryNinjaCore::LinearDisassemblyLine; +/*! + \ingroup viewframe +*/ class BINARYNINJAUIAPI View { protected: @@ -243,7 +259,10 @@ class BINARYNINJAUIAPI View static void registerLateActions(); }; +/*! + \ingroup viewframe +*/ class BINARYNINJAUIAPI ViewNavigationMode { View* m_view; @@ -260,7 +279,10 @@ class BINARYNINJAUIAPI ViewNavigationMode ~ViewNavigationMode() { m_view->setNavigationMode(m_mode); } }; +/*! + \ingroup viewframe +*/ class BINARYNINJAUIAPI ViewLocation { bool m_valid = false; @@ -312,7 +334,10 @@ class BINARYNINJAUIAPI ViewLocation bool operator!=(const ViewLocation& other) const { return !((*this) == other); } }; +/*! + \ingroup viewframe +*/ class BINARYNINJAUIAPI ViewContainer { public: @@ -324,7 +349,10 @@ class SymbolsView; class ViewFrame; class ViewPane; +/*! + \ingroup viewframe +*/ class InitialNavigation: public BinaryNinja::BinaryDataNotification { ViewFrame* m_frame; @@ -339,7 +367,10 @@ public: virtual void OnSymbolAdded(BinaryNinja::BinaryView* view, BinaryNinja::Symbol* symbol) override; }; +/*! + \ingroup viewframe +*/ class BINARYNINJAUIAPI ViewFrame : public QWidget { Q_OBJECT diff --git a/ui/viewlist.h b/ui/viewlist.h index e79f76b5..4437b7e7 100644 --- a/ui/viewlist.h +++ b/ui/viewlist.h @@ -6,6 +6,16 @@ #include "menus.h" #include "action.h" +/*! + + \defgroup viewlist ViewList + \ingroup uiapi +*/ + +/*! + + \ingroup viewlist +*/ class BINARYNINJAUIAPI ViewList : public MenuHelper { Q_OBJECT diff --git a/ui/viewtype.h b/ui/viewtype.h index e68c02e2..56d861cd 100644 --- a/ui/viewtype.h +++ b/ui/viewtype.h @@ -8,6 +8,16 @@ class ViewFrame; +/*! + + \defgroup viewtype ViewType + \ingroup uiapi +*/ + +/*! + + \ingroup viewtype +*/ class BINARYNINJAUIAPI ViewType { QString m_name, m_longName; @@ -30,7 +40,10 @@ class BINARYNINJAUIAPI ViewType static void registerViewType(ViewType* type); }; +/*! + \ingroup viewtype +*/ class BINARYNINJAUIAPI ViewTypeContainer { public: diff --git a/ui/xreflist.h b/ui/xreflist.h index 5de15c6b..112573ee 100644 --- a/ui/xreflist.h +++ b/ui/xreflist.h @@ -27,6 +27,17 @@ #include "expandablegroup.h" class XrefHeader; + +/*! + + \defgroup xreflist XrefList + \ingroup uiapi +*/ + +/*! + + \ingroup xreflist +*/ class XrefItem { public: @@ -96,7 +107,10 @@ class XrefItem bool operator!=(const XrefItem& other) const; }; +/*! + \ingroup xreflist +*/ class XrefHeader : public XrefItem { protected: @@ -116,7 +130,10 @@ class XrefHeader : public XrefItem virtual int childCount() const = 0; }; +/*! + \ingroup xreflist +*/ class XrefFunctionHeader : public XrefHeader { std::deque<XrefItem*> m_refs; @@ -132,7 +149,10 @@ class XrefFunctionHeader : public XrefHeader virtual XrefItem* child(int i) const override; }; +/*! + \ingroup xreflist +*/ class XrefTypeHeader : public XrefHeader { std::deque<XrefItem*> m_refs; @@ -147,7 +167,10 @@ class XrefTypeHeader : public XrefHeader virtual XrefItem* child(int i) const override; }; +/*! + \ingroup xreflist +*/ class XrefVariableHeader : public XrefHeader { std::deque<XrefItem*> m_refs; @@ -162,7 +185,10 @@ class XrefVariableHeader : public XrefHeader virtual XrefItem* child(int i) const override; }; +/*! + \ingroup xreflist +*/ class XrefCodeReferences : public XrefHeader { std::map<FunctionRef, XrefFunctionHeader*> m_refs; @@ -178,7 +204,10 @@ class XrefCodeReferences : public XrefHeader virtual XrefItem* child(int i) const override; }; +/*! + \ingroup xreflist +*/ class XrefDataReferences : public XrefHeader { std::deque<XrefItem*> m_refs; @@ -192,7 +221,10 @@ class XrefDataReferences : public XrefHeader virtual XrefItem* child(int i) const override; }; +/*! + \ingroup xreflist +*/ class XrefTypeReferences : public XrefHeader { std::map<BinaryNinja::QualifiedName, XrefTypeHeader*> m_refs; @@ -208,7 +240,10 @@ class XrefTypeReferences : public XrefHeader virtual XrefItem* child(int i) const override; }; +/*! + \ingroup xreflist +*/ class XrefVariableReferences : public XrefHeader { std::map<BinaryNinja::Variable, XrefVariableHeader*> m_refs; @@ -224,7 +259,10 @@ class XrefVariableReferences : public XrefHeader virtual XrefItem* child(int i) const override; }; +/*! + \ingroup xreflist +*/ class XrefRoot : public XrefHeader { std::map<XrefItem::XrefType, XrefHeader*> m_refs; @@ -240,6 +278,10 @@ class XrefRoot : public XrefHeader virtual XrefHeader* child(int i) const override; }; +/*! + + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceTreeModel : public QAbstractItemModel { Q_OBJECT @@ -285,7 +327,10 @@ class BINARYNINJAUIAPI CrossReferenceTreeModel : public QAbstractItemModel }; +/*! + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceTableModel : public QAbstractTableModel { Q_OBJECT @@ -345,7 +390,10 @@ class BINARYNINJAUIAPI CrossReferenceTableModel : public QAbstractTableModel void startUpdateTimer(FunctionRef func); }; +/*! + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -369,7 +417,10 @@ class BINARYNINJAUIAPI CrossReferenceItemDelegate : public QStyledItemDelegate size_t getMaxUIItems() const { return m_maxUIItems; } }; +/*! + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceFilterProxyModel : public QSortFilterProxyModel { Q_OBJECT @@ -401,6 +452,11 @@ class BINARYNINJAUIAPI CrossReferenceFilterProxyModel : public QSortFilterProxyM }; class CrossReferenceWidget; + +/*! + + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceContainer { protected: @@ -426,7 +482,10 @@ class BINARYNINJAUIAPI CrossReferenceContainer virtual void updateMaxUIItems(size_t value) = 0; }; +/*! + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceTree : public QTreeView, public CrossReferenceContainer, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -470,7 +529,10 @@ class BINARYNINJAUIAPI CrossReferenceTree : public QTreeView, public CrossRefere void doRepaint(); }; +/*! + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceTable : public QTableView, public CrossReferenceContainer, public BinaryNinja::BinaryDataNotification { Q_OBJECT @@ -514,6 +576,11 @@ class BINARYNINJAUIAPI CrossReferenceTable : public QTableView, public CrossRefe class ExpandableGroup; class QCheckboxCombo; + +/*! + + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceWidget : public SidebarWidget, public UIContextNotification { Q_OBJECT @@ -595,7 +662,10 @@ class BINARYNINJAUIAPI CrossReferenceWidget : public SidebarWidget, public UICon void directionChanged(int change, bool checked); }; +/*! + \ingroup xreflist +*/ class BINARYNINJAUIAPI CrossReferenceSidebarWidgetType : public SidebarWidgetType { public: @@ -606,11 +676,13 @@ class BINARYNINJAUIAPI CrossReferenceSidebarWidgetType : public SidebarWidgetTyp // https://github.com/CuriousCrow/QCheckboxCombo -/* - * QCheckboxCombo is a combobox widget that contains items with checkboxes - * User can select proper items by checking corresponding checkboxes. - * Resulting text will contain list of selected items separated by delimiter (", " by default) - */ +/*! QCheckboxCombo is a combobox widget that contains items with checkboxes. + + User can select proper items by checking corresponding checkboxes. + Resulting text will contain list of selected items separated by delimiter (", " by default) + + \ingroup xreflists +*/ class BINARYNINJAUIAPI QCheckboxCombo : public QComboBox { Q_OBJECT |
