From: Luv Khemani Date: Fri, 29 Nov 2019 13:37:20 +0000 (+0200) Subject: Add autocomplete to console window. X-Git-Tag: nvc-v0.5.9~141^2~8 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=fc1b804200aaee8945d6607361f210baf158c967 Add autocomplete to console window. --- diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index b32b86e..70b807a 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -1110,6 +1110,16 @@ json_spirit::Value CRPCTable::execute(const std::string &strMethod, const json_s } } +std::vector CRPCTable::listCommands() const +{ + std::vector commandList; + typedef std::map commandMap; + + std::transform( mapCommands.begin(), mapCommands.end(), + std::back_inserter(commandList), + boost::bind(&commandMap::value_type::first,_1) ); + return commandList; +} Object CallRPC(const string& strMethod, const Array& params) { diff --git a/src/bitcoinrpc.h b/src/bitcoinrpc.h index 6c707ea..ba7c0fb 100644 --- a/src/bitcoinrpc.h +++ b/src/bitcoinrpc.h @@ -119,6 +119,12 @@ public: * @throws an exception (json_spirit::Value) when an error happens. */ json_spirit::Value execute(const std::string &method, const json_spirit::Array ¶ms) const; + + /** + * Returns a list of registered commands + * @returns List of registered commands. + */ + std::vector listCommands() const; }; extern const CRPCTable tableRPC; diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index c793bf9..1738d0f 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -282,7 +283,19 @@ void RPCConsole::setClientModel(ClientModel *model) ui->isTestNet->setChecked(model->isTestNet()); setNumBlocks(model->getNumBlocks(), model->getNumBlocksOfPeers()); - } + + //Setup autocomplete and attach it + QStringList wordList; + std::vector 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); + + } } static QString categoryClass(int category) diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index aa8c8f3..dbca630 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -2,6 +2,7 @@ #define RPCCONSOLE_H #include +#include namespace Ui { class RPCConsole; @@ -80,6 +81,7 @@ private: ClientModel *clientModel; QStringList history; int historyPtr; + QCompleter *autoCompleter; void startExecutor(); };