diff options
author | Jonas Schnelli <dev@jonasschnelli.ch> | 2016-03-14 09:18:51 +0100 |
---|---|---|
committer | Jonas Schnelli <dev@jonasschnelli.ch> | 2016-03-14 09:20:29 +0100 |
commit | 3798e5de334c3deb5f71302b782f6b8fbd5087f1 (patch) | |
tree | 460781f463b7b271c0ff4496d263431825867d51 | |
parent | 0fa88ef784dda77422fdb20b7358803f9b30a5c1 (diff) | |
parent | ce7413fcb7d28bd72e5ade7dc9756504de766fc2 (diff) |
Merge #7613: Add autocomplete to bitcoin-qt's console window.
ce7413f Add autocomplete to bitcoin-qt's console window. (Luv Khemani)
-rw-r--r-- | src/qt/rpcconsole.cpp | 13 | ||||
-rw-r--r-- | src/qt/rpcconsole.h | 2 | ||||
-rw-r--r-- | src/rpc/server.cpp | 11 | ||||
-rw-r--r-- | src/rpc/server.h | 6 |
4 files changed, 32 insertions, 0 deletions
diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 4e2530ffab..06fa85c34b 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -36,6 +36,7 @@ #include <QThread> #include <QTime> #include <QTimer> +#include <QStringList> #if QT_VERSION < 0x050000 #include <QUrl> @@ -446,6 +447,18 @@ void RPCConsole::setClientModel(ClientModel *model) ui->buildDate->setText(model->formatBuildDate()); ui->startupTime->setText(model->formatClientStartupTime()); ui->networkName->setText(QString::fromStdString(Params().NetworkIDString())); + + //Setup autocomplete and attach it + QStringList wordList; + std::vector<std::string> commandList = tableRPC.listCommands(); + for (size_t i = 0; i < commandList.size(); ++i) + { + wordList << commandList[i].c_str(); + } + + autoCompleter = new QCompleter(wordList, this); + ui->lineEdit->setCompleter(autoCompleter); + } } diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index 648e32638f..ad10ec12aa 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -11,6 +11,7 @@ #include "net.h" #include <QWidget> +#include <QCompleter> class ClientModel; class PlatformStyle; @@ -138,6 +139,7 @@ private: QMenu *peersTableContextMenu; QMenu *banTableContextMenu; int consoleFontSize; + QCompleter *autoCompleter; }; #endif // BITCOIN_QT_RPCCONSOLE_H diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp index b2d4559ccd..e6fae263bf 100644 --- a/src/rpc/server.cpp +++ b/src/rpc/server.cpp @@ -499,6 +499,17 @@ UniValue CRPCTable::execute(const std::string &strMethod, const UniValue ¶ms g_rpcSignals.PostCommand(*pcmd); } +std::vector<std::string> CRPCTable::listCommands() const +{ + std::vector<std::string> commandList; + typedef std::map<std::string, const CRPCCommand*> commandMap; + + std::transform( mapCommands.begin(), mapCommands.end(), + std::back_inserter(commandList), + boost::bind(&commandMap::value_type::first,_1) ); + return commandList; +} + std::string HelpExampleCli(const std::string& methodname, const std::string& args) { return "> bitcoin-cli " + methodname + " " + args + "\n"; diff --git a/src/rpc/server.h b/src/rpc/server.h index 99ffad5d40..3f46841c4d 100644 --- a/src/rpc/server.h +++ b/src/rpc/server.h @@ -145,6 +145,12 @@ public: */ UniValue execute(const std::string &method, const UniValue ¶ms) const; + /** + * Returns a list of registered commands + * @returns List of registered commands. + */ + std::vector<std::string> listCommands() const; + /** * Appends a CRPCCommand to the dispatch table. |