Fixed miner channel

This commit is contained in:
obscuren 2014-07-18 12:21:34 +02:00
commit 75df148ba2
4 changed files with 64 additions and 30 deletions

View File

@ -419,6 +419,17 @@ ApplicationWindow {
} }
} }
Label {
y: 6
id: lastBlockLabel
objectName: "lastBlockLabel"
visible: true
text: ""
font.pixelSize: 10
anchors.right: peerGroup.left
anchors.rightMargin: 5
}
ProgressBar { ProgressBar {
id: syncProgressIndicator id: syncProgressIndicator
visible: false visible: false
@ -426,35 +437,36 @@ ApplicationWindow {
y: 3 y: 3
width: 140 width: 140
indeterminate: true indeterminate: true
anchors.right: peerLabel.left anchors.right: peerGroup.left
anchors.rightMargin: 5 anchors.rightMargin: 5
} }
Label { RowLayout {
y: 7 id: peerGroup
anchors.right: peerImage.left y: 7
anchors.rightMargin: 5 anchors.right: parent.right
id: peerLabel MouseArea {
font.pixelSize: 8 onDoubleClicked: peerWindow.visible = true
text: "0 / 0" anchors.fill: parent
} }
Image {
y: 7 Label {
id: peerImage id: peerLabel
anchors.right: parent.right font.pixelSize: 8
width: 10; height: 10 text: "0 / 0"
MouseArea { }
onDoubleClicked: peerWindow.visible = true Image {
anchors.fill: parent id: peerImage
} width: 10; height: 10
source: "../network.png" source: "../network.png"
} }
}
} }
Window { Window {
id: popup id: popup
visible: false visible: false
flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint //flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint
property var block property var block
width: root.width width: root.width
height: 300 height: 300
@ -589,7 +601,7 @@ ApplicationWindow {
Window { Window {
id: addPeerWin id: addPeerWin
flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint //flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint
visible: false visible: false
minimumWidth: 230 minimumWidth: 230
maximumWidth: 230 maximumWidth: 230
@ -756,7 +768,7 @@ ApplicationWindow {
// ****************************************** // ******************************************
Window { Window {
id: peerWindow id: peerWindow
flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint //flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint
height: 200 height: 200
width: 700 width: 700
Rectangle { Rectangle {

View File

@ -17,6 +17,8 @@ type DebuggerWindow struct {
vm *ethchain.Vm vm *ethchain.Vm
Db *Debugger Db *Debugger
state *ethchain.State
} }
func NewDebuggerWindow(lib *UiLib) *DebuggerWindow { func NewDebuggerWindow(lib *UiLib) *DebuggerWindow {
@ -53,6 +55,7 @@ func (self *DebuggerWindow) SetCode(code string) {
func (self *DebuggerWindow) SetData(data string) { func (self *DebuggerWindow) SetData(data string) {
self.win.Set("dataText", data) self.win.Set("dataText", data)
} }
func (self *DebuggerWindow) SetAsm(data []byte) { func (self *DebuggerWindow) SetAsm(data []byte) {
self.win.Root().Call("clearAsm") self.win.Root().Call("clearAsm")

View File

@ -270,6 +270,10 @@ func (gui *Gui) setWalletValue(amount, unconfirmedFunds *big.Int) {
gui.win.Root().Call("setWalletValue", str) gui.win.Root().Call("setWalletValue", str)
} }
func (self *Gui) getObjectByName(objectName string) qml.Object {
return self.win.Root().ObjectByName(objectName)
}
// Simple go routine function that updates the list of peers in the GUI // Simple go routine function that updates the list of peers in the GUI
func (gui *Gui) update() { func (gui *Gui) update() {
reactor := gui.eth.Reactor() reactor := gui.eth.Reactor()
@ -280,12 +284,15 @@ func (gui *Gui) update() {
objectChan = make(chan ethutil.React, 1) objectChan = make(chan ethutil.React, 1)
peerChan = make(chan ethutil.React, 1) peerChan = make(chan ethutil.React, 1)
chainSyncChan = make(chan ethutil.React, 1) chainSyncChan = make(chan ethutil.React, 1)
miningChan = make(chan ethutil.React, 1)
) )
reactor.Subscribe("newBlock", blockChan) reactor.Subscribe("newBlock", blockChan)
reactor.Subscribe("newTx:pre", txChan) reactor.Subscribe("newTx:pre", txChan)
reactor.Subscribe("newTx:post", txChan) reactor.Subscribe("newTx:post", txChan)
reactor.Subscribe("chainSync", chainSyncChan) reactor.Subscribe("chainSync", chainSyncChan)
reactor.Subscribe("miner:start", miningChan)
reactor.Subscribe("miner:stop", miningChan)
nameReg := ethpub.EthereumConfig(gui.eth.StateManager()).NameReg() nameReg := ethpub.EthereumConfig(gui.eth.StateManager()).NameReg()
if nameReg != nil { if nameReg != nil {
@ -293,13 +300,16 @@ func (gui *Gui) update() {
} }
reactor.Subscribe("peerList", peerChan) reactor.Subscribe("peerList", peerChan)
ticker := time.NewTicker(5 * time.Second) peerUpdateTicker := time.NewTicker(5 * time.Second)
generalUpdateTicker := time.NewTicker(1 * time.Second)
state := gui.eth.StateManager().TransState() state := gui.eth.StateManager().TransState()
unconfirmedFunds := new(big.Int) unconfirmedFunds := new(big.Int)
gui.win.Root().Call("setWalletValue", fmt.Sprintf("%v", ethutil.CurrencyToString(state.GetAccount(gui.address()).Amount))) gui.win.Root().Call("setWalletValue", fmt.Sprintf("%v", ethutil.CurrencyToString(state.GetAccount(gui.address()).Amount)))
gui.win.Root().ObjectByName("syncProgressIndicator").Set("visible", !gui.eth.IsUpToDate()) gui.getObjectByName("syncProgressIndicator").Set("visible", !gui.eth.IsUpToDate())
lastBlockLabel := gui.getObjectByName("lastBlockLabel")
for { for {
select { select {
@ -349,12 +359,21 @@ func (gui *Gui) update() {
gui.loadAddressBook() gui.loadAddressBook()
case <-peerChan: case <-peerChan:
gui.setPeerInfo() gui.setPeerInfo()
case <-ticker.C: case <-peerUpdateTicker.C:
gui.setPeerInfo()
case msg := <-miningChan:
if msg.Event == "miner:start" {
gui.miner = msg.Resource.(*ethminer.Miner)
} else {
gui.miner = nil
}
case <-generalUpdateTicker.C:
if gui.miner != nil { if gui.miner != nil {
pow := gui.miner.GetPow() pow := gui.miner.GetPow()
fmt.Println("HashRate from miner", pow.GetHashrate()) fmt.Println("HashRate from miner", pow.GetHashrate())
} }
gui.setPeerInfo() lastBlockLabel.Set("text", "#"+gui.eth.BlockChain().CurrentBlock.Number.String())
} }
} }
} }

View File

@ -234,10 +234,10 @@ func StartRpc(ethereum *eth.Ethereum, RpcPort int) {
} }
} }
var miner ethminer.Miner var miner *ethminer.Miner
func GetMiner() *ethminer.Miner { func GetMiner() *ethminer.Miner {
return &miner return miner
} }
func StartMining(ethereum *eth.Ethereum) bool { func StartMining(ethereum *eth.Ethereum) bool {
@ -267,7 +267,7 @@ func StartMining(ethereum *eth.Ethereum) bool {
} }
func StopMining(ethereum *eth.Ethereum) bool { func StopMining(ethereum *eth.Ethereum) bool {
if ethereum.Mining { if ethereum.Mining && miner != nil {
miner.Stop() miner.Stop()
logger.Infoln("Miner stopped") logger.Infoln("Miner stopped")
ethereum.Mining = false ethereum.Mining = false