Browse Source

Isolate logging and place into module.

cl-refactor
Gav Wood 9 years ago
parent
commit
b9dc74c2dd
  1. 1
      alethzero/AllAccounts.h
  2. 3
      alethzero/CMakeLists.txt
  3. 98
      alethzero/LogPanel.cpp
  4. 62
      alethzero/LogPanel.h
  5. 99
      alethzero/LogPanel.ui
  6. 228
      alethzero/Main.ui
  7. 38
      alethzero/MainWin.cpp
  8. 7
      alethzero/MainWin.h

1
alethzero/AllAccounts.h

@ -49,6 +49,7 @@ private slots:
void onAllChange(); void onAllChange();
void refresh(); void refresh();
private: private:
void installWatches(); void installWatches();

3
alethzero/CMakeLists.txt

@ -33,6 +33,7 @@ qt5_wrap_ui(ui_GasPricing.h GasPricing.ui)
# Extensions # Extensions
qt5_wrap_ui(ui_AllAccounts.h AllAccounts.ui) qt5_wrap_ui(ui_AllAccounts.h AllAccounts.ui)
qt5_wrap_ui(ui_LogPanel.h LogPanel.ui)
file(GLOB HEADERS "*.h") file(GLOB HEADERS "*.h")
@ -45,7 +46,7 @@ endif ()
# eth_add_executable is defined in cmake/EthExecutableHelper.cmake # eth_add_executable is defined in cmake/EthExecutableHelper.cmake
eth_add_executable(${EXECUTABLE} eth_add_executable(${EXECUTABLE}
ICON alethzero ICON alethzero
UI_RESOURCES alethzero.icns Main.ui Connect.ui Debugger.ui Transact.ui ExportState.ui GetPassword.ui GasPricing.ui AllAccounts.ui UI_RESOURCES alethzero.icns Main.ui Connect.ui Debugger.ui Transact.ui ExportState.ui GetPassword.ui GasPricing.ui AllAccounts.ui LogPanel.ui
WIN_RESOURCES alethzero.rc WIN_RESOURCES alethzero.rc
) )

98
alethzero/LogPanel.cpp

@ -0,0 +1,98 @@
/*
This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
cpp-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file LogPanel.h
* @author Gav Wood <i@gavwood.com>
* @date 2015
*/
#include "LogPanel.h"
#include <sstream>
#include <QClipboard>
#include <QSettings>
#include <libdevcore/Log.h>
#include <libdevcore/SHA3.h>
#include <libevmcore/Instruction.h>
#include <libethereum/Client.h>
#include "ui_LogPanel.h"
using namespace std;
using namespace dev;
using namespace az;
using namespace eth;
static QString filterOutTerminal(QString _s)
{
return _s.replace(QRegExp("\x1b\\[(\\d;)?\\d+m"), "");
}
LogPanel::LogPanel(MainFace* _m):
Plugin(_m, "LogPanel"),
m_ui(new Ui::LogPanel)
{
dock(Qt::RightDockWidgetArea, "Log")->setWidget(new QWidget);
m_ui->setupUi(dock()->widget());
connect(m_ui->verbosity, SIGNAL(valueChanged(int)), SLOT(on_verbosity_valueChanged()));
g_logPost = [=](string const& s, char const* c)
{
simpleDebugOut(s, c);
m_logLock.lock();
m_logHistory.append(filterOutTerminal(QString::fromStdString(s)) + "\n");
m_logChanged = true;
m_logLock.unlock();
// ui->log->addItem(QString::fromStdString(s));
};
// TODO: refactor
{
QSettings s("ethereum", "alethzero");
m_ui->verbosity->setValue(s.value("verbosity", 1).toInt());
}
on_verbosity_valueChanged();
}
LogPanel::~LogPanel()
{
// Must do this here since otherwise m_ethereum'll be deleted (and therefore clearWatches() called by the destructor)
// *after* the client is dead.
g_logPost = simpleDebugOut;
// TODO: refactor
{
QSettings s("ethereum", "alethzero");
s.setValue("verbosity", m_ui->verbosity->value());
}
}
void LogPanel::timerEvent(QTimerEvent*)
{
if (m_logChanged)
{
m_logLock.lock();
m_logChanged = false;
m_ui->log->appendPlainText(m_logHistory.mid(0, m_logHistory.length() - 1));
m_logHistory.clear();
m_logLock.unlock();
}
}
void LogPanel::on_verbosity_valueChanged()
{
g_logVerbosity = m_ui->verbosity->value();
m_ui->verbosityLabel->setText(QString::number(g_logVerbosity));
}

62
alethzero/LogPanel.h

@ -0,0 +1,62 @@
/*
This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
cpp-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file AllAccounts.h
* @author Gav Wood <i@gavwood.com>
* @date 2015
*/
#pragma once
#include <QMutex>
#include <QString>
#include <QPair>
#include <QList>
#include "MainFace.h"
namespace Ui
{
class LogPanel;
}
namespace dev
{
namespace az
{
class LogPanel: public QObject, public Plugin
{
Q_OBJECT
public:
LogPanel(MainFace* _m);
~LogPanel();
private slots:
void on_verbosity_valueChanged();
private:
void timerEvent(QTimerEvent*);
Ui::LogPanel* m_ui;
QMutex m_logLock;
QString m_logHistory;
bool m_logChanged = true;
};
}
}

99
alethzero/LogPanel.ui

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LogPanel</class>
<widget class="QWidget" name="LogPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>834</width>
<height>265</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPlainTextEdit" name="log">
<property name="font">
<font>
<family>Ubuntu Mono</family>
</font>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<property name="spacing">
<number>6</number>
</property>
<item>
<widget class="QSlider" name="verbosity">
<property name="maximum">
<number>20</number>
</property>
<property name="value">
<number>1</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBothSides</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="verbosityLabel">
<property name="minimumSize">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>20</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

228
alethzero/Main.ui

@ -383,96 +383,6 @@
</layout> </layout>
</widget> </widget>
</widget> </widget>
<widget class="QDockWidget" name="dockWidget_4">
<property name="features">
<set>QDockWidget::DockWidgetFeatureMask</set>
</property>
<property name="windowTitle">
<string>Log</string>
</property>
<attribute name="dockWidgetArea">
<number>8</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents_4">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPlainTextEdit" name="log">
<property name="font">
<font>
<family>Ubuntu Mono</family>
</font>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QSlider" name="verbosity">
<property name="maximum">
<number>20</number>
</property>
<property name="value">
<number>1</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBothSides</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="verbosityLabel">
<property name="minimumSize">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>20</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<widget class="QDockWidget" name="dockWidget"> <widget class="QDockWidget" name="dockWidget">
<property name="features"> <property name="features">
<set>QDockWidget::DockWidgetFeatureMask</set> <set>QDockWidget::DockWidgetFeatureMask</set>
@ -1111,40 +1021,37 @@ font-size: 14pt</string>
</attribute> </attribute>
<widget class="QWidget" name="dockWidgetContents_14"> <widget class="QWidget" name="dockWidgetContents_14">
<layout class="QGridLayout" name="gridLayout_4"> <layout class="QGridLayout" name="gridLayout_4">
<item row="2" column="4"> <item row="4" column="0" rowspan="2">
<widget class="QSpinBox" name="shhWork"> <widget class="QLabel" name="label_8">
<property name="suffix"> <property name="sizePolicy">
<string> ms</string> <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
</property> <horstretch>0</horstretch>
<property name="minimum"> <verstretch>0</verstretch>
<number>1</number> </sizepolicy>
</property> </property>
<property name="maximum"> <property name="text">
<number>1000</number> <string>Data</string>
</property> </property>
<property name="value"> <property name="alignment">
<number>50</number> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="2" column="2" colspan="2">
<widget class="QLabel" name="label_9"> <widget class="QLabel" name="label5_6">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Topic</string> <string>Work to Prove</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1" colspan="4"> <item row="5" column="1" colspan="4">
<widget class="QPlainTextEdit" name="shhTopic"> <widget class="QPlainTextEdit" name="shhData">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -1159,8 +1066,8 @@ font-size: 14pt</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1" colspan="4"> <item row="3" column="1" colspan="4">
<widget class="QPlainTextEdit" name="shhData"> <widget class="QPlainTextEdit" name="shhTopic">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -1175,36 +1082,26 @@ font-size: 14pt</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="4"> <item row="1" column="1" colspan="4">
<widget class="QPushButton" name="post"> <widget class="QComboBox" name="shhFrom">
<property name="text"> <property name="editable">
<string>Post</string> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="3" column="0">
<widget class="QLabel" name="label5_5"> <widget class="QLabel" name="label_9">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>TTL</string> <string>Topic</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label5_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="text"> <property name="alignment">
<string>From</string> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -1221,13 +1118,6 @@ font-size: 14pt</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" colspan="4">
<widget class="QComboBox" name="shhFrom">
<property name="editable">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="1" colspan="4"> <item row="0" column="1" colspan="4">
<widget class="QComboBox" name="shhTo"> <widget class="QComboBox" name="shhTo">
<property name="editable"> <property name="editable">
@ -1235,22 +1125,6 @@ font-size: 14pt</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0" rowspan="2">
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Data</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="QSpinBox" name="shhTtl"> <widget class="QSpinBox" name="shhTtl">
<property name="suffix"> <property name="suffix">
@ -1264,8 +1138,8 @@ font-size: 14pt</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="2" colspan="2"> <item row="2" column="0">
<widget class="QLabel" name="label5_6"> <widget class="QLabel" name="label5_5">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -1273,7 +1147,43 @@ font-size: 14pt</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Work to Prove</string> <string>TTL</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label5_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>From</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QSpinBox" name="shhWork">
<property name="suffix">
<string> ms</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>1000</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="QPushButton" name="post">
<property name="text">
<string>Post</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -1762,9 +1672,7 @@ font-size: 14pt</string>
<tabstop>shhTopic</tabstop> <tabstop>shhTopic</tabstop>
<tabstop>shhWork</tabstop> <tabstop>shhWork</tabstop>
<tabstop>shhData</tabstop> <tabstop>shhData</tabstop>
<tabstop>log</tabstop>
<tabstop>post</tabstop> <tabstop>post</tabstop>
<tabstop>verbosity</tabstop>
<tabstop>tabWidget</tabstop> <tabstop>tabWidget</tabstop>
<tabstop>urlEdit</tabstop> <tabstop>urlEdit</tabstop>
<tabstop>listenIP</tabstop> <tabstop>listenIP</tabstop>

38
alethzero/MainWin.cpp

@ -75,6 +75,7 @@
#include "WebPage.h" #include "WebPage.h"
#include "ExportState.h" #include "ExportState.h"
#include "AllAccounts.h" #include "AllAccounts.h"
#include "LogPanel.h"
#include "ui_Main.h" #include "ui_Main.h"
#include "ui_GetPassword.h" #include "ui_GetPassword.h"
#include "ui_GasPricing.h" #include "ui_GasPricing.h"
@ -123,11 +124,6 @@ QString contentsOfQResource(string const& res)
Address c_newConfig = Address("c6d9d2cd449a754c494264e1809c50e34d64562b"); Address c_newConfig = Address("c6d9d2cd449a754c494264e1809c50e34d64562b");
//Address c_nameReg = Address("ddd1cea741d548f90d86fb87a3ae6492e18c03a1"); //Address c_nameReg = Address("ddd1cea741d548f90d86fb87a3ae6492e18c03a1");
static QString filterOutTerminal(QString _s)
{
return _s.replace(QRegExp("\x1b\\[(\\d;)?\\d+m"), "");
}
Main::Main(QWidget* _parent): Main::Main(QWidget* _parent):
MainFace(_parent), MainFace(_parent),
ui(new Ui::Main), ui(new Ui::Main),
@ -158,16 +154,6 @@ Main::Main(QWidget* _parent):
else if (c_network == eth::Network::Frontier) else if (c_network == eth::Network::Frontier)
setWindowTitle("AlethZero Frontier"); setWindowTitle("AlethZero Frontier");
g_logPost = [=](string const& s, char const* c)
{
simpleDebugOut(s, c);
m_logLock.lock();
m_logHistory.append(filterOutTerminal(QString::fromStdString(s)) + "\n");
m_logChanged = true;
m_logLock.unlock();
// ui->log->addItem(QString::fromStdString(s));
};
// Open Key Store // Open Key Store
bool opened = false; bool opened = false;
if (m_keyManager.exists()) if (m_keyManager.exists())
@ -217,7 +203,6 @@ Main::Main(QWidget* _parent):
cerr << "Client database version: " << c_databaseVersion << endl; cerr << "Client database version: " << c_databaseVersion << endl;
ui->configDock->close(); ui->configDock->close();
on_verbosity_valueChanged();
statusBar()->addPermanentWidget(ui->cacheUsage); statusBar()->addPermanentWidget(ui->cacheUsage);
statusBar()->addPermanentWidget(ui->balance); statusBar()->addPermanentWidget(ui->balance);
@ -309,15 +294,13 @@ Main::Main(QWidget* _parent):
} }
new dev::az::AllAccounts(this); new dev::az::AllAccounts(this);
new dev::az::LogPanel(this);
} }
Main::~Main() Main::~Main()
{ {
m_httpConnector->StopListening(); m_httpConnector->StopListening();
writeSettings(); writeSettings();
// Must do this here since otherwise m_ethereum'll be deleted (and therefore clearWatches() called by the destructor)
// *after* the client is dead.
g_logPost = simpleDebugOut;
} }
bool Main::confirm() const bool Main::confirm() const
@ -786,7 +769,6 @@ void Main::writeSettings()
s.setValue("port", ui->port->value()); s.setValue("port", ui->port->value());
s.setValue("url", ui->urlEdit->text()); s.setValue("url", ui->urlEdit->text());
s.setValue("privateChain", m_privateChain); s.setValue("privateChain", m_privateChain);
s.setValue("verbosity", ui->verbosity->value());
if (auto vm = m_vmSelectionGroup->checkedAction()) if (auto vm = m_vmSelectionGroup->checkedAction())
s.setValue("vm", vm->text()); s.setValue("vm", vm->text());
@ -888,7 +870,6 @@ void Main::readSettings(bool _skipGeometry)
ui->port->setValue(s.value("port", ui->port->value()).toInt()); ui->port->setValue(s.value("port", ui->port->value()).toInt());
ui->nameReg->setText(s.value("nameReg", "").toString()); ui->nameReg->setText(s.value("nameReg", "").toString());
setPrivateChain(s.value("privateChain", "").toString()); setPrivateChain(s.value("privateChain", "").toString());
ui->verbosity->setValue(s.value("verbosity", 1).toInt());
#if ETH_EVMJIT // We care only if JIT is enabled. Otherwise it can cause misconfiguration. #if ETH_EVMJIT // We care only if JIT is enabled. Otherwise it can cause misconfiguration.
auto vmName = s.value("vm").toString(); auto vmName = s.value("vm").toString();
@ -1453,15 +1434,6 @@ void Main::timerEvent(QTimerEvent*)
if ((interval / 100 % 2 == 0 && m_webThree->ethereum()->isSyncing()) || interval == 1000) if ((interval / 100 % 2 == 0 && m_webThree->ethereum()->isSyncing()) || interval == 1000)
ui->downloadView->update(); ui->downloadView->update();
if (m_logChanged)
{
m_logLock.lock();
m_logChanged = false;
ui->log->appendPlainText(m_logHistory.mid(0, m_logHistory.length() - 1));
m_logHistory.clear();
m_logLock.unlock();
}
// refresh peer list every 1000ms, reset counter // refresh peer list every 1000ms, reset counter
if (interval == 1000) if (interval == 1000)
{ {
@ -2030,12 +2002,6 @@ void Main::on_connect_triggered()
} }
} }
void Main::on_verbosity_valueChanged()
{
g_logVerbosity = ui->verbosity->value();
ui->verbosityLabel->setText(QString::number(g_logVerbosity));
}
void Main::on_mine_triggered() void Main::on_mine_triggered()
{ {
if (ui->mine->isChecked()) if (ui->mine->isChecked())

7
alethzero/MainWin.h

@ -153,10 +153,6 @@ private slots:
void on_blockChainFilter_textChanged(); void on_blockChainFilter_textChanged();
void on_blocks_currentItemChanged(); void on_blocks_currentItemChanged();
// Logging
// void on_log_doubleClicked();
void on_verbosity_valueChanged();
// Misc // Misc
void on_urlEdit_returnPressed(); void on_urlEdit_returnPressed();
void on_jsInput_returnPressed(); void on_jsInput_returnPressed();
@ -270,9 +266,6 @@ private:
QActionGroup* m_vmSelectionGroup = nullptr; QActionGroup* m_vmSelectionGroup = nullptr;
QList<QPair<QString, QString>> m_consoleHistory; QList<QPair<QString, QString>> m_consoleHistory;
QMutex m_logLock;
QString m_logHistory;
bool m_logChanged = true;
std::unique_ptr<jsonrpc::HttpServer> m_httpConnector; std::unique_ptr<jsonrpc::HttpServer> m_httpConnector;
std::unique_ptr<OurWebThreeStubServer> m_server; std::unique_ptr<OurWebThreeStubServer> m_server;

Loading…
Cancel
Save