Skip to content
This repository has been archived by the owner on Oct 28, 2021. It is now read-only.

Commit

Permalink
UI Improvements.
Browse files Browse the repository at this point in the history
  • Loading branch information
gavofyork committed Feb 7, 2014
1 parent 1afda67 commit b2d3c47
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 31 deletions.
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ set(CMAKE_AUTOMOC ON)

cmake_policy(SET CMP0015 NEW)

set(ETH_VERSION 0.1.1)

# Initialize CXXFLAGS.
set(CMAKE_CXX_FLAGS "-Wall -std=c++11")
set(CMAKE_CXX_FLAGS "-Wall -std=c++11 -DETH_VERSION=${ETH_VERSION}")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG")
Expand Down
58 changes: 32 additions & 26 deletions alethzero/MainWin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include <QtWidgets>
#include <QtCore>
#include <libethereum/Dagger.h>
#include <libethereum/Client.h>
#include "MainWin.h"
#include "ui_Main.h"
using namespace std;
Expand All @@ -14,15 +15,18 @@ static void initUnits(QComboBox* _b)
_b->setCurrentIndex(6);
}

#define ETH_QUOTED(A) #A

Main::Main(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Main),
m_client("AlethZero/v0.1.1")
ui(new Ui::Main)
{
setWindowFlags(Qt::Window);
ui->setupUi(this);
initUnits(ui->valueUnits);
initUnits(ui->feeUnits);
g_logPost = [=](std::string const& s, char const*) { ui->log->addItem(QString::fromStdString(s)); };
m_client = new Client("AlethZero/v" ETH_QUOTED(ETH_VERSION));

readSettings();
refresh();
Expand All @@ -44,7 +48,9 @@ Main::Main(QWidget *parent) :
srand(time(0));
#endif

g_logPost = [=](std::string const& s, char const*) { ui->log->addItem(QString::fromStdString(s)); };
statusBar()->addPermanentWidget(ui->balance);
statusBar()->addPermanentWidget(ui->peerCount);
statusBar()->addPermanentWidget(ui->blockChain);
}

Main::~Main()
Expand Down Expand Up @@ -89,7 +95,7 @@ void Main::readSettings()
m_myKeys.append(KeyPair(k));
}
}
m_client.setAddress(m_myKeys.back().address());
m_client->setAddress(m_myKeys.back().address());

writeSettings();

Expand All @@ -102,25 +108,25 @@ void Main::readSettings()

void Main::refresh()
{
m_client.lock();
if (m_client.changed())
m_client->lock();
if (m_client->changed())
{
ui->peerCount->setText(QString::fromStdString(toString(m_client.peerCount())) + " peer(s)");
ui->peerCount->setText(QString::fromStdString(toString(m_client->peerCount())) + " peer(s)");
ui->peers->clear();
for (PeerInfo const& i: m_client.peers())
for (PeerInfo const& i: m_client->peers())
ui->peers->addItem(QString("%3 ms - %1:%2 - %4").arg(i.host.c_str()).arg(i.port).arg(chrono::duration_cast<chrono::milliseconds>(i.lastPing).count()).arg(i.clientVersion.c_str()));

auto d = m_client.blockChain().details();
auto diff = BlockInfo(m_client.blockChain().block()).difficulty;
auto d = m_client->blockChain().details();
auto diff = BlockInfo(m_client->blockChain().block()).difficulty;
ui->blockChain->setText(QString("#%1 @%3 T%2").arg(d.number).arg(toLog2(d.totalDifficulty)).arg(toLog2(diff)));

auto acs = m_client.state().addresses();
auto acs = m_client->state().addresses();
ui->accounts->clear();
for (auto i: acs)
ui->accounts->addItem(QString("%1 @ %2").arg(formatBalance(i.second).c_str()).arg(asHex(i.first.asArray()).c_str()));

ui->transactionQueue->clear();
for (pair<h256, bytes> const& i: m_client.transactionQueue().transactions())
for (pair<h256, bytes> const& i: m_client->transactionQueue().transactions())
{
Transaction t(i.second);
ui->transactionQueue->addItem(QString("%1 (%2 fee) @ %3 <- %4")
Expand All @@ -131,7 +137,7 @@ void Main::refresh()
}

ui->transactions->clear();
auto const& bc = m_client.blockChain();
auto const& bc = m_client->blockChain();
for (auto h = bc.currentHash(); h != bc.genesisHash(); h = bc.details(h).parent)
{
auto d = bc.details(h);
Expand All @@ -152,12 +158,12 @@ void Main::refresh()
u256 totalBalance = 0;
for (auto i: m_myKeys)
{
u256 b = m_client.state().balance(i.address());
u256 b = m_client->state().balance(i.address());
ui->ourAccounts->addItem(QString("%1 @ %2").arg(formatBalance(b).c_str()).arg(asHex(i.address().asArray()).c_str()));
totalBalance += b;
}
ui->balance->setText(QString::fromStdString(formatBalance(totalBalance)));
m_client.unlock();
m_client->unlock();
}

void Main::on_ourAccounts_doubleClicked()
Expand All @@ -174,9 +180,9 @@ void Main::on_net_triggered()
{
ui->port->setEnabled(!ui->net->isChecked());
if (ui->net->isChecked())
m_client.startNetwork(ui->port->value(), string(), 0, NodeMode::Full, 5, std::string(), ui->upnp->isChecked());
m_client->startNetwork(ui->port->value(), string(), 0, NodeMode::Full, 5, std::string(), ui->upnp->isChecked());
else
m_client.stopNetwork();
m_client->stopNetwork();
}

void Main::on_connect_triggered()
Expand All @@ -189,43 +195,43 @@ void Main::on_connect_triggered()
{
string host = s.section(":", 0, 0).toStdString();
short port = s.section(":", 1).toInt();
m_client.connect(host, port);
m_client->connect(host, port);
}
}

void Main::on_mine_triggered()
{
if (ui->mine->isChecked())
{
m_client.setAddress(m_myKeys.last().address());
m_client.startMining();
m_client->setAddress(m_myKeys.last().address());
m_client->startMining();
}
else
m_client.stopMining();
m_client->stopMining();
}

void Main::on_send_clicked()
{
u256 value = ui->value->value() * units()[units().size() - 1 - ui->valueUnits->currentIndex()].first;
u256 fee = ui->fee->value() * units()[units().size() - 1 - ui->feeUnits->currentIndex()].first;
u256 totalReq = value + fee;
m_client.lock();
m_client->lock();
for (auto i: m_myKeys)
if (m_client.state().balance(i.address()) >= totalReq)
if (m_client->state().balance(i.address()) >= totalReq)
{
m_client.unlock();
m_client->unlock();
Secret s = m_myKeys.front().secret();
Address r = Address(fromUserHex(ui->destination->text().toStdString()));
auto ds = ui->data->toPlainText().split(QRegExp("[^0-9a-fA-Fx]+"));
u256s data;
data.reserve(ds.size());
for (QString const& i: ds)
data.push_back(u256(i.toStdString()));
m_client.transact(s, r, value, fee, data);
m_client->transact(s, r, value, fee, data);
refresh();
return;
}
m_client.unlock();
m_client->unlock();
statusBar()->showMessage("Couldn't make transaction: no single account contains at least the required amount.");
}

Expand Down
8 changes: 6 additions & 2 deletions alethzero/MainWin.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@
#include <QAbstractListModel>
#include <QMainWindow>
#include <QMutex>
#include <libethereum/Client.h>
#include <libethereum/Common.h>

namespace Ui {
class Main;
}

namespace eth {
class Client;
}

class Main : public QMainWindow
{
Q_OBJECT
Expand All @@ -37,7 +41,7 @@ private slots:

Ui::Main *ui;

eth::Client m_client;
eth::Client* m_client;

QMutex m_guiLock;
QTimer* m_refresh;
Expand Down
5 changes: 3 additions & 2 deletions libethereum/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
#endif

#include <ctime>
#include <iomanip>
#include <chrono>
#include <array>
#include <map>
Expand Down Expand Up @@ -179,7 +178,9 @@ class LogOutputStream
if ((it != g_logOverride.end() && it->second == true) || (it == g_logOverride.end() && Id::verbosity <= g_logVerbosity))
{
time_t rawTime = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
sstr << Id::name << " [ " << rawTime /*put_time("%T", std::localtime(&rawTime)) */<< " | " << t_logThreadName << (_term ? " ] " : "");
char buf[9];
strftime(buf, 9, "%X", localtime(&rawTime));
sstr << Id::name << " [ " << buf << " | " << t_logThreadName << (_term ? " ] " : "");
}
}
~LogOutputStream() { if (Id::verbosity <= g_logVerbosity) g_logPost(sstr.str(), Id::name); }
Expand Down

0 comments on commit b2d3c47

Please sign in to comment.