diff --git a/alethzero/Main.ui b/alethzero/Main.ui index c786a29f5..63e551ce4 100644 --- a/alethzero/Main.ui +++ b/alethzero/Main.ui @@ -36,29 +36,6 @@ <property name="bottomMargin"> <number>0</number> </property> - <item> - <widget class="QTabWidget" name="tabWidget"> - <widget class="QWidget" name="tabWidgetPage1"> - <attribute name="title"> - <string/> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QLineEdit" name="urlEdit"/> - </item> - <item> - <widget class="QWebView" name="webView"> - <property name="url"> - <url> - <string>about:blank</string> - </url> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> @@ -869,13 +846,6 @@ </action> </widget> <layoutdefault spacing="6" margin="11"/> - <customwidgets> - <customwidget> - <class>QWebView</class> - <extends>QWidget</extends> - <header>QtWebKitWidgets/QWebView</header> - </customwidget> - </customwidgets> <tabstops> <tabstop>destination</tabstop> <tabstop>calculatedName</tabstop> diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index 8071999d8..4114ce2a2 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -52,152 +52,6 @@ using eth::g_logPost; using eth::g_logVerbosity; using eth::c_instructionInfo; -// Horrible global for the mainwindow. Needed for the QEthereums to find the Main window which acts as multiplexer for now. -// Can get rid of this once we've sorted out ITC for signalling & multiplexed querying. -Main* g_main = nullptr; - -QEthereum::QEthereum(QObject* _p): QObject(_p) -{ - connect(g_main, SIGNAL(changed()), SIGNAL(changed())); -} - -QEthereum::~QEthereum() -{ -} - -Client* QEthereum::client() const -{ - return g_main->client(); -} - -Address QEthereum::coinbase() const -{ - return client()->address(); -} - -Address QEthereum::account() const -{ - if (g_main->owned().empty()) - return Address(); - return g_main->owned()[0].address(); -} - -QVector<Address> QEthereum::accounts() const -{ - QVector<Address> ret; - for (auto i: g_main->owned()) - ret.push_back(i.address()); - return ret; -} - -void QEthereum::setCoinbase(Address _a) -{ - if (client()->address() != _a) - { - client()->setAddress(_a); - changed(); - } -} - -QAccount::QAccount(QObject*) -{ -} - -QAccount::~QAccount() -{ -} - -void QAccount::setEthereum(QEthereum* _eth) -{ - if (m_eth == _eth) - return; - if (m_eth) - disconnect(m_eth, SIGNAL(changed()), this, SIGNAL(changed())); - m_eth = _eth; - if (m_eth) - connect(m_eth, SIGNAL(changed()), this, SIGNAL(changed())); - ethChanged(); - changed(); -} - -u256 QAccount::balance() const -{ - if (m_eth) - return m_eth->balanceAt(m_address); - return 0; -} - -double QAccount::txCount() const -{ - if (m_eth) - return m_eth->txCountAt(m_address); - return 0; -} - -bool QAccount::isContract() const -{ - if (m_eth) - return m_eth->isContractAt(m_address); - return 0; -} - -u256 QEthereum::balanceAt(Address _a) const -{ - return client()->postState().balance(_a); -} - -bool QEthereum::isContractAt(Address _a) const -{ - return client()->postState().isContractAddress(_a); -} - -bool QEthereum::isMining() const -{ - return client()->isMining(); -} - -bool QEthereum::isListening() const -{ - return client()->haveNetwork(); -} - -void QEthereum::setMining(bool _l) -{ - if (_l) - client()->startMining(); - else - client()->stopMining(); -} - -void QEthereum::setListening(bool _l) -{ - if (_l) - client()->startNetwork(); - else - client()->stopNetwork(); -} - -double QEthereum::txCountAt(Address _a) const -{ - return (double)client()->postState().transactionsFrom(_a); -} - -unsigned QEthereum::peerCount() const -{ - return (unsigned)client()->peerCount(); -} - -void QEthereum::transact(Secret _secret, u256 _amount, u256 _gasPrice, u256 _gas, QByteArray _code, QByteArray _init) -{ - client()->transact(_secret, _amount, bytes(_code.data(), _code.data() + _code.size()), bytes(_init.data(), _init.data() + _init.size()), _gas, _gasPrice); -} - -void QEthereum::transact(Secret _secret, Address _dest, u256 _amount, u256 _gasPrice, u256 _gas, QByteArray _data) -{ - client()->transact(_secret, _amount, _dest, bytes(_data.data(), _data.data() + _data.size()), _gas, _gasPrice); -} - - static void initUnits(QComboBox* _b) { for (auto n = (::uint)units().size(); n-- != 0; ) @@ -233,20 +87,11 @@ Main::Main(QWidget *parent) : QMainWindow(parent), ui(new Ui::Main) { - g_main = this; - setWindowFlags(Qt::Window); ui->setupUi(this); g_logPost = [=](std::string const& s, char const* c) { simpleDebugOut(s, c); ui->log->addItem(QString::fromStdString(s)); }; m_client.reset(new Client("AlethZero")); - qRegisterMetaType<eth::u256>("eth::u256"); - qRegisterMetaType<eth::KeyPair>("eth::KeyPair"); - qRegisterMetaType<eth::Secret>("eth::Secret"); - qRegisterMetaType<eth::Address>("eth::Address"); - qRegisterMetaType<QAccount*>("QAccount*"); - qRegisterMetaType<QEthereum*>("QEthereum*"); - m_refresh = new QTimer(this); connect(m_refresh, SIGNAL(timeout()), SLOT(refresh())); m_refresh->start(100); @@ -291,18 +136,6 @@ Main::Main(QWidget *parent) : statusBar()->addPermanentWidget(ui->peerCount); statusBar()->addPermanentWidget(ui->blockCount); - connect(ui->webView, &QWebView::titleChanged, [=]() - { - ui->tabWidget->setTabText(0, ui->webView->title()); - }); - - QWebFrame* f = ui->webView->page()->currentFrame(); - connect(f, &QWebFrame::javaScriptWindowObjectCleared, [=](){ - f->addToJavaScriptWindowObject("eth", new QEthereum, QWebFrame::ScriptOwnership); - f->addToJavaScriptWindowObject("u256", new U256Helper, QWebFrame::ScriptOwnership); - f->addToJavaScriptWindowObject("key", new KeyHelper, QWebFrame::ScriptOwnership); - }); - readSettings(); refresh(); @@ -405,8 +238,6 @@ void Main::writeSettings() s.setValue("peers", m_peers); s.setValue("nameReg", ui->nameReg->text()); - s.setValue("url", ui->urlEdit->text()); - s.setValue("geometry", saveGeometry()); s.setValue("windowState", saveState()); } @@ -438,8 +269,6 @@ void Main::readSettings() ui->idealPeers->setValue(s.value("idealPeers", ui->idealPeers->value()).toInt()); ui->port->setValue(s.value("port", ui->port->value()).toInt()); ui->nameReg->setText(s.value("NameReg", "").toString()); - ui->urlEdit->setText(s.value("url", "file:///home/gav/gavcoin.html").toString()); - on_urlEdit_editingFinished(); } void Main::on_nameReg_textChanged() @@ -569,11 +398,6 @@ void Main::refresh(bool _override) m_client->unlock(); } -void Main::on_urlEdit_editingFinished() -{ - ui->webView->setUrl(ui->urlEdit->text()); -} - void Main::ourAccountsRowsMoved() { QVector<KeyPair> myKeys; diff --git a/alethzero/MainWin.h b/alethzero/MainWin.h index b11348af5..841d58bee 100644 --- a/alethzero/MainWin.h +++ b/alethzero/MainWin.h @@ -23,145 +23,6 @@ class QJSEngine; class QEthereum; class QAccount; -Q_DECLARE_METATYPE(eth::u256) -Q_DECLARE_METATYPE(eth::Address) -Q_DECLARE_METATYPE(eth::Secret) -Q_DECLARE_METATYPE(eth::KeyPair) -Q_DECLARE_METATYPE(QEthereum*) -Q_DECLARE_METATYPE(QAccount*) - -class U256Helper: public QObject -{ - Q_OBJECT - -public: - U256Helper(QObject* _p = nullptr): QObject(_p) {} - - Q_INVOKABLE eth::u256 add(eth::u256 _a, eth::u256 _b) const { return _a + _b; } - Q_INVOKABLE eth::u256 sub(eth::u256 _a, eth::u256 _b) const { return _a - _b; } - Q_INVOKABLE eth::u256 mul(eth::u256 _a, int _b) const { return _a * _b; } - Q_INVOKABLE eth::u256 mul(int _a, eth::u256 _b) const { return _a * _b; } - Q_INVOKABLE eth::u256 div(eth::u256 _a, int _b) const { return _a / _b; } - - Q_INVOKABLE eth::u256 wei(double _s) const { return (eth::u256)_s; } - Q_INVOKABLE eth::u256 szabo(double _s) const { return (eth::u256)(_s * (double)eth::szabo); } - Q_INVOKABLE eth::u256 finney(double _s) const { return (eth::u256)(_s * (double)eth::finney); } - Q_INVOKABLE eth::u256 ether(double _s) const { return (eth::u256)(_s * (double)eth::ether); } - Q_INVOKABLE eth::u256 wei(unsigned _s) const { return (eth::u256)_s; } - Q_INVOKABLE eth::u256 szabo(unsigned _s) const { return (eth::u256)(_s * eth::szabo); } - Q_INVOKABLE eth::u256 finney(unsigned _s) const { return (eth::u256)(_s * eth::finney); } - Q_INVOKABLE eth::u256 ether(unsigned _s) const { return (eth::u256)(_s * eth::ether); } - Q_INVOKABLE double toWei(eth::u256 _t) const { return (double)_t; } - Q_INVOKABLE double toSzabo(eth::u256 _t) const { return toWei(_t) / (double)eth::szabo; } - Q_INVOKABLE double toFinney(eth::u256 _t) const { return toWei(_t) / (double)eth::finney; } - Q_INVOKABLE double toEther(eth::u256 _t) const { return toWei(_t) / (double)eth::ether; } - - Q_INVOKABLE double value(eth::u256 _t) const { return (double)_t; } - - Q_INVOKABLE QString stringOf(eth::u256 _t) const { return QString::fromStdString(eth::formatBalance(_t)); } - - Q_INVOKABLE QString testy() const { return "TEST"; } -}; - -class KeyHelper: public QObject -{ - Q_OBJECT - -public: - KeyHelper(QObject* _p = nullptr): QObject(_p) {} - - Q_INVOKABLE eth::KeyPair create() const { return eth::KeyPair::create(); } - Q_INVOKABLE eth::Address address(eth::KeyPair _p) const { return _p.address(); } - Q_INVOKABLE eth::Secret secret(eth::KeyPair _p) const { return _p.secret(); } - Q_INVOKABLE eth::KeyPair keypair(eth::Secret _k) const { return eth::KeyPair(_k); } - - Q_INVOKABLE bool isNull(eth::Address _a) const { return !_a; } - - Q_INVOKABLE eth::Address addressOf(QString _s) const { return eth::Address(_s.toStdString()); } - Q_INVOKABLE QString stringOf(eth::Address _a) const { return QString::fromStdString(eth::toHex(_a.asArray())); } - Q_INVOKABLE QString toAbridged(eth::Address _a) const { return QString::fromStdString(_a.abridged()); } -}; - -class QAccount: public QObject -{ - Q_OBJECT - -public: - QAccount(QObject* _p = nullptr); - virtual ~QAccount(); - - Q_INVOKABLE QEthereum* ethereum() const { return m_eth; } - Q_INVOKABLE eth::u256 balance() const; - Q_INVOKABLE double txCount() const; - Q_INVOKABLE bool isContract() const; - - // TODO: past transactions models. - -public slots: - void setEthereum(QEthereum* _eth); - -signals: - void changed(); - void ethChanged(); - -private: - QEthereum* m_eth = nullptr; - eth::Address m_address; - - Q_PROPERTY(eth::u256 balance READ balance NOTIFY changed STORED false) - Q_PROPERTY(double txCount READ txCount NOTIFY changed STORED false) - Q_PROPERTY(bool isContract READ isContract NOTIFY changed STORED false) - Q_PROPERTY(eth::Address address MEMBER m_address NOTIFY changed) - Q_PROPERTY(QEthereum* ethereum READ ethereum WRITE setEthereum NOTIFY ethChanged) -}; - -class QEthereum: public QObject -{ - Q_OBJECT - -public: - QEthereum(QObject* _p = nullptr); - virtual ~QEthereum(); - - eth::Client* client() const; - - Q_INVOKABLE eth::Address coinbase() const; - - Q_INVOKABLE bool isListening() const; - Q_INVOKABLE bool isMining() const; - - Q_INVOKABLE eth::u256 balanceAt(eth::Address _a) const; - Q_INVOKABLE double txCountAt(eth::Address _a) const; - Q_INVOKABLE bool isContractAt(eth::Address _a) const; - - Q_INVOKABLE QString ethTest() const { return "Hello world!"; } - - Q_INVOKABLE eth::Address account() const; - Q_INVOKABLE QVector<eth::Address> accounts() const; - - Q_INVOKABLE unsigned peerCount() const; - - Q_INVOKABLE QEthereum* self() { return this; } - -public slots: - void transact(eth::Secret _secret, eth::Address _dest, eth::u256 _amount, eth::u256 _gasPrice, eth::u256 _gas, QByteArray _data); - void transact(eth::Secret _secret, eth::u256 _amount, eth::u256 _gasPrice, eth::u256 _gas, QByteArray _code, QByteArray _init); - void setCoinbase(eth::Address); - void setMining(bool _l); - - void setListening(bool _l); - -signals: - void changed(); -// void netChanged(); -// void miningChanged(); - -private: - Q_PROPERTY(eth::Address coinbase READ coinbase WRITE setCoinbase NOTIFY changed) - Q_PROPERTY(bool listening READ isListening WRITE setListening) - Q_PROPERTY(bool mining READ isMining WRITE setMining) -}; - class Main : public QMainWindow { Q_OBJECT @@ -200,7 +61,6 @@ private slots: void on_nameReg_textChanged(); void on_preview_triggered() { refresh(true); } void on_quit_triggered() { close(); } - void on_urlEdit_editingFinished(); void refresh(bool _override = false); void refreshNetwork(); @@ -241,8 +101,6 @@ private: unsigned m_backupGas; QNetworkAccessManager m_webCtrl; - - QEthereum* m_ethereum; }; #endif // MAIN_H diff --git a/libethereum/Common.h b/libethereum/Common.h index 68f19928b..d14686f9d 100644 --- a/libethereum/Common.h +++ b/libethereum/Common.h @@ -24,7 +24,7 @@ #pragma once // define version -#define ETH_VERSION 0.4.2 +#define ETH_VERSION 0.4.3 // way to many uint to size_t warnings in 32 bit build #ifdef _M_IX86