diff options
-rw-r--r-- | ethereal/assets/qml/wallet.qml | 58 | ||||
-rw-r--r-- | ethereal/debugger.go | 3 | ||||
-rw-r--r-- | ethereal/gui.go | 27 | ||||
-rw-r--r-- | utils/cmd.go | 6 |
4 files changed, 64 insertions, 30 deletions
diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 592698d8e..a79e4708c 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -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 { id: syncProgressIndicator visible: false @@ -426,35 +437,36 @@ ApplicationWindow { y: 3 width: 140 indeterminate: true - anchors.right: peerLabel.left + anchors.right: peerGroup.left anchors.rightMargin: 5 } - Label { - y: 7 - anchors.right: peerImage.left - anchors.rightMargin: 5 - id: peerLabel - font.pixelSize: 8 - text: "0 / 0" - } - Image { - y: 7 - id: peerImage - anchors.right: parent.right - width: 10; height: 10 - MouseArea { - onDoubleClicked: peerWindow.visible = true - anchors.fill: parent - } - source: "../network.png" - } + RowLayout { + id: peerGroup + y: 7 + anchors.right: parent.right + MouseArea { + onDoubleClicked: peerWindow.visible = true + anchors.fill: parent + } + + Label { + id: peerLabel + font.pixelSize: 8 + text: "0 / 0" + } + Image { + id: peerImage + width: 10; height: 10 + source: "../network.png" + } + } } Window { id: popup visible: false - flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint + //flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint property var block width: root.width height: 300 @@ -589,7 +601,7 @@ ApplicationWindow { Window { id: addPeerWin - flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint + //flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint visible: false minimumWidth: 230 maximumWidth: 230 @@ -756,7 +768,7 @@ ApplicationWindow { // ****************************************** Window { id: peerWindow - flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint + //flags: Qt.CustomizeWindowHint | Qt.Tool | Qt.WindowCloseButtonHint height: 200 width: 700 Rectangle { diff --git a/ethereal/debugger.go b/ethereal/debugger.go index 997c2e8dd..7742b1627 100644 --- a/ethereal/debugger.go +++ b/ethereal/debugger.go @@ -17,6 +17,8 @@ type DebuggerWindow struct { vm *ethchain.Vm Db *Debugger + + state *ethchain.State } func NewDebuggerWindow(lib *UiLib) *DebuggerWindow { @@ -53,6 +55,7 @@ func (self *DebuggerWindow) SetCode(code string) { func (self *DebuggerWindow) SetData(data string) { self.win.Set("dataText", data) } + func (self *DebuggerWindow) SetAsm(data []byte) { self.win.Root().Call("clearAsm") diff --git a/ethereal/gui.go b/ethereal/gui.go index 8047db63e..cfe5e2269 100644 --- a/ethereal/gui.go +++ b/ethereal/gui.go @@ -270,6 +270,10 @@ func (gui *Gui) setWalletValue(amount, unconfirmedFunds *big.Int) { 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 func (gui *Gui) update() { reactor := gui.eth.Reactor() @@ -280,12 +284,15 @@ func (gui *Gui) update() { objectChan = make(chan ethutil.React, 1) peerChan = make(chan ethutil.React, 1) chainSyncChan = make(chan ethutil.React, 1) + miningChan = make(chan ethutil.React, 1) ) reactor.Subscribe("newBlock", blockChan) reactor.Subscribe("newTx:pre", txChan) reactor.Subscribe("newTx:post", txChan) reactor.Subscribe("chainSync", chainSyncChan) + reactor.Subscribe("miner:start", miningChan) + reactor.Subscribe("miner:stop", miningChan) nameReg := ethpub.EthereumConfig(gui.eth.StateManager()).NameReg() if nameReg != nil { @@ -293,13 +300,16 @@ func (gui *Gui) update() { } 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() unconfirmedFunds := new(big.Int) 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 { select { @@ -349,12 +359,21 @@ func (gui *Gui) update() { gui.loadAddressBook() case <-peerChan: 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 { pow := gui.miner.GetPow() fmt.Println("HashRate from miner", pow.GetHashrate()) } - gui.setPeerInfo() + lastBlockLabel.Set("text", "#"+gui.eth.BlockChain().CurrentBlock.Number.String()) } } } diff --git a/utils/cmd.go b/utils/cmd.go index 638114bbe..f4d613c29 100644 --- a/utils/cmd.go +++ b/utils/cmd.go @@ -234,10 +234,10 @@ func StartRpc(ethereum *eth.Ethereum, RpcPort int) { } } -var miner ethminer.Miner +var miner *ethminer.Miner func GetMiner() *ethminer.Miner { - return &miner + return miner } func StartMining(ethereum *eth.Ethereum) bool { @@ -267,7 +267,7 @@ func StartMining(ethereum *eth.Ethereum) bool { } func StopMining(ethereum *eth.Ethereum) bool { - if ethereum.Mining { + if ethereum.Mining && miner != nil { miner.Stop() logger.Infoln("Miner stopped") ethereum.Mining = false |