Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
138b7fe2
Commit
138b7fe2
authored
May 28, 2014
by
Maran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Consolidated external qml files to hopefully prevent crashing bug
parent
87a669ae
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
976 additions
and
990 deletions
+976
-990
_new_contract.qml
ethereal/assets/qml/newTransaction/_new_contract.qml
+0
-196
_simple_send.qml
ethereal/assets/qml/newTransaction/_simple_send.qml
+0
-112
wallet.qml
ethereal/assets/qml/wallet.qml
+976
-682
No files found.
ethereal/assets/qml/newTransaction/_new_contract.qml
deleted
100644 → 0
View file @
87a669ae
import
QtQuick
2.0
import
QtQuick
.
Controls
1.0
;
import
QtQuick
.
Layouts
1.0
;
import
QtQuick
.
Dialogs
1.0
;
import
QtQuick
.
Window
2.1
;
import
QtQuick
.
Controls
.
Styles
1.1
import
Ethereum
1.0
Component
{
id
:
newContract
Column
{
id
:
mainContractColumn
function
contractFormReady
(){
if
(
codeView
.
text
.
length
>
0
&&
txValue
.
text
.
length
>
0
&&
txGas
.
text
.
length
>
0
&&
txGasPrice
.
length
>
0
)
{
txButton
.
state
=
"READY"
}
else
{
txButton
.
state
=
"NOTREADY"
}
}
states
:
[
State
{
name
:
"ERROR"
PropertyChanges
{
target
:
txResult
;
visible
:
true
}
PropertyChanges
{
target
:
codeView
;
visible
:
true
}
},
State
{
name
:
"DONE"
PropertyChanges
{
target
:
txValue
;
visible
:
false
}
PropertyChanges
{
target
:
txGas
;
visible
:
false
}
PropertyChanges
{
target
:
txGasPrice
;
visible
:
false
}
PropertyChanges
{
target
:
codeView
;
visible
:
false
}
PropertyChanges
{
target
:
txButton
;
visible
:
false
}
PropertyChanges
{
target
:
txDataLabel
;
visible
:
false
}
PropertyChanges
{
target
:
txResult
;
visible
:
true
}
PropertyChanges
{
target
:
txOutput
;
visible
:
true
}
PropertyChanges
{
target
:
newTxButton
;
visible
:
true
}
},
State
{
name
:
"SETUP"
PropertyChanges
{
target
:
txValue
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txGas
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txGasPrice
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
codeView
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txButton
;
visible
:
true
}
PropertyChanges
{
target
:
txDataLabel
;
visible
:
true
}
PropertyChanges
{
target
:
txResult
;
visible
:
false
}
PropertyChanges
{
target
:
txOutput
;
visible
:
false
}
PropertyChanges
{
target
:
newTxButton
;
visible
:
false
}
}
]
width
:
400
spacing
:
5
anchors.left
:
parent
.
left
anchors.top
:
parent
.
top
anchors.leftMargin
:
5
anchors.topMargin
:
5
TextField
{
id
:
txValue
width
:
200
placeholderText
:
"Amount"
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txGas
width
:
200
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
placeholderText
:
"Gas"
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txGasPrice
width
:
200
placeholderText
:
"Gas price"
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
contractFormReady
()
}
}
Row
{
id
:
rowContract
ExclusiveGroup
{
id
:
contractTypeGroup
}
RadioButton
{
id
:
createContractRadio
text
:
"Create contract"
checked
:
true
exclusiveGroup
:
contractTypeGroup
onClicked
:
{
txFuelRecipient
.
visible
=
false
txDataLabel
.
text
=
"Contract code"
}
}
RadioButton
{
id
:
runContractRadio
text
:
"Run contract"
exclusiveGroup
:
contractTypeGroup
onClicked
:
{
txFuelRecipient
.
visible
=
true
txDataLabel
.
text
=
"Contract arguments"
}
}
}
Label
{
id
:
txDataLabel
text
:
"Contract code"
}
TextArea
{
id
:
codeView
height
:
300
anchors.topMargin
:
5
Layout.fillWidth
:
true
width
:
parent
.
width
/
2
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txFuelRecipient
placeholderText
:
"Contract address"
validator
:
RegExpValidator
{
regExp
:
/
[
a-f0-9
]{40}
/
}
visible
:
false
width
:
530
}
Button
{
id
:
txButton
/* enabled: false */
states
:
[
State
{
name
:
"READY"
PropertyChanges
{
target
:
txButton
;
/*enabled: true*/
}
},
State
{
name
:
"NOTREADY"
PropertyChanges
{
target
:
txButton
;
/*enabled:false*/
}
}
]
text
:
"Send"
onClicked
:
{
//this.enabled = false
var
res
=
eth
.
create
(
txFuelRecipient
.
text
,
txValue
.
text
,
txGas
.
text
,
txGasPrice
.
text
,
codeView
.
text
)
if
(
res
[
1
])
{
txResult
.
text
=
"Your contract <b>could not</b> be send over the network:
\n
<b>"
txResult
.
text
+=
res
[
1
].
error
()
txResult
.
text
+=
"</b>"
mainContractColumn
.
state
=
"ERROR"
}
else
{
txResult
.
text
=
"Your transaction has been submitted:
\n
"
txOutput
.
text
=
res
[
0
].
address
mainContractColumn
.
state
=
"DONE"
}
}
}
Text
{
id
:
txResult
visible
:
false
}
TextField
{
id
:
txOutput
visible
:
false
width
:
530
}
Button
{
id
:
newTxButton
visible
:
false
text
:
"Create an other contract"
onClicked
:
{
this
.
visible
=
false
txResult
.
text
=
""
txOutput
.
text
=
""
mainContractColumn
.
state
=
"SETUP"
}
}
Button
{
id
:
debugButton
text
:
"Debug"
onClicked
:
{
var
res
=
ui
.
debugTx
(
""
,
txValue
.
text
,
txGas
.
text
,
txGasPrice
.
text
,
codeView
.
text
)
debugWindow
.
visible
=
true
}
}
}
}
ethereal/assets/qml/newTransaction/_simple_send.qml
deleted
100644 → 0
View file @
87a669ae
import
QtQuick
2.0
import
QtQuick
.
Controls
1.0
;
import
QtQuick
.
Layouts
1.0
;
import
QtQuick
.
Dialogs
1.0
;
import
QtQuick
.
Window
2.1
;
import
QtQuick
.
Controls
.
Styles
1.1
import
Ethereum
1.0
Component
{
id
:
newTransaction
Column
{
id
:
simpleSendColumn
states
:
[
State
{
name
:
"ERROR"
},
State
{
name
:
"DONE"
PropertyChanges
{
target
:
txSimpleValue
;
visible
:
false
}
PropertyChanges
{
target
:
txSimpleRecipient
;
visible
:
false
}
PropertyChanges
{
target
:
newSimpleTxButton
;
visible
:
false
}
PropertyChanges
{
target
:
txSimpleResult
;
visible
:
true
}
PropertyChanges
{
target
:
txSimpleOutput
;
visible
:
true
}
PropertyChanges
{
target
:
newSimpleTxButton
;
visible
:
true
}
},
State
{
name
:
"SETUP"
PropertyChanges
{
target
:
txSimpleValue
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txSimpleRecipient
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txSimpleButton
;
visible
:
true
}
PropertyChanges
{
target
:
newSimpleTxButton
;
visible
:
false
}
}
]
spacing
:
5
anchors.leftMargin
:
5
anchors.topMargin
:
5
anchors.top
:
parent
.
top
anchors.left
:
parent
.
left
function
checkFormState
(){
if
(
txSimpleRecipient
.
text
.
length
==
40
&&
txSimpleValue
.
text
.
length
>
0
)
{
txSimpleButton
.
state
=
"READY"
}
else
{
txSimpleButton
.
state
=
"NOTREADY"
}
}
TextField
{
id
:
txSimpleRecipient
placeholderText
:
"Recipient address"
Layout.fillWidth
:
true
validator
:
RegExpValidator
{
regExp
:
/
[
a-f0-9
]{40}
/
}
width
:
530
onTextChanged
:
{
checkFormState
()
}
}
TextField
{
id
:
txSimpleValue
width
:
200
placeholderText
:
"Amount"
anchors.rightMargin
:
5
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
checkFormState
()
}
}
Button
{
id
:
txSimpleButton
/*enabled: false*/
states
:
[
State
{
name
:
"READY"
PropertyChanges
{
target
:
txSimpleButton
;
/*enabled: true*/
}
},
State
{
name
:
"NOTREADY"
PropertyChanges
{
target
:
txSimpleButton
;
/*enabled: false*/
}
}
]
text
:
"Send"
onClicked
:
{
//this.enabled = false
var
res
=
eth
.
transact
(
txSimpleRecipient
.
text
,
txSimpleValue
.
text
,
""
,
""
,
""
)
if
(
res
[
1
])
{
txSimpleResult
.
text
=
"There has been an error broadcasting your transaction:"
+
res
[
1
].
error
()
}
else
{
txSimpleResult
.
text
=
"Your transaction has been broadcasted over the network.
\n
Your transaction id is:"
txSimpleOutput
.
text
=
res
[
0
].
hash
this
.
visible
=
false
simpleSendColumn
.
state
=
"DONE"
}
}
}
Text
{
id
:
txSimpleResult
visible
:
false
}
TextField
{
id
:
txSimpleOutput
visible
:
false
width
:
530
}
Button
{
id
:
newSimpleTxButton
visible
:
false
text
:
"Create an other transaction"
onClicked
:
{
this
.
visible
=
false
simpleSendColumn
.
state
=
"SETUP"
}
}
}
}
ethereal/assets/qml/wallet.qml
View file @
138b7fe2
...
@@ -8,686 +8,980 @@ import Ethereum 1.0
...
@@ -8,686 +8,980 @@ import Ethereum 1.0
ApplicationWindow
{
ApplicationWindow
{
id
:
root
id
:
root
width
:
900
width
:
900
height
:
600
height
:
600
minimumHeight
:
300
minimumHeight
:
300
title
:
"Ethereal"
title
:
"Ethereal"
MenuBar
{
MenuBar
{
Menu
{
Menu
{
title
:
"File"
title
:
"File"
MenuItem
{
MenuItem
{
text
:
"Import App"
text
:
"Import App"
shortcut
:
"Ctrl+o"
shortcut
:
"Ctrl+o"
onTriggered
:
openAppDialog
.
open
()
onTriggered
:
openAppDialog
.
open
()
}
}
}
}
Menu
{
Menu
{
title
:
"Tools"
title
:
"Tools"
MenuItem
{
MenuItem
{
text
:
"Muted"
text
:
"Muted"
shortcut
:
"Ctrl+e"
shortcut
:
"Ctrl+e"
onTriggered
:
ui
.
muted
(
""
)
onTriggered
:
ui
.
muted
(
""
)
}
}
MenuItem
{
MenuItem
{
text
:
"Debugger"
text
:
"Debugger"
shortcut
:
"Ctrl+d"
shortcut
:
"Ctrl+d"
onTriggered
:
ui
.
startDebugger
()
onTriggered
:
ui
.
startDebugger
()
}
}
}
}
Menu
{
Menu
{
title
:
"Network"
title
:
"Network"
MenuItem
{
MenuItem
{
text
:
"Add Peer"
text
:
"Add Peer"
shortcut
:
"Ctrl+p"
shortcut
:
"Ctrl+p"
onTriggered
:
{
onTriggered
:
{
addPeerWin
.
visible
=
true
addPeerWin
.
visible
=
true
}
}
}
}
MenuItem
{
MenuItem
{
text
:
"Start"
text
:
"Start"
onTriggered
:
ui
.
connect
()
onTriggered
:
ui
.
connect
()
}
}
}
}
Menu
{
Menu
{
title
:
"Help"
title
:
"Help"
MenuItem
{
MenuItem
{
text
:
"About"
text
:
"About"
onTriggered
:
{
onTriggered
:
{
aboutWin
.
visible
=
true
aboutWin
.
visible
=
true
}
}
}
}
}
}
}
}
property
var
blockModel
:
ListModel
{
property
var
blockModel
:
ListModel
{
id
:
blockModel
id
:
blockModel
}
}
function
setView
(
view
)
{
function
setView
(
view
)
{
networkView
.
visible
=
false
networkView
.
visible
=
false
historyView
.
visible
=
false
historyView
.
visible
=
false
newTxView
.
visible
=
false
newTxView
.
visible
=
false
infoView
.
visible
=
false
infoView
.
visible
=
false
view
.
visible
=
true
view
.
visible
=
true
//root.title = "Ethereal - " = view.title
//root.title = "Ethereal - " = view.title
}
}
SplitView
{
SplitView
{
anchors.fill
:
parent
anchors.fill
:
parent
resizing
:
false
resizing
:
false
Rectangle
{
Rectangle
{
id
:
menu
id
:
menu
Layout.minimumWidth
:
80
Layout.minimumWidth
:
80
Layout.maximumWidth
:
80
Layout.maximumWidth
:
80
anchors.bottom
:
parent
.
bottom
anchors.bottom
:
parent
.
bottom
anchors.top
:
parent
.
top
anchors.top
:
parent
.
top
//color: "#D9DDE7"
//color: "#D9DDE7"
color
:
"#252525"
color
:
"#252525"
ColumnLayout
{
ColumnLayout
{
y
:
50
y
:
50
anchors.left
:
parent
.
left
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
anchors.right
:
parent
.
right
height
:
200
height
:
200
Image
{
Image
{
source
:
ui
.
assetPath
(
"tx.png"
)
source
:
ui
.
assetPath
(
"tx.png"
)
anchors.horizontalCenter
:
parent
.
horizontalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
MouseArea
{
anchors.fill
:
parent
anchors.fill
:
parent
onClicked
:
{
onClicked
:
{
setView
(
historyView
)
setView
(
historyView
)
}
}
}
}
}
}
Image
{
Image
{
source
:
ui
.
assetPath
(
"new.png"
)
source
:
ui
.
assetPath
(
"new.png"
)
anchors.horizontalCenter
:
parent
.
horizontalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
MouseArea
{
anchors.fill
:
parent
anchors.fill
:
parent
onClicked
:
{
onClicked
:
{
setView
(
newTxView
)
setView
(
newTxView
)
}
}
}
}
}
}
Image
{
Image
{
source
:
ui
.
assetPath
(
"net.png"
)
source
:
ui
.
assetPath
(
"net.png"
)
anchors.horizontalCenter
:
parent
.
horizontalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
MouseArea
{
anchors.fill
:
parent
anchors.fill
:
parent
onClicked
:
{
onClicked
:
{
setView
(
networkView
)
setView
(
networkView
)
}
}
}
}
}
}
Image
{
Image
{
source
:
ui
.
assetPath
(
"heart.png"
)
source
:
ui
.
assetPath
(
"heart.png"
)
anchors.horizontalCenter
:
parent
.
horizontalCenter
anchors.horizontalCenter
:
parent
.
horizontalCenter
MouseArea
{
MouseArea
{
anchors.fill
:
parent
anchors.fill
:
parent
onClicked
:
{
onClicked
:
{
setView
(
infoView
)
setView
(
infoView
)
}
}
}
}
}
}
}
}
}
}
Rectangle
{
Rectangle
{
id
:
mainView
id
:
mainView
color
:
"#00000000"
color
:
"#00000000"
anchors.right
:
parent
.
right
anchors.right
:
parent
.
right
anchors.left
:
menu
.
right
anchors.left
:
menu
.
right
anchors.bottom
:
parent
.
bottom
anchors.bottom
:
parent
.
bottom
anchors.top
:
parent
.
top
anchors.top
:
parent
.
top
property
var
txModel
:
ListModel
{
property
var
txModel
:
ListModel
{
id
:
txModel
id
:
txModel
}
}
Rectangle
{
Rectangle
{
id
:
historyView
id
:
historyView
anchors.fill
:
parent
anchors.fill
:
parent
property
var
title
:
"Transactions"
property
var
title
:
"Transactions"
TableView
{
TableView
{
id
:
txTableView
id
:
txTableView
anchors.fill
:
parent
anchors.fill
:
parent
TableViewColumn
{
role
:
"inout"
;
title
:
""
;
width
:
40
}
TableViewColumn
{
role
:
"inout"
;
title
:
""
;
width
:
40
}
TableViewColumn
{
role
:
"value"
;
title
:
"Value"
;
width
:
100
}
TableViewColumn
{
role
:
"value"
;
title
:
"Value"
;
width
:
100
}
TableViewColumn
{
role
:
"address"
;
title
:
"Address"
;
width
:
430
}
TableViewColumn
{
role
:
"address"
;
title
:
"Address"
;
width
:
430
}
TableViewColumn
{
role
:
"contract"
;
title
:
"Contract"
;
width
:
100
}
TableViewColumn
{
role
:
"contract"
;
title
:
"Contract"
;
width
:
100
}
model
:
txModel
model
:
txModel
}
}
}
}
Rectangle
{
Rectangle
{
id
:
newTxView
id
:
newTxView
property
var
title
:
"New transaction"
property
var
title
:
"New transaction"
visible
:
false
visible
:
false
anchors.fill
:
parent
anchors.fill
:
parent
color
:
"#00000000"
color
:
"#00000000"
TabView
{
TabView
{
anchors.fill
:
parent
anchors.fill
:
parent
anchors.rightMargin
:
5
anchors.rightMargin
:
5
anchors.leftMargin
:
5
anchors.leftMargin
:
5
anchors.topMargin
:
5
anchors.topMargin
:
5
anchors.bottomMargin
:
5
anchors.bottomMargin
:
5
id
:
newTransactionTab
id
:
newTransactionTab
Component.onCompleted
:{
Component.onCompleted
:{
var
component
=
Qt
.
createComponent
(
"newTransaction/_simple_send.qml"
)
addTab
(
"Simple send"
,
newTransaction
)
var
newTransaction
=
component
.
createObject
(
"newTransaction"
)
addTab
(
"Contracts"
,
newContract
)
}
component
=
Qt
.
createComponent
(
"newTransaction/_new_contract.qml"
)
}
var
newContract
=
component
.
createObject
(
"newContract"
)
}
addTab
(
"Simple send"
,
newTransaction
)
Rectangle
{
addTab
(
"Contracts"
,
newContract
)
id
:
networkView
}
property
var
title
:
"Network"
}
visible
:
false
}
anchors.fill
:
parent
Rectangle
{
TableView
{
id
:
networkView
id
:
blockTable
property
var
title
:
"Network"
width
:
parent
.
width
visible
:
false
anchors.top
:
parent
.
top
anchors.fill
:
parent
anchors.bottom
:
logView
.
top
TableViewColumn
{
role
:
"number"
;
title
:
"#"
;
width
:
100
}
TableView
{
TableViewColumn
{
role
:
"hash"
;
title
:
"Hash"
;
width
:
560
}
id
:
blockTable
TableViewColumn
{
role
:
"txAmount"
;
title
:
"Tx amount"
;
width
:
100
}
width
:
parent
.
width
anchors.top
:
parent
.
top
model
:
blockModel
anchors.bottom
:
logView
.
top
TableViewColumn
{
role
:
"number"
;
title
:
"#"
;
width
:
100
}
onDoubleClicked
:
{
TableViewColumn
{
role
:
"hash"
;
title
:
"Hash"
;
width
:
560
}
popup
.
visible
=
true
TableViewColumn
{
role
:
"txAmount"
;
title
:
"Tx amount"
;
width
:
100
}
popup
.
setDetails
(
blockModel
.
get
(
row
))
}
model
:
blockModel
}
onDoubleClicked
:
{
property
var
logModel
:
ListModel
{
popup
.
visible
=
true
id
:
logModel
popup
.
setDetails
(
blockModel
.
get
(
row
))
}
}
}
TableView
{
id
:
logView
property
var
logModel
:
ListModel
{
width
:
parent
.
width
id
:
logModel
height
:
150
}
anchors.bottom
:
parent
.
bottom
TableViewColumn
{
role
:
"description"
;
title
:
"log"
}
TableView
{
id
:
logView
model
:
logModel
width
:
parent
.
width
}
height
:
150
}
anchors.bottom
:
parent
.
bottom
TableViewColumn
{
role
:
"description"
;
title
:
"log"
}
Rectangle
{
id
:
infoView
model
:
logModel
property
var
title
:
"Information"
}
visible
:
false
}
color
:
"#00000000"
anchors.fill
:
parent
Rectangle
{
id
:
infoView
Label
{
property
var
title
:
"Information"
id
:
addressLabel
visible
:
false
text
:
"Address"
color
:
"#00000000"
anchors
{
anchors.fill
:
parent
margins
:
5
top
:
parent
.
top
Label
{
left
:
parent
.
left
id
:
addressLabel
}
text
:
"Address"
}
anchors
{
TextField
{
margins
:
5
anchors
{
top
:
parent
.
top
margins
:
5
left
:
parent
.
left
left
:
addressLabel
.
right
}
top
:
parent
.
top
}
}
TextField
{
text
:
pub
.
getKey
().
address
anchors
{
width
:
500
margins
:
5
}
left
:
addressLabel
.
right
}
top
:
parent
.
top
}
/*
text
:
pub
.
getKey
().
address
signal addPlugin(string name)
width
:
500
Component {
}
id: pluginWindow
}
Rectangle {
anchors.fill: parent
/*
Label {
signal addPlugin(string name)
id: pluginTitle
Component {
anchors.centerIn: parent
id: pluginWindow
text: "Hello world"
Rectangle {
}
anchors.fill: parent
Component.onCompleted: setView(this)
Label {
}
id: pluginTitle
}
anchors.centerIn: parent
text: "Hello world"
onAddPlugin: {
}
var pluginWin = pluginWindow.createObject(mainView)
Component.onCompleted: setView(this)
console.log(pluginWin)
}
pluginWin.pluginTitle.text = "Test"
}
}
*/
onAddPlugin: {
}
var pluginWin = pluginWindow.createObject(mainView)
}
console.log(pluginWin)
pluginWin.pluginTitle.text = "Test"
FileDialog
{
}
id
:
openAppDialog
*/
title
:
"Open QML Application"
}
onAccepted
:
{
}
//ui.open(openAppDialog.fileUrl.toString())
//ui.openHtml(Qt.resolvedUrl(ui.assetPath("test.html")))
FileDialog
{
ui
.
openHtml
(
openAppDialog
.
fileUrl
.
toString
())
id
:
openAppDialog
}
title
:
"Open QML Application"
}
onAccepted
:
{
//ui.open(openAppDialog.fileUrl.toString())
statusBar
:
StatusBar
{
//ui.openHtml(Qt.resolvedUrl(ui.assetPath("test.html")))
RowLayout
{
ui
.
openHtml
(
openAppDialog
.
fileUrl
.
toString
())
anchors.fill
:
parent
}
}
Button
{
property
var
enabled
:
true
statusBar
:
StatusBar
{
id
:
debuggerWindow
RowLayout
{
onClicked
:
{
anchors.fill
:
parent
ui
.
startDebugger
()
}
Button
{
text
:
"Debugger"
property
var
enabled
:
true
}
id
:
debuggerWindow
onClicked
:
{
Button
{
ui
.
startDebugger
()
id
:
importAppButton
}
anchors.left
:
debuggerWindow
.
right
text
:
"Debugger"
anchors.leftMargin
:
5
}
onClicked
:
openAppDialog
.
open
()
text
:
"Import App"
Button
{
}
id
:
importAppButton
anchors.left
:
debuggerWindow
.
right
Label
{
anchors.leftMargin
:
5
anchors.left
:
importAppButton
.
right
onClicked
:
openAppDialog
.
open
()
anchors.leftMargin
:
5
text
:
"Import App"
id
:
walletValueLabel
}
}
Label
{
Label
{
anchors.left
:
importAppButton
.
right
anchors.right
:
peerImage
.
left
anchors.leftMargin
:
5
anchors.rightMargin
:
5
id
:
walletValueLabel
id
:
peerLabel
}
font.pixelSize
:
8
text
:
"0 / 0"
Label
{
}
anchors.right
:
peerImage
.
left
Image
{
anchors.rightMargin
:
5
id
:
peerImage
id
:
peerLabel
anchors.right
:
parent
.
right
font.pixelSize
:
8
width
:
10
;
height
:
10
text
:
"0 / 0"
source
:
ui
.
assetPath
(
"network.png"
)
}
}
Image
{
}
id
:
peerImage
}
anchors.right
:
parent
.
right
width
:
10
;
height
:
10
Window
{
source
:
ui
.
assetPath
(
"network.png"
)
id
:
popup
}
visible
:
false
}
property
var
block
}
width
:
800
height
:
280
Window
{
x
:
root
.
x
id
:
popup
y
:
root
.
y
+
root
.
height
visible
:
false
Component
{
property
var
block
id
:
blockDetailsDelegate
width
:
800
Rectangle
{
height
:
280
color
:
"#252525"
x
:
root
.
x
width
:
popup
.
width
y
:
root
.
y
+
root
.
height
height
:
200
Component
{
Column
{
id
:
blockDetailsDelegate
anchors.leftMargin
:
10
Rectangle
{
anchors.topMargin
:
5
color
:
"#252525"
anchors.top
:
parent
.
top
width
:
popup
.
width
anchors.left
:
parent
.
left
height
:
200
Text
{
text
:
'<h3>Block details</h3>'
;
color
:
"#F2F2F2"
}
Column
{
Text
{
text
:
'<b>Block number:</b> '
+
number
;
color
:
"#F2F2F2"
}
anchors.leftMargin
:
10
Text
{
text
:
'<b>Hash:</b> '
+
hash
;
color
:
"#F2F2F2"
}
anchors.topMargin
:
5
Text
{
text
:
'<b>Block found at:</b> '
+
prettyTime
;
color
:
"#F2F2F2"
}
anchors.top
:
parent
.
top
}
anchors.left
:
parent
.
left
}
Text
{
text
:
'<h3>Block details</h3>'
;
color
:
"#F2F2F2"
}
}
Text
{
text
:
'<b>Block number:</b> '
+
number
;
color
:
"#F2F2F2"
}
ListView
{
Text
{
text
:
'<b>Hash:</b> '
+
hash
;
color
:
"#F2F2F2"
}
model
:
singleBlock
Text
{
text
:
'<b>Block found at:</b> '
+
prettyTime
;
color
:
"#F2F2F2"
}
delegate
:
blockDetailsDelegate
}
anchors.top
:
parent
.
top
}
height
:
70
}
anchors.leftMargin
:
20
ListView
{
id
:
listViewThing
model
:
singleBlock
Layout.maximumHeight
:
40
delegate
:
blockDetailsDelegate
}
anchors.top
:
parent
.
top
TableView
{
height
:
70
id
:
txView
anchors.leftMargin
:
20
anchors.top
:
listViewThing
.
bottom
id
:
listViewThing
anchors.topMargin
:
50
Layout.maximumHeight
:
40
width
:
parent
.
width
}
TableView
{
TableViewColumn
{
width
:
90
;
role
:
"value"
;
title
:
"Value"
}
id
:
txView
TableViewColumn
{
width
:
200
;
role
:
"hash"
;
title
:
"Hash"
}
anchors.top
:
listViewThing
.
bottom
TableViewColumn
{
width
:
200
;
role
:
"sender"
;
title
:
"Sender"
}
anchors.topMargin
:
50
TableViewColumn
{
width
:
200
;
role
:
"address"
;
title
:
"Receiver"
}
width
:
parent
.
width
TableViewColumn
{
width
:
60
;
role
:
"gas"
;
title
:
"Gas"
}
TableViewColumn
{
width
:
60
;
role
:
"gasPrice"
;
title
:
"Gas Price"
}
TableViewColumn
{
width
:
90
;
role
:
"value"
;
title
:
"Value"
}
TableViewColumn
{
width
:
60
;
role
:
"isContract"
;
title
:
"Contract"
}
TableViewColumn
{
width
:
200
;
role
:
"hash"
;
title
:
"Hash"
}
TableViewColumn
{
width
:
200
;
role
:
"sender"
;
title
:
"Sender"
}
model
:
transactionModel
TableViewColumn
{
width
:
200
;
role
:
"address"
;
title
:
"Receiver"
}
onClicked
:
{
TableViewColumn
{
width
:
60
;
role
:
"gas"
;
title
:
"Gas"
}
var
tx
=
transactionModel
.
get
(
row
)
TableViewColumn
{
width
:
60
;
role
:
"gasPrice"
;
title
:
"Gas Price"
}
if
(
tx
.
data
)
{
TableViewColumn
{
width
:
60
;
role
:
"isContract"
;
title
:
"Contract"
}
popup
.
showContractData
(
tx
.
data
)
}
else
{
model
:
transactionModel
popup
.
height
=
230
onClicked
:
{
}
var
tx
=
transactionModel
.
get
(
row
)
}
if
(
tx
.
data
)
{
}
popup
.
showContractData
(
tx
.
data
)
function
showContractData
(
data
)
{
}
else
{
contractData
.
text
=
data
popup
.
height
=
230
popup
.
height
=
400
}
}
}
Rectangle
{
}
width
:
popup
.
width
function
showContractData
(
data
)
{
height
:
300
contractData
.
text
=
data
anchors.left
:
listViewThing
.
left
popup
.
height
=
400
anchors.top
:
txView
.
bottom
}
Label
{
Rectangle
{
text
:
"<h4>Contract data</h4>"
width
:
popup
.
width
anchors.top
:
parent
.
top
height
:
300
anchors.left
:
parent
.
left
anchors.left
:
listViewThing
.
left
id
:
contractLabel
anchors.top
:
txView
.
bottom
anchors.leftMargin
:
10
Label
{
}
text
:
"<h4>Contract data</h4>"
TextArea
{
anchors.top
:
parent
.
top
id
:
contractData
anchors.left
:
parent
.
left
text
:
"Contract"
id
:
contractLabel
anchors.top
:
contractLabel
.
bottom
anchors.leftMargin
:
10
anchors.left
:
parent
.
left
}
wrapMode
:
Text
.
Wrap
TextArea
{
width
:
parent
.
width
-
30
id
:
contractData
height
:
80
text
:
"Contract"
anchors.leftMargin
:
10
anchors.top
:
contractLabel
.
bottom
}
anchors.left
:
parent
.
left
}
wrapMode
:
Text
.
Wrap
property
var
transactionModel
:
ListModel
{
width
:
parent
.
width
-
30
id
:
transactionModel
height
:
80
}
anchors.leftMargin
:
10
property
var
singleBlock
:
ListModel
{
}
id
:
singleBlock
}
}
property
var
transactionModel
:
ListModel
{
function
setDetails
(
block
){
id
:
transactionModel
singleBlock
.
set
(
0
,
block
)
}
popup
.
height
=
230
property
var
singleBlock
:
ListModel
{
transactionModel
.
clear
()
id
:
singleBlock
if
(
block
.
txs
!=
undefined
){
}
for
(
var
i
=
0
;
i
<
block
.
txs
.
count
;
++
i
)
{
function
setDetails
(
block
){
transactionModel
.
insert
(
0
,
block
.
txs
.
get
(
i
))
singleBlock
.
set
(
0
,
block
)
}
popup
.
height
=
230
if
(
block
.
txs
.
get
(
0
).
data
){
transactionModel
.
clear
()
popup
.
showContractData
(
block
.
txs
.
get
(
0
).
data
)
if
(
block
.
txs
!=
undefined
){
}
for
(
var
i
=
0
;
i
<
block
.
txs
.
count
;
++
i
)
{
}
transactionModel
.
insert
(
0
,
block
.
txs
.
get
(
i
))
txView
.
forceActiveFocus
()
}
}
if
(
block
.
txs
.
get
(
0
).
data
){
}
popup
.
showContractData
(
block
.
txs
.
get
(
0
).
data
)
}
Window
{
}
id
:
addPeerWin
txView
.
forceActiveFocus
()
visible
:
false
}
minimumWidth
:
230
}
maximumWidth
:
230
maximumHeight
:
50
Window
{
minimumHeight
:
50
id
:
addPeerWin
visible
:
false
TextField
{
minimumWidth
:
230
id
:
addrField
maximumWidth
:
230
anchors.verticalCenter
:
parent
.
verticalCenter
maximumHeight
:
50
anchors.left
:
parent
.
left
minimumHeight
:
50
anchors.leftMargin
:
10
placeholderText
:
"address:port"
TextField
{
onAccepted
:
{
id
:
addrField
ui
.
connectToPeer
(
addrField
.
text
)
anchors.verticalCenter
:
parent
.
verticalCenter
addPeerWin
.
visible
=
false
anchors.left
:
parent
.
left
}
anchors.leftMargin
:
10
}
placeholderText
:
"address:port"
Button
{
onAccepted
:
{
anchors.left
:
addrField
.
right
ui
.
connectToPeer
(
addrField
.
text
)
anchors.verticalCenter
:
parent
.
verticalCenter
addPeerWin
.
visible
=
false
anchors.leftMargin
:
5
}
text
:
"Add"
}
onClicked
:
{
Button
{
ui
.
connectToPeer
(
addrField
.
text
)
anchors.left
:
addrField
.
right
addPeerWin
.
visible
=
false
anchors.verticalCenter
:
parent
.
verticalCenter
}
anchors.leftMargin
:
5
}
text
:
"Add"
Component.onCompleted
:
{
onClicked
:
{
addrField
.
focus
=
true
ui
.
connectToPeer
(
addrField
.
text
)
}
addPeerWin
.
visible
=
false
}
}
}
Window
{
Component.onCompleted
:
{
id
:
aboutWin
addrField
.
focus
=
true
visible
:
false
}
title
:
"About"
}
minimumWidth
:
350
maximumWidth
:
350
Window
{
maximumHeight
:
200
id
:
aboutWin
minimumHeight
:
200
visible
:
false
title
:
"About"
Image
{
minimumWidth
:
350
id
:
aboutIcon
maximumWidth
:
350
height
:
150
maximumHeight
:
200
width
:
150
minimumHeight
:
200
fillMode
:
Image
.
PreserveAspectFit
smooth
:
true
Image
{
source
:
ui
.
assetPath
(
"facet.png"
)
id
:
aboutIcon
x
:
10
height
:
150
y
:
10
width
:
150
}
fillMode
:
Image
.
PreserveAspectFit
smooth
:
true
Text
{
source
:
ui
.
assetPath
(
"facet.png"
)
anchors.left
:
aboutIcon
.
right
x
:
10
anchors.leftMargin
:
10
y
:
10
font.pointSize
:
12
}
text
:
"<h2>Ethereal</h2><br><h3>Development</h3>Jeffrey Wilcke<br>Maran Hidskes<br>"
}
Text
{
anchors.left
:
aboutIcon
.
right
}
anchors.leftMargin
:
10
font.pointSize
:
12
ApplicationWindow
{
text
:
"<h2>Ethereal</h2><br><h3>Development</h3>Jeffrey Wilcke<br>Maran Hidskes<br>"
id
:
debugWindow
}
visible
:
false
title
:
"Debugger"
}
minimumWidth
:
600
minimumHeight
:
600
ApplicationWindow
{
width
:
800
id
:
debugWindow
height
:
600
visible
:
false
title
:
"Debugger"
minimumWidth
:
600
Item
{
minimumHeight
:
600
id
:
keyHandler
width
:
800
focus
:
true
height
:
600
Keys.onPressed
:
{
if
(
event
.
key
==
Qt
.
Key_Space
)
{
ui
.
next
()
Item
{
}
id
:
keyHandler
}
focus
:
true
}
Keys.onPressed
:
{
SplitView
{
if
(
event
.
key
==
Qt
.
Key_Space
)
{
anchors.fill
:
parent
ui
.
next
()
property
var
asmModel
:
ListModel
{
}
id
:
asmModel
}
}
}
TableView
{
SplitView
{
id
:
asmTableView
anchors.fill
:
parent
width
:
200
property
var
asmModel
:
ListModel
{
TableViewColumn
{
role
:
"value"
;
title
:
""
;
width
:
100
}
id
:
asmModel
model
:
asmModel
}
}
TableView
{
id
:
asmTableView
Rectangle
{
width
:
200
anchors.left
:
asmTableView
.
right
TableViewColumn
{
role
:
"value"
;
title
:
""
;
width
:
100
}
anchors.right
:
parent
.
right
model
:
asmModel
SplitView
{
}
orientation
:
Qt
.
Vertical
anchors.fill
:
parent
Rectangle
{
anchors.left
:
asmTableView
.
right
TableView
{
anchors.right
:
parent
.
right
property
var
memModel
:
ListModel
{
SplitView
{
id
:
memModel
orientation
:
Qt
.
Vertical
}
anchors.fill
:
parent
height
:
parent
.
height
/
2
width
:
parent
.
width
TableView
{
TableViewColumn
{
id
:
mnumColmn
;
role
:
"num"
;
title
:
"#"
;
width
:
50
}
property
var
memModel
:
ListModel
{
TableViewColumn
{
role
:
"value"
;
title
:
"Memory"
;
width
:
750
}
id
:
memModel
model
:
memModel
}
}
height
:
parent
.
height
/
2
width
:
parent
.
width
SplitView
{
TableViewColumn
{
id
:
mnumColmn
;
role
:
"num"
;
title
:
"#"
;
width
:
50
}
orientation
:
Qt
.
Horizontal
TableViewColumn
{
role
:
"value"
;
title
:
"Memory"
;
width
:
750
}
id
:
debugSplitView
model
:
memModel
TableView
{
}
property
var
debuggerLog
:
ListModel
{
id
:
debuggerLog
SplitView
{
}
orientation
:
Qt
.
Horizontal
TableViewColumn
{
role
:
"value"
;
title
:
"Debug messages"
}
id
:
debugSplitView
model
:
debuggerLog
TableView
{
}
property
var
debuggerLog
:
ListModel
{
TableView
{
id
:
debuggerLog
property
var
stackModel
:
ListModel
{
}
id
:
stackModel
TableViewColumn
{
role
:
"value"
;
title
:
"Debug messages"
}
}
model
:
debuggerLog
height
:
parent
.
height
/
2
}
width
:
parent
.
width
TableView
{
TableViewColumn
{
role
:
"value"
;
title
:
"Stack"
;
width
:
debugSplitView
.
width
}
property
var
stackModel
:
ListModel
{
model
:
stackModel
id
:
stackModel
}
}
}
height
:
parent
.
height
/
2
}
width
:
parent
.
width
}
TableViewColumn
{
role
:
"value"
;
title
:
"Stack"
;
width
:
debugSplitView
.
width
}
}
model
:
stackModel
statusBar
:
StatusBar
{
}
RowLayout
{
}
anchors.fill
:
parent
}
Button
{
}
property
var
enabled
:
true
}
id
:
debugNextButton
statusBar
:
StatusBar
{
onClicked
:
{
RowLayout
{
ui
.
next
()
anchors.fill
:
parent
}
Button
{
text
:
"Next"
property
var
enabled
:
true
}
id
:
debugNextButton
}
onClicked
:
{
}
ui
.
next
()
}
}
text
:
"Next"
function
setAsm
(
asm
)
{
}
asmModel
.
append
({
asm
:
asm
})
}
}
}
}
function
setInstruction
(
num
)
{
asmTableView
.
selection
.
clear
()
function
setAsm
(
asm
)
{
asmTableView
.
selection
.
select
(
num
-
1
)
asmModel
.
append
({
asm
:
asm
})
}
}
function
clearAsm
()
{
function
setInstruction
(
num
)
{
asmModel
.
clear
()
asmTableView
.
selection
.
clear
()
}
asmTableView
.
selection
.
select
(
num
-
1
)
}
function
setMem
(
mem
)
{
memModel
.
append
({
num
:
mem
.
num
,
value
:
mem
.
value
})
function
clearAsm
()
{
}
asmModel
.
clear
()
function
clearMem
(){
}
memModel
.
clear
()
}
function
setMem
(
mem
)
{
memModel
.
append
({
num
:
mem
.
num
,
value
:
mem
.
value
})
function
setStack
(
stack
)
{
}
stackModel
.
append
({
value
:
stack
})
function
clearMem
(){
}
memModel
.
clear
()
function
addDebugMessage
(
message
){
}
console
.
log
(
"WOOP:"
)
debuggerLog
.
append
({
value
:
message
})
function
setStack
(
stack
)
{
}
stackModel
.
append
({
value
:
stack
})
}
function
clearStack
()
{
function
addDebugMessage
(
message
){
stackModel
.
clear
()
console
.
log
(
"WOOP:"
)
}
debuggerLog
.
append
({
value
:
message
})
}
function
loadPlugin
(
name
)
{
console
.
log
(
"Loading plugin"
+
name
)
function
clearStack
()
{
mainView
.
addPlugin
(
name
)
stackModel
.
clear
()
}
}
function
setWalletValue
(
value
)
{
function
loadPlugin
(
name
)
{
walletValueLabel
.
text
=
value
console
.
log
(
"Loading plugin"
+
name
)
}
mainView
.
addPlugin
(
name
)
}
function
addTx
(
tx
,
inout
)
{
var
isContract
function
setWalletValue
(
value
)
{
if
(
tx
.
contract
==
true
){
walletValueLabel
.
text
=
value
isContract
=
"Yes"
}
}
else
{
isContract
=
"No"
function
addTx
(
tx
,
inout
)
{
}
var
isContract
txModel
.
insert
(
0
,
{
inout
:
inout
,
hash
:
tx
.
hash
,
address
:
tx
.
address
,
value
:
tx
.
value
,
contract
:
isContract
})
if
(
tx
.
contract
==
true
){
}
isContract
=
"Yes"
}
else
{
function
addBlock
(
block
,
initial
)
{
isContract
=
"No"
var
txs
=
JSON
.
parse
(
block
.
transactions
);
}
var
amount
=
0
txModel
.
insert
(
0
,
{
inout
:
inout
,
hash
:
tx
.
hash
,
address
:
tx
.
address
,
value
:
tx
.
value
,
contract
:
isContract
})
if
(
initial
==
undefined
){
}
initial
=
false
}
function
addBlock
(
block
,
initial
)
{
var
txs
=
JSON
.
parse
(
block
.
transactions
);
if
(
txs
!=
null
){
var
amount
=
0
amount
=
txs
.
length
if
(
initial
==
undefined
){
}
initial
=
false
}
if
(
initial
){
blockModel
.
append
({
number
:
block
.
number
,
hash
:
block
.
hash
,
txs
:
txs
,
txAmount
:
amount
,
time
:
block
.
time
,
prettyTime
:
convertToPretty
(
block
.
time
)})
if
(
txs
!=
null
){
}
else
{
amount
=
txs
.
length
blockModel
.
insert
(
0
,
{
number
:
block
.
number
,
hash
:
block
.
hash
,
txs
:
txs
,
txAmount
:
amount
,
time
:
block
.
time
,
prettyTime
:
convertToPretty
(
block
.
time
)})
}
}
}
if
(
initial
){
blockModel
.
append
({
number
:
block
.
number
,
hash
:
block
.
hash
,
txs
:
txs
,
txAmount
:
amount
,
time
:
block
.
time
,
prettyTime
:
convertToPretty
(
block
.
time
)})
function
addLog
(
str
)
{
}
else
{
if
(
str
.
len
!=
0
)
{
blockModel
.
insert
(
0
,
{
number
:
block
.
number
,
hash
:
block
.
hash
,
txs
:
txs
,
txAmount
:
amount
,
time
:
block
.
time
,
prettyTime
:
convertToPretty
(
block
.
time
)})
logModel
.
append
({
description
:
str
})
}
}
}
}
function
addLog
(
str
)
{
function
setPeers
(
text
)
{
if
(
str
.
len
!=
0
)
{
peerLabel
.
text
=
text
logModel
.
append
({
description
:
str
})
}
}
function
convertToPretty
(
unixTs
){
}
var
a
=
new
Date
(
unixTs
*
1000
);
var
months
=
[
'Jan'
,
'Feb'
,
'Mar'
,
'Apr'
,
'May'
,
'Jun'
,
'Jul'
,
'Aug'
,
'Sep'
,
'Oct'
,
'Nov'
,
'Dec'
];
function
setPeers
(
text
)
{
var
year
=
a
.
getFullYear
();
peerLabel
.
text
=
text
var
month
=
months
[
a
.
getMonth
()];
}
var
date
=
a
.
getDate
();
function
convertToPretty
(
unixTs
){
var
hour
=
a
.
getHours
();
var
a
=
new
Date
(
unixTs
*
1000
);
var
min
=
a
.
getMinutes
();
var
months
=
[
'Jan'
,
'Feb'
,
'Mar'
,
'Apr'
,
'May'
,
'Jun'
,
'Jul'
,
'Aug'
,
'Sep'
,
'Oct'
,
'Nov'
,
'Dec'
];
var
sec
=
a
.
getSeconds
();
var
year
=
a
.
getFullYear
();
var
time
=
date
+
' '
+
month
+
' '
+
year
+
' '
+
hour
+
':'
+
min
+
':'
+
sec
;
var
month
=
months
[
a
.
getMonth
()];
return
time
;
var
date
=
a
.
getDate
();
}
var
hour
=
a
.
getHours
();
// *******************************************
var
min
=
a
.
getMinutes
();
// Components
var
sec
=
a
.
getSeconds
();
// *******************************************
var
time
=
date
+
' '
+
month
+
' '
+
year
+
' '
+
hour
+
':'
+
min
+
':'
+
sec
;
return
time
;
// New Contract component
}
Component
{
id
:
newContract
Column
{
id
:
mainContractColumn
function
contractFormReady
(){
if
(
codeView
.
text
.
length
>
0
&&
txValue
.
text
.
length
>
0
&&
txGas
.
text
.
length
>
0
&&
txGasPrice
.
length
>
0
)
{
txButton
.
state
=
"READY"
}
else
{
txButton
.
state
=
"NOTREADY"
}
}
states
:
[
State
{
name
:
"ERROR"
PropertyChanges
{
target
:
txResult
;
visible
:
true
}
PropertyChanges
{
target
:
codeView
;
visible
:
true
}
},
State
{
name
:
"DONE"
PropertyChanges
{
target
:
txValue
;
visible
:
false
}
PropertyChanges
{
target
:
txGas
;
visible
:
false
}
PropertyChanges
{
target
:
txGasPrice
;
visible
:
false
}
PropertyChanges
{
target
:
codeView
;
visible
:
false
}
PropertyChanges
{
target
:
txButton
;
visible
:
false
}
PropertyChanges
{
target
:
txDataLabel
;
visible
:
false
}
PropertyChanges
{
target
:
txResult
;
visible
:
true
}
PropertyChanges
{
target
:
txOutput
;
visible
:
true
}
PropertyChanges
{
target
:
newTxButton
;
visible
:
true
}
},
State
{
name
:
"SETUP"
PropertyChanges
{
target
:
txValue
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txGas
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txGasPrice
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
codeView
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txButton
;
visible
:
true
}
PropertyChanges
{
target
:
txDataLabel
;
visible
:
true
}
PropertyChanges
{
target
:
txResult
;
visible
:
false
}
PropertyChanges
{
target
:
txOutput
;
visible
:
false
}
PropertyChanges
{
target
:
newTxButton
;
visible
:
false
}
}
]
width
:
400
spacing
:
5
anchors.left
:
parent
.
left
anchors.top
:
parent
.
top
anchors.leftMargin
:
5
anchors.topMargin
:
5
TextField
{
id
:
txValue
width
:
200
placeholderText
:
"Amount"
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txGas
width
:
200
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
placeholderText
:
"Gas"
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txGasPrice
width
:
200
placeholderText
:
"Gas price"
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
contractFormReady
()
}
}
Row
{
id
:
rowContract
ExclusiveGroup
{
id
:
contractTypeGroup
}
RadioButton
{
id
:
createContractRadio
text
:
"Create contract"
checked
:
true
exclusiveGroup
:
contractTypeGroup
onClicked
:
{
txFuelRecipient
.
visible
=
false
txDataLabel
.
text
=
"Contract code"
}
}
RadioButton
{
id
:
runContractRadio
text
:
"Run contract"
exclusiveGroup
:
contractTypeGroup
onClicked
:
{
txFuelRecipient
.
visible
=
true
txDataLabel
.
text
=
"Contract arguments"
}
}
}
Label
{
id
:
txDataLabel
text
:
"Contract code"
}
TextArea
{
id
:
codeView
height
:
300
anchors.topMargin
:
5
Layout.fillWidth
:
true
width
:
parent
.
width
/
2
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txFuelRecipient
placeholderText
:
"Contract address"
validator
:
RegExpValidator
{
regExp
:
/
[
a-f0-9
]{40}
/
}
visible
:
false
width
:
530
}
Button
{
id
:
txButton
/* enabled: false */
states
:
[
State
{
name
:
"READY"
PropertyChanges
{
target
:
txButton
;
/*enabled: true*/
}
},
State
{
name
:
"NOTREADY"
PropertyChanges
{
target
:
txButton
;
/*enabled:false*/
}
}
]
text
:
"Send"
onClicked
:
{
//this.enabled = false
var
res
=
eth
.
create
(
txFuelRecipient
.
text
,
txValue
.
text
,
txGas
.
text
,
txGasPrice
.
text
,
codeView
.
text
)
if
(
res
[
1
])
{
txResult
.
text
=
"Your contract <b>could not</b> be send over the network:
\n
<b>"
txResult
.
text
+=
res
[
1
].
error
()
txResult
.
text
+=
"</b>"
mainContractColumn
.
state
=
"ERROR"
}
else
{
txResult
.
text
=
"Your transaction has been submitted:
\n
"
txOutput
.
text
=
res
[
0
].
address
mainContractColumn
.
state
=
"DONE"
}
}
}
Text
{
id
:
txResult
visible
:
false
}
TextField
{
id
:
txOutput
visible
:
false
width
:
530
}
Button
{
id
:
newTxButton
visible
:
false
text
:
"Create an other contract"
onClicked
:
{
this
.
visible
=
false
txResult
.
text
=
""
txOutput
.
text
=
""
mainContractColumn
.
state
=
"SETUP"
}
}
Button
{
id
:
debugButton
text
:
"Debug"
onClicked
:
{
var
res
=
ui
.
debugTx
(
""
,
txValue
.
text
,
txGas
.
text
,
txGasPrice
.
text
,
codeView
.
text
)
debugWindow
.
visible
=
true
}
}
}
}
// New Transaction component
Component
{
id
:
newTransaction
Column
{
id
:
simpleSendColumn
states
:
[
State
{
name
:
"ERROR"
},
State
{
name
:
"DONE"
PropertyChanges
{
target
:
txSimpleValue
;
visible
:
false
}
PropertyChanges
{
target
:
txSimpleRecipient
;
visible
:
false
}
PropertyChanges
{
target
:
newSimpleTxButton
;
visible
:
false
}
PropertyChanges
{
target
:
txSimpleResult
;
visible
:
true
}
PropertyChanges
{
target
:
txSimpleOutput
;
visible
:
true
}
PropertyChanges
{
target
:
newSimpleTxButton
;
visible
:
true
}
},
State
{
name
:
"SETUP"
PropertyChanges
{
target
:
txSimpleValue
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txSimpleRecipient
;
visible
:
true
;
text
:
""
}
PropertyChanges
{
target
:
txSimpleButton
;
visible
:
true
}
PropertyChanges
{
target
:
newSimpleTxButton
;
visible
:
false
}
}
]
spacing
:
5
anchors.leftMargin
:
5
anchors.topMargin
:
5
anchors.top
:
parent
.
top
anchors.left
:
parent
.
left
function
checkFormState
(){
if
(
txSimpleRecipient
.
text
.
length
==
40
&&
txSimpleValue
.
text
.
length
>
0
)
{
txSimpleButton
.
state
=
"READY"
}
else
{
txSimpleButton
.
state
=
"NOTREADY"
}
}
TextField
{
id
:
txSimpleRecipient
placeholderText
:
"Recipient address"
Layout.fillWidth
:
true
validator
:
RegExpValidator
{
regExp
:
/
[
a-f0-9
]{40}
/
}
width
:
530
onTextChanged
:
{
checkFormState
()
}
}
TextField
{
id
:
txSimpleValue
width
:
200
placeholderText
:
"Amount"
anchors.rightMargin
:
5
validator
:
RegExpValidator
{
regExp
:
/
\d
*/
}
onTextChanged
:
{
checkFormState
()
}
}
Button
{
id
:
txSimpleButton
/*enabled: false*/
states
:
[
State
{
name
:
"READY"
PropertyChanges
{
target
:
txSimpleButton
;
/*enabled: true*/
}
},
State
{
name
:
"NOTREADY"
PropertyChanges
{
target
:
txSimpleButton
;
/*enabled: false*/
}
}
]
text
:
"Send"
onClicked
:
{
//this.enabled = false
var
res
=
eth
.
transact
(
txSimpleRecipient
.
text
,
txSimpleValue
.
text
,
""
,
""
,
""
)
if
(
res
[
1
])
{
txSimpleResult
.
text
=
"There has been an error broadcasting your transaction:"
+
res
[
1
].
error
()
}
else
{
txSimpleResult
.
text
=
"Your transaction has been broadcasted over the network.
\n
Your transaction id is:"
txSimpleOutput
.
text
=
res
[
0
].
hash
this
.
visible
=
false
simpleSendColumn
.
state
=
"DONE"
}
}
}
Text
{
id
:
txSimpleResult
visible
:
false
}
TextField
{
id
:
txSimpleOutput
visible
:
false
width
:
530
}
Button
{
id
:
newSimpleTxButton
visible
:
false
text
:
"Create an other transaction"
onClicked
:
{
this
.
visible
=
false
simpleSendColumn
.
state
=
"SETUP"
}
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment