X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Frpcconsole.cpp;h=ae74ab32e8dd70f212637def9a47ab2d39b36a10;hb=70338acb43623e2f1ae88790159eea3647c611d1;hp=ce713793ea091eae856a829b7d23be081c6930c8;hpb=a75927ea86b5456e0cb0bf68226c8e3402197ec8;p=novacoin.git diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index ce71379..ae74ab3 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -13,13 +13,14 @@ #include #include #include +#include #include +#include // TODO: make it possible to filter out categories (esp debug messages when implemented) // TODO: receive errors and debug messages through ClientModel -const int CONSOLE_SCROLLBACK = 50; const int CONSOLE_HISTORY = 50; const QSize ICON_SIZE(24, 24); @@ -197,6 +198,7 @@ RPCConsole::RPCConsole(QWidget *parent) : #ifndef Q_OS_MAC ui->openDebugLogfileButton->setIcon(QIcon(":/icons/export")); + ui->openConfigurationfileButton->setIcon(QIcon(":/icons/export")); ui->showCLOptionsButton->setIcon(QIcon(":/icons/options")); #endif @@ -207,8 +209,9 @@ RPCConsole::RPCConsole(QWidget *parent) : connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear())); connect(ui->btnClearTrafficGraph, SIGNAL(clicked()), ui->trafficGraph, SLOT(clear())); - // set OpenSSL version label + // set library version labels ui->openSSLVersion->setText(SSLeay_version(SSLEAY_VERSION)); + ui->berkeleyDBVersion->setText(DbEnv::version(0, 0, 0)); startExecutor(); setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS); @@ -241,6 +244,14 @@ bool RPCConsole::eventFilter(QObject* obj, QEvent *event) return true; } break; + case Qt::Key_Return: + case Qt::Key_Enter: + // forward these events to lineEdit + if(obj == autoCompleter->popup()) { + QApplication::postEvent(ui->lineEdit, new QKeyEvent(*keyevt)); + return true; + } + break; default: // Typing in messages widget brings focus to line edit, and redirects key there // Exclude most combinations and keys that emit no text, except paste shortcuts @@ -251,6 +262,7 @@ bool RPCConsole::eventFilter(QObject* obj, QEvent *event) { ui->lineEdit->setFocus(); QApplication::postEvent(ui->lineEdit, new QKeyEvent(*keyevt)); + autoCompleter->popup()->hide(); return true; } } @@ -268,7 +280,7 @@ void RPCConsole::setClientModel(ClientModel *model) connect(model, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int))); connect(model, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int))); - updateTrafficStats(model->getTotalBytesRecv(), model->getTotalBytesSent()); + updateTrafficStats(model->getTotalBytesRecv(), model->getTotalBytesSent()); connect(model, SIGNAL(bytesChanged(quint64,quint64)), this, SLOT(updateTrafficStats(quint64, quint64))); // Provide initial values ui->clientVersion->setText(model->formatFullVersion()); @@ -280,6 +292,21 @@ 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 is initially disabled because running commands is only + // possible from now on. + ui->lineEdit->setEnabled(true); + ui->lineEdit->setCompleter(autoCompleter); + autoCompleter->popup()->installEventFilter(this); } } @@ -297,6 +324,8 @@ static QString categoryClass(int category) void RPCConsole::clear() { ui->messagesWidget->clear(); + history.clear(); + historyPtr = 0; ui->lineEdit->clear(); ui->lineEdit->setFocus(); @@ -314,7 +343,7 @@ void RPCConsole::clear() ui->messagesWidget->document()->setDefaultStyleSheet( "table { }" "td.time { color: #808080; padding-top: 3px; } " - "td.message { font-family: Monospace; font-size: 12px; } " + "td.message { font-family: Monospace; } " "td.cmd-request { color: #006060; } " "td.cmd-error { color: red; } " "b { color: #006060; } " @@ -343,7 +372,14 @@ void RPCConsole::message(int category, const QString &message, bool html) void RPCConsole::setNumConnections(int count) { - ui->numberOfConnections->setText(QString::number(count)); + if (!clientModel) + return; + + QString connections = QString::number(count) + " ("; + connections += tr("Inbound:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_IN)) + " / "; + connections += tr("Outbound:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_OUT)) + ")"; + + ui->numberOfConnections->setText(connections); } void RPCConsole::setNumBlocks(int count, int countOfPeers) @@ -367,8 +403,8 @@ void RPCConsole::on_lineEdit_returnPressed() { message(CMD_REQUEST, cmd); emit cmdRequest(cmd); - // Truncate history from current position - history.erase(history.begin() + historyPtr, history.end()); + // Remove command, if already in history + history.removeOne(cmd); // Append command to history history.append(cmd); // Enforce maximum history size @@ -432,6 +468,11 @@ void RPCConsole::on_openDebugLogfileButton_clicked() GUIUtil::openDebugLogfile(); } +void RPCConsole::on_openConfigurationfileButton_clicked() +{ + GUIUtil::openConfigfile(); +} + void RPCConsole::scrollToEnd() { QScrollBar *scrollbar = ui->messagesWidget->verticalScrollBar(); @@ -497,8 +538,15 @@ void RPCConsole::hideEvent(QHideEvent *event) void RPCConsole::keyPressEvent(QKeyEvent *event) { +#ifdef ANDROID + if(windowType() != Qt::Widget && event->key() == Qt::Key_Back) + { + close(); + } +#else if(windowType() != Qt::Widget && event->key() == Qt::Key_Escape) { close(); } -} \ No newline at end of file +#endif +}