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
cf1ae41b
Commit
cf1ae41b
authored
Apr 11, 2014
by
Maran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved (hopefully) the send transaction tab
parent
e2bf5d12
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
226 additions
and
57 deletions
+226
-57
wallet.qml
ethereal/assets/qml/wallet.qml
+216
-53
library.go
ethereal/ui/library.go
+10
-4
No files found.
ethereal/assets/qml/wallet.qml
View file @
cf1ae41b
...
@@ -179,70 +179,233 @@ ApplicationWindow {
...
@@ -179,70 +179,233 @@ ApplicationWindow {
visible
:
false
visible
:
false
anchors.fill
:
parent
anchors.fill
:
parent
color
:
"#00000000"
color
:
"#00000000"
TabView
{
ColumnLayout
{
anchors.fill
:
parent
width
:
400
anchors.rightMargin
:
5
anchors.left
:
parent
.
left
anchors.top
:
parent
.
top
anchors.leftMargin
:
5
anchors.leftMargin
:
5
anchors.topMargin
:
5
anchors.topMargin
:
5
TextField
{
anchors.bottomMargin
:
5
id
:
txRecipient
id
:
newTransactionTab
placeholderText
:
"Recipient address (or empty for contract)"
Component.onCompleted
:{
Layout.fillWidth
:
true
addTab
(
"Send ether"
,
newTransaction
)
}
addTab
(
"Create contract"
,
newContract
)
TextField
{
id
:
txValue
width
:
200
placeholderText
:
"Amount"
}
}
TextField
{
}
id
:
txGas
Component
{
width
:
200
id
:
newTransaction
placeholderText
:
"Gas"
Column
{
anchors.left
:
txValue
spacing
:
5
anchors.leftMargin
:
5
anchors.leftMargin
:
5
anchors.topMargin
:
5
anchors.top
:
parent
.
top
anchors.left
:
parent
.
left
TextField
{
id
:
txSimpleRecipient
placeholderText
:
"Recipient address"
Layout.fillWidth
:
true
validator
:
RegExpValidator
{
regExp
:
/
[
a-f0-9
]{40}
/
}
width
:
530
}
TextField
{
id
:
txSimpleValue
placeholderText
:
"Amount"
anchors.rightMargin
:
5
validator
:
IntValidator
{
}
}
Button
{
id
:
txSimpleButton
text
:
"Send"
onClicked
:
{
//this.enabled = false
var
res
=
eth
.
createTx
(
txSimpleRecipient
.
text
,
txSimpleValue
.
text
,
""
,
""
,
""
)
if
(
res
[
1
])
{
txSimpleResult
.
text
=
"There has been an error broadcasting your transaction:"
+
res
[
1
].
error
()
txSimpleResult
.
visible
=
true
}
else
{
txSimpleResult
.
text
=
"Your transaction has been broadcasted over the network.
\n
Your transaction id is:"
txSimpleOutput
.
text
=
res
[
0
]
txSimpleOutput
.
visible
=
true
txSimpleResult
.
visible
=
true
txSimpleValue
.
visible
=
false
txSimpleRecipient
.
visible
=
false
txSimpleValue
.
text
=
""
txSimpleRecipient
.
text
=
""
txSimpleRecipient
.
focus
=
true
newSimpleTxButton
.
visible
=
true
this
.
visible
=
false
}
}
}
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
txSimpleResult
.
text
=
""
txSimpleOutput
.
text
=
""
txSimpleResult
.
visible
=
false
txSimpleOutput
.
visible
=
false
txSimpleValue
.
visible
=
true
txSimpleRecipient
.
visible
=
true
txSimpleButton
.
visible
=
true
}
}
}
}
TextField
{
}
id
:
txGasPrice
Component
{
width
:
200
id
:
newContract
placeholderText
:
"Gas price"
Column
{
anchors.left
:
txGas
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.leftMargin
:
5
}
anchors.topMargin
:
5
Label
{
TextField
{
text
:
"Transaction data"
id
:
txValue
}
width
:
200
placeholderText
:
"Amount"
validator
:
IntValidator
{
}
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txGas
width
:
200
validator
:
IntValidator
{
}
placeholderText
:
"Gas"
onTextChanged
:
{
contractFormReady
()
}
}
TextField
{
id
:
txGasPrice
width
:
200
placeholderText
:
"Gas price"
validator
:
IntValidator
{
}
onTextChanged
:
{
contractFormReady
()
}
}
TextArea
{
Label
{
id
:
codeView
id
:
txDataLabel
anchors.topMargin
:
5
text
:
"Transaction data"
Layout.fillWidth
:
true
}
width
:
parent
.
width
/
2
}
Button
{
TextArea
{
id
:
txButton
id
:
codeView
text
:
"Send"
anchors.topMargin
:
5
onClicked
:
{
Layout.fillWidth
:
true
//this.enabled = false
width
:
parent
.
width
/
2
var
res
=
eth
.
createTx
(
txRecipient
.
text
,
txValue
.
text
,
txGas
.
text
,
txGasPrice
.
text
,
codeView
.
text
)
onTextChanged
:
{
if
(
res
[
1
])
{
contractFormReady
()
txOutput
.
text
=
"Output:
\n
"
+
res
[
1
].
error
()
}
}
else
{
}
txOutput
.
text
=
"Output:
\n
"
+
res
[
0
]
Button
{
id
:
txButton
states
:
[
State
{
name
:
"READY"
PropertyChanges
{
target
:
txButton
;
enabled
:
true
}
},
State
{
name
:
"NOTREADY"
PropertyChanges
{
target
:
txButton
;
enabled
:
false
}
}
]
text
:
"Send"
enabled
:
false
onClicked
:
{
//this.enabled = false
var
res
=
eth
.
createTx
(
""
,
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 contract has been submitted:
\n
"
txOutput
.
text
=
res
[
0
]
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"
}
}
txOutput
.
visible
=
true
}
}
}
TextArea
{
id
:
txOutput
visible
:
false
Layout.fillWidth
:
true
height
:
40
anchors.bottom
:
parent
.
bottom
}
}
}
}
}
}
...
...
ethereal/ui/library.go
View file @
cf1ae41b
...
@@ -63,15 +63,21 @@ func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, data strin
...
@@ -63,15 +63,21 @@ func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, data strin
var
tx
*
ethchain
.
Transaction
var
tx
*
ethchain
.
Transaction
// Compile and assemble the given data
// Compile and assemble the given data
if
contractCreation
{
if
contractCreation
{
asm
,
err
:=
mutan
.
Compile
(
strings
.
NewReader
(
data
),
false
)
asm
,
errors
:=
mutan
.
Compile
(
strings
.
NewReader
(
data
),
false
)
if
err
!=
nil
{
if
len
(
errors
)
>
0
{
return
""
,
err
var
errs
string
for
_
,
er
:=
range
errors
{
if
er
!=
nil
{
errs
+=
er
.
Error
()
}
}
return
""
,
fmt
.
Errorf
(
errs
)
}
}
code
:=
ethutil
.
Assemble
(
asm
...
)
code
:=
ethutil
.
Assemble
(
asm
...
)
tx
=
ethchain
.
NewContractCreationTx
(
value
,
gasPrice
,
code
)
tx
=
ethchain
.
NewContractCreationTx
(
value
,
gasPrice
,
code
)
}
else
{
}
else
{
tx
=
ethchain
.
NewTransactionMessage
(
hash
,
value
,
gasPrice
,
gas
,
[]
string
{}
)
tx
=
ethchain
.
NewTransactionMessage
(
hash
,
value
,
gasPrice
,
gas
,
nil
)
}
}
acc
:=
lib
.
stateManager
.
GetAddrState
(
keyPair
.
Address
())
acc
:=
lib
.
stateManager
.
GetAddrState
(
keyPair
.
Address
())
tx
.
Nonce
=
acc
.
Nonce
tx
.
Nonce
=
acc
.
Nonce
...
...
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