mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-13 03:30:42 +02:00
Merge 5891 via qt_console_history_persist
This commit is contained in:
commit
7663851899
@ -594,6 +594,41 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
|
||||
consoleFontSize = settings.value(fontSizeSettingsKey, QFont().pointSize()).toInt();
|
||||
clear();
|
||||
|
||||
// load history
|
||||
QMap<size_t, QString> rewrite_replace;
|
||||
int size = settings.beginReadArray("nRPCConsoleWindowHistory");
|
||||
history.clear();
|
||||
for (int i = 0; i < size; ++i) {
|
||||
settings.setArrayIndex(i);
|
||||
QString cmd = settings.value("cmd").toString();
|
||||
QString filtered_cmd;
|
||||
{
|
||||
std::string strFilteredCmd, dummy;
|
||||
if (RPCParseCommandLine(nullptr, dummy, cmd.toStdString(), false, &strFilteredCmd)) {
|
||||
filtered_cmd = QString::fromStdString(strFilteredCmd);
|
||||
} else {
|
||||
// Failed to parse command, so we cannot even filter it for the history
|
||||
filtered_cmd = cmd;
|
||||
}
|
||||
}
|
||||
if (cmd != filtered_cmd) {
|
||||
// Overwrite this line, and trigger an immediate rewrite of history to purge it
|
||||
cmd = QString(cmd.size(), 'x');
|
||||
rewrite_replace[history.size()] = filtered_cmd;
|
||||
}
|
||||
history.append(cmd);
|
||||
}
|
||||
historyPtr = history.size();
|
||||
settings.endArray();
|
||||
if (!rewrite_replace.empty()) {
|
||||
WriteCommandHistory();
|
||||
for (QMapIterator<size_t, QString> i(rewrite_replace); i.hasNext(); ) {
|
||||
i.next();
|
||||
history[i.key()] = i.value();
|
||||
}
|
||||
WriteCommandHistory();
|
||||
}
|
||||
|
||||
GUIUtil::handleCloseWindowShortcut(this);
|
||||
|
||||
QObject::connect(new QShortcut(QKeySequence(QStringLiteral("Ctrl+D")), ui->tab_console), &QShortcut::activated, this, &QWidget::close);
|
||||
@ -601,6 +636,18 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
|
||||
updateWindowTitle();
|
||||
}
|
||||
|
||||
void RPCConsole::WriteCommandHistory()
|
||||
{
|
||||
// persist history
|
||||
QSettings settings;
|
||||
settings.beginWriteArray("nRPCConsoleWindowHistory");
|
||||
for (int i = 0; i < history.size(); ++i) {
|
||||
settings.setArrayIndex(i);
|
||||
settings.setValue("cmd", history.at(i));
|
||||
}
|
||||
settings.endArray();
|
||||
}
|
||||
|
||||
RPCConsole::~RPCConsole()
|
||||
{
|
||||
QSettings settings;
|
||||
@ -619,6 +666,8 @@ RPCConsole::~RPCConsole()
|
||||
settings.setValue("PeersTabPeerHeaderState", m_peer_widget_header_state);
|
||||
settings.setValue("PeersTabBanlistHeaderState", m_banlist_widget_header_state);
|
||||
|
||||
WriteCommandHistory();
|
||||
|
||||
m_node.rpcUnsetTimerInterface(rpcTimerInterface);
|
||||
delete rpcTimerInterface;
|
||||
delete ui;
|
||||
|
@ -153,6 +153,7 @@ private:
|
||||
|
||||
void startExecutor();
|
||||
void setTrafficGraphRange(int mins);
|
||||
void WriteCommandHistory();
|
||||
|
||||
enum ColumnWidths
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user