forked from cerc-io/plugeth
Using asset path helper (includes a debug path atm)
This commit is contained in:
parent
a482b0cc1b
commit
3d2c3b0107
@ -9,8 +9,6 @@ import (
|
|||||||
"github.com/ethereum/eth-go/ethdb"
|
"github.com/ethereum/eth-go/ethdb"
|
||||||
"github.com/ethereum/eth-go/ethutil"
|
"github.com/ethereum/eth-go/ethutil"
|
||||||
"github.com/niemeyer/qml"
|
"github.com/niemeyer/qml"
|
||||||
"bitbucket.org/kardianos/osext"
|
|
||||||
"path/filepath"
|
|
||||||
"math/big"
|
"math/big"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@ -87,15 +85,12 @@ func (ui *Gui) Start() {
|
|||||||
// Create a new QML engine
|
// Create a new QML engine
|
||||||
ui.engine = qml.NewEngine()
|
ui.engine = qml.NewEngine()
|
||||||
|
|
||||||
// Get Binary Directory
|
|
||||||
exedir , _ := osext.ExecutableFolder()
|
|
||||||
|
|
||||||
// Load the main QML interface
|
// Load the main QML interface
|
||||||
component, err := ui.engine.LoadFile(filepath.Join(exedir, "wallet.qml"))
|
component, err := ui.engine.LoadFile(AssetPath("wallet.qml"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
ui.engine.LoadFile(filepath.Join(exedir, "transactions.qml"))
|
ui.engine.LoadFile(AssetPath("transactions.qml"))
|
||||||
|
|
||||||
ui.win = component.CreateWindow(nil)
|
ui.win = component.CreateWindow(nil)
|
||||||
|
|
||||||
|
27
ui/ui_lib.go
27
ui/ui_lib.go
@ -1,9 +1,13 @@
|
|||||||
package ethui
|
package ethui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bitbucket.org/kardianos/osext"
|
||||||
"github.com/ethereum/eth-go"
|
"github.com/ethereum/eth-go"
|
||||||
"github.com/ethereum/eth-go/ethutil"
|
"github.com/ethereum/eth-go/ethutil"
|
||||||
"github.com/niemeyer/qml"
|
"github.com/niemeyer/qml"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
// UI Library that has some basic functionality exposed
|
// UI Library that has some basic functionality exposed
|
||||||
@ -38,3 +42,26 @@ func (ui *UiLib) Connect(button qml.Object) {
|
|||||||
func (ui *UiLib) ConnectToPeer(addr string) {
|
func (ui *UiLib) ConnectToPeer(addr string) {
|
||||||
ui.eth.ConnectToPeer(addr)
|
ui.eth.ConnectToPeer(addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ui *UiLib) AssetPath(p string) string {
|
||||||
|
return AssetPath(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func AssetPath(p string) string {
|
||||||
|
var base string
|
||||||
|
switch runtime.GOOS {
|
||||||
|
case "darwin":
|
||||||
|
// Get Binary Directory
|
||||||
|
exedir, _ := osext.ExecutableFolder()
|
||||||
|
base = filepath.Join(exedir, "../Resources")
|
||||||
|
base = "/Users/jeffrey/go/src/github.com/ethereum/go-ethereum"
|
||||||
|
case "linux":
|
||||||
|
base = "/usr/share/ethereal"
|
||||||
|
case "window":
|
||||||
|
fallthrough
|
||||||
|
default:
|
||||||
|
base = "."
|
||||||
|
}
|
||||||
|
|
||||||
|
return path.Join(base, p)
|
||||||
|
}
|
||||||
|
210
wallet.qml
210
wallet.qml
@ -115,116 +115,141 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
property var txModel: ListModel {
|
|
||||||
id: txModel
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: historyView
|
id: mainView
|
||||||
property var title: "Transactions"
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.left: menu.right
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.top: parent.top
|
|
||||||
TableView {
|
|
||||||
id: txTableView
|
|
||||||
anchors.fill: parent
|
|
||||||
TableViewColumn{ role: "value" ; title: "Value" ; width: 100 }
|
|
||||||
TableViewColumn{ role: "address" ; title: "Address" ; width: 430 }
|
|
||||||
|
|
||||||
model: txModel
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: newTxView
|
|
||||||
property var title: "New transaction"
|
|
||||||
visible: false
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.left: menu.right
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.top: parent.top
|
|
||||||
color: "#00000000"
|
color: "#00000000"
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.left: menu.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.top: parent.top
|
||||||
|
|
||||||
ColumnLayout {
|
property var txModel: ListModel {
|
||||||
width: 400
|
id: txModel
|
||||||
anchors.left: parent.left
|
}
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.leftMargin: 5
|
|
||||||
anchors.topMargin: 5
|
|
||||||
TextField {
|
|
||||||
id: txAmount
|
|
||||||
width: 200
|
|
||||||
placeholderText: "Amount"
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField {
|
Rectangle {
|
||||||
id: txReceiver
|
id: historyView
|
||||||
placeholderText: "Receiver Address (or empty for contract)"
|
anchors.fill: parent
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
|
|
||||||
Label {
|
property var title: "Transactions"
|
||||||
text: "Transaction data"
|
TableView {
|
||||||
|
id: txTableView
|
||||||
|
anchors.fill: parent
|
||||||
|
TableViewColumn{ role: "value" ; title: "Value" ; width: 100 }
|
||||||
|
TableViewColumn{ role: "address" ; title: "Address" ; width: 430 }
|
||||||
|
|
||||||
|
model: txModel
|
||||||
}
|
}
|
||||||
TextArea {
|
}
|
||||||
id: codeView
|
|
||||||
|
Rectangle {
|
||||||
|
id: newTxView
|
||||||
|
property var title: "New transaction"
|
||||||
|
visible: false
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#00000000"
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
width: 400
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.leftMargin: 5
|
||||||
anchors.topMargin: 5
|
anchors.topMargin: 5
|
||||||
Layout.fillWidth: true
|
TextField {
|
||||||
width: parent.width /2
|
id: txAmount
|
||||||
}
|
width: 200
|
||||||
|
placeholderText: "Amount"
|
||||||
|
}
|
||||||
|
|
||||||
Button {
|
TextField {
|
||||||
text: "Send"
|
id: txReceiver
|
||||||
onClicked: {
|
placeholderText: "Receiver Address (or empty for contract)"
|
||||||
console.log(eth.createTx(txReceiver.text, txAmount.text, codeView.text))
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: "Transaction data"
|
||||||
|
}
|
||||||
|
TextArea {
|
||||||
|
id: codeView
|
||||||
|
anchors.topMargin: 5
|
||||||
|
Layout.fillWidth: true
|
||||||
|
width: parent.width /2
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: "Send"
|
||||||
|
onClicked: {
|
||||||
|
console.log(eth.createTx(txReceiver.text, txAmount.text, codeView.text))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: networkView
|
id: networkView
|
||||||
property var title: "Network"
|
property var title: "Network"
|
||||||
visible: false
|
visible: false
|
||||||
anchors.right: parent.right
|
anchors.fill: parent
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.top: parent.top
|
|
||||||
|
|
||||||
TableView {
|
TableView {
|
||||||
id: blockTable
|
id: blockTable
|
||||||
width: parent.width
|
width: parent.width
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: logView.top
|
anchors.bottom: logView.top
|
||||||
TableViewColumn{ role: "number" ; title: "#" ; width: 100 }
|
TableViewColumn{ role: "number" ; title: "#" ; width: 100 }
|
||||||
TableViewColumn{ role: "hash" ; title: "Hash" ; width: 560 }
|
TableViewColumn{ role: "hash" ; title: "Hash" ; width: 560 }
|
||||||
|
|
||||||
model: blockModel
|
model: blockModel
|
||||||
|
|
||||||
onDoubleClicked: {
|
/*
|
||||||
popup.visible = true
|
onDoubleClicked: {
|
||||||
popup.block = eth.getBlock(blockModel.get(row).hash)
|
popup.visible = true
|
||||||
popup.hashLabel.text = popup.block.hash
|
popup.block = eth.getBlock(blockModel.get(row).hash)
|
||||||
|
popup.hashLabel.text = popup.block.hash
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
property var logModel: ListModel {
|
||||||
|
id: logModel
|
||||||
|
}
|
||||||
|
|
||||||
|
TableView {
|
||||||
|
id: logView
|
||||||
|
width: parent.width
|
||||||
|
height: 150
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
TableViewColumn{ role: "description" ; title: "log" }
|
||||||
|
|
||||||
|
model: logModel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
property var logModel: ListModel {
|
/*
|
||||||
id: logModel
|
signal addPlugin(string name)
|
||||||
|
Component {
|
||||||
|
id: pluginWindow
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
Label {
|
||||||
|
id: pluginTitle
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: "Hello world"
|
||||||
|
}
|
||||||
|
Component.onCompleted: setView(this)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TableView {
|
onAddPlugin: {
|
||||||
id: logView
|
var pluginWin = pluginWindow.createObject(mainView)
|
||||||
width: parent.width
|
console.log(pluginWin)
|
||||||
height: 150
|
pluginWin.pluginTitle.text = "Test"
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
TableViewColumn{ role: "description" ; title: "log" }
|
|
||||||
|
|
||||||
model: logModel
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,6 +274,7 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
text: "Connect"
|
text: "Connect"
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
id: importAppButton
|
id: importAppButton
|
||||||
anchors.left: connectButton.right
|
anchors.left: connectButton.right
|
||||||
@ -304,6 +330,10 @@ ApplicationWindow {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.leftMargin: 10
|
anchors.leftMargin: 10
|
||||||
placeholderText: "address:port"
|
placeholderText: "address:port"
|
||||||
|
onAccepted: {
|
||||||
|
ui.connectToPeer(addrField.text)
|
||||||
|
addPeerWin.visible = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Button {
|
Button {
|
||||||
anchors.left: addrField.right
|
anchors.left: addrField.right
|
||||||
@ -315,6 +345,9 @@ ApplicationWindow {
|
|||||||
addPeerWin.visible = false
|
addPeerWin.visible = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Component.onCompleted: {
|
||||||
|
addrField.focus = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Window {
|
Window {
|
||||||
@ -346,6 +379,11 @@ ApplicationWindow {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function loadPlugin(name) {
|
||||||
|
console.log("Loading plugin" + name)
|
||||||
|
mainView.addPlugin(name)
|
||||||
|
}
|
||||||
|
|
||||||
function setWalletValue(value) {
|
function setWalletValue(value) {
|
||||||
walletValueLabel.text = value
|
walletValueLabel.text = value
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user