Browse Source

Add autocomplete to bitcoin-qt's console window.

Removed externs
Added listCommands() to CRPCTable

Move autocomplete init to RPCConsole::setClientModel()
0.13
Luv Khemani 9 years ago
parent
commit
ce7413fcb7
  1. 13
      src/qt/rpcconsole.cpp
  2. 2
      src/qt/rpcconsole.h
  3. 11
      src/rpc/server.cpp
  4. 6
      src/rpc/server.h

13
src/qt/rpcconsole.cpp

@ -36,6 +36,7 @@
#include <QThread> #include <QThread>
#include <QTime> #include <QTime>
#include <QTimer> #include <QTimer>
#include <QStringList>
#if QT_VERSION < 0x050000 #if QT_VERSION < 0x050000
#include <QUrl> #include <QUrl>
@ -446,6 +447,18 @@ void RPCConsole::setClientModel(ClientModel *model)
ui->buildDate->setText(model->formatBuildDate()); ui->buildDate->setText(model->formatBuildDate());
ui->startupTime->setText(model->formatClientStartupTime()); ui->startupTime->setText(model->formatClientStartupTime());
ui->networkName->setText(QString::fromStdString(Params().NetworkIDString())); 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);
} }
} }

2
src/qt/rpcconsole.h

@ -11,6 +11,7 @@
#include "net.h" #include "net.h"
#include <QWidget> #include <QWidget>
#include <QCompleter>
class ClientModel; class ClientModel;
class PlatformStyle; class PlatformStyle;
@ -138,6 +139,7 @@ private:
QMenu *peersTableContextMenu; QMenu *peersTableContextMenu;
QMenu *banTableContextMenu; QMenu *banTableContextMenu;
int consoleFontSize; int consoleFontSize;
QCompleter *autoCompleter;
}; };
#endif // BITCOIN_QT_RPCCONSOLE_H #endif // BITCOIN_QT_RPCCONSOLE_H

11
src/rpc/server.cpp

@ -499,6 +499,17 @@ UniValue CRPCTable::execute(const std::string &strMethod, const UniValue &params
g_rpcSignals.PostCommand(*pcmd); 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) std::string HelpExampleCli(const std::string& methodname, const std::string& args)
{ {
return "> bitcoin-cli " + methodname + " " + args + "\n"; return "> bitcoin-cli " + methodname + " " + args + "\n";

6
src/rpc/server.h

@ -145,6 +145,12 @@ public:
*/ */
UniValue execute(const std::string &method, const UniValue &params) const; UniValue execute(const std::string &method, const UniValue &params) 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. * Appends a CRPCCommand to the dispatch table.

Loading…
Cancel
Save