Skip to content
IDA command palette & more (Ctrl+Shift+P, Ctrl+P)
C++ CSS CMake
Branch: master
Clone or download
Latest commit dbdaf43 Sep 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
palette fix rename bug Sep 15, 2019
screenshots change readme Mar 17, 2019
standalone standalone sample modification Jul 2, 2019
.gitignore cleanup May 9, 2019
.gitmodules repo fix Mar 8, 2019
CMakeLists.txt threading works! Mar 22, 2019
README.md [skip ci] Fix README Sep 15, 2019
azure-pipelines.yml Update azure-pipelines.yml for Azure Pipelines Jul 14, 2019

README.md

IDA command palette & further

Build Status

screenshot

How to build

Currently tested on Windows. Install Qt 5.6.3 and IDA SDK, and follow steps in azure-pipelines.yml.

You can download prebuilt plugins from azure pipelines.

Python API

You can make a custom palette in IDAPython.

from __palette__ import show_palette, Palette, Action
import random, string

myhandler = lambda item: sys.stdout.write('You selected: %s\n' % item.name)
random_str = lambda: "".join(random.choice(string.lowercase) for i in range(20))

entries = [Action(name=random_str(), # displayed text
    handler=myhandler, # callback
    id='action%d' % i # must be unique
    ) for i in range(20)]

show_palette(Palette('palette name here', 'placeholder here...', entries))

C++ API

Currently cleaning up C++ API. See standalone/ folder.

#include <widgets/palette_manager.h>
#define COUNT 100

QVector<Action> testItems() {
    QVector<Action> action_list;

    action_list.reserve(COUNT + 1);
    action_list.push_back(Action("std::runtime_error", "raise exception", ""));

    for (int i = 0; i < COUNT; i++) {
        auto id = QString::number(rand());
        action_list.push_back(Action(id, id, ""));
    }

    return action_list;
}

const QString TestPluginPath(const char* name) {
    // Don't worry! also packaged with bundle theme!
    // Just point a writable path
    return QString("./path_to_plugin_theme/") + name;
}

int main() {
    QApplication app(argc, argv);

    set_path_handler(TestPluginPath);

    show_palette("<test palette>", "Enter item name...", testItems(), [](const Action & action) {
        if (action.id() == "std::runtime_error") {
            throw std::runtime_error("raised!");
        }
        qDebug() << action.id() << action.description() << action.shortcut();
        return false;
    });

    app.exec();
}

Changing theme

You can copy css, json files from palette/res/theme/<name>/* to %APPDATA%/Hex-rays/IDA Pro/plugins/palette/theme/, like the existing css, json files.

ayu white:

screenshot

You can’t perform that action at this time.