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
0656f465
Commit
0656f465
authored
Feb 23, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added transactions window
parent
aa33a4b2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
163 additions
and
42 deletions
+163
-42
transactions.qml
transactions.qml
+9
-0
gui.go
ui/gui.go
+19
-0
wallet.qml
wallet.qml
+135
-42
No files found.
transactions.qml
0 → 100644
View file @
0656f465
import
QtQuick
2.0
import
QtQuick
.
Controls
1.0
;
import
QtQuick
.
Layouts
1.0
;
Rectangle
{
id
:
transactionView
visible
:
false
Text
{
text
:
"TX VIEW"
}
}
ui/gui.go
View file @
0656f465
...
...
@@ -18,6 +18,17 @@ type Block struct {
Hash
string
}
type
Tx
struct
{
Value
,
Hash
,
Address
string
}
func
NewTxFromTransaction
(
tx
*
ethchain
.
Transaction
)
*
Tx
{
hash
:=
hex
.
EncodeToString
(
tx
.
Hash
())
sender
:=
hex
.
EncodeToString
(
tx
.
Recipient
)
return
&
Tx
{
Hash
:
hash
[
:
4
],
Value
:
tx
.
Value
.
String
(),
Address
:
sender
}
}
// Creates a new QML Block from a chain block
func
NewBlockFromBlock
(
block
*
ethchain
.
Block
)
*
Block
{
info
:=
block
.
BlockInfo
()
...
...
@@ -56,6 +67,8 @@ func (ui *Gui) Start() {
// Register ethereum functions
qml
.
RegisterTypes
(
"Ethereum"
,
1
,
0
,
[]
qml
.
TypeSpec
{{
Init
:
func
(
p
*
Block
,
obj
qml
.
Object
)
{
p
.
Number
=
0
;
p
.
Hash
=
""
},
},
{
Init
:
func
(
p
*
Tx
,
obj
qml
.
Object
)
{
p
.
Value
=
""
;
p
.
Hash
=
""
;
p
.
Address
=
""
},
}})
ethutil
.
Config
.
Log
.
Infoln
(
"[GUI] Starting GUI"
)
...
...
@@ -66,6 +79,7 @@ func (ui *Gui) Start() {
if
err
!=
nil
{
panic
(
err
)
}
ui
.
engine
.
LoadFile
(
"transactions.qml"
)
ui
.
win
=
component
.
CreateWindow
(
nil
)
...
...
@@ -77,6 +91,7 @@ func (ui *Gui) Start() {
// Register the ui as a block processor
ui
.
eth
.
BlockManager
.
SecondaryBlockProcessor
=
ui
ui
.
eth
.
TxPool
.
SecondaryProcessor
=
ui
// Add the ui as a log system so we can log directly to the UGI
ethutil
.
Config
.
Log
.
AddLogSystem
(
ui
)
...
...
@@ -102,6 +117,10 @@ func (ui *Gui) ProcessBlock(block *ethchain.Block) {
ui
.
win
.
Root
()
.
Call
(
"addBlock"
,
NewBlockFromBlock
(
block
))
}
func
(
ui
*
Gui
)
ProcessTransaction
(
tx
*
ethchain
.
Transaction
)
{
ui
.
win
.
Root
()
.
Call
(
"addTx"
,
NewTxFromTransaction
(
tx
))
}
// Logging functions that log directly to the GUI interface
func
(
ui
*
Gui
)
Println
(
v
...
interface
{})
{
str
:=
strings
.
TrimRight
(
fmt
.
Sprintln
(
v
...
),
"
\n
"
)
...
...
wallet.qml
View file @
0656f465
...
...
@@ -3,18 +3,18 @@ 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
ApplicationWindow
{
id
:
root
width
:
8
00
width
:
9
00
height
:
600
minimumHeight
:
300
title
:
"Ethereal"
toolBar
:
ToolBar
{
id
:
mainToolbar
...
...
@@ -43,22 +43,6 @@ ApplicationWindow {
}
}
SplitView
{
id
:
splitView
height
:
200
anchors.top
:
parent
.
top
anchors.right
:
parent
.
right
anchors.left
:
parent
.
left
TextArea
{
id
:
codeView
width
:
parent
.
width
/
2
}
TextArea
{
readOnly
:
true
}
}
MenuBar
{
Menu
{
...
...
@@ -85,42 +69,133 @@ ApplicationWindow {
onTriggered
:
ui
.
connect
()
}
}
Menu
{
title
:
"Help"
MenuItem
{
text
:
"About"
onTriggered
:
{
aboutWin
.
visible
=
true
}
}
}
}
property
var
blockModel
:
ListModel
{
id
:
blockModel
}
function
setView
(
view
)
{
mainView
.
visible
=
false
transactionView
.
visible
=
false
view
.
visible
=
true
}
TableView
{
id
:
blockTable
width
:
parent
.
width
anchors.top
:
splitView
.
bottom
anchors.bottom
:
logView
.
top
TableViewColumn
{
role
:
"number"
;
title
:
"#"
;
width
:
100
}
TableViewColumn
{
role
:
"hash"
;
title
:
"Hash"
;
width
:
560
}
SplitView
{
anchors.fill
:
parent
Rectangle
{
id
:
menu
width
:
200
anchors.bottom
:
parent
.
bottom
anchors.top
:
parent
.
top
color
:
"#D9DDE7"
GridLayout
{
columns
:
1
Button
{
text
:
"Main"
onClicked
:
{
setView
(
mainView
)
}
}
Button
{
text
:
"Transactions"
onClicked
:
{
setView
(
transactionView
)
}
}
}
}
model
:
blockModel
property
var
txModel
:
ListModel
{
id
:
txModel
}
onDoubleClicked
:
{
popup
.
visible
=
true
popup
.
block
=
eth
.
getBlock
(
blockModel
.
get
(
row
).
hash
)
popup
.
hashLabel
.
text
=
popup
.
block
.
hash
Rectangle
{
id
:
transactionView
visible
:
false
anchors.right
:
parent
.
right
anchors.left
:
menu
.
right
anchors.bottom
:
parent
.
bottom
anchors.top
:
parent
.
top
TableView
{
id
:
txTableView
anchors.fill
:
parent
TableViewColumn
{
role
:
"hash"
;
title
:
"#"
;
width
:
150
}
TableViewColumn
{
role
:
"value"
;
title
:
"Value"
;
width
:
100
}
TableViewColumn
{
role
:
"address"
;
title
:
"Address"
;
}
model
:
txModel
}
}
}
property
var
logModel
:
ListModel
{
id
:
logModel
}
Rectangle
{
id
:
mainView
anchors.right
:
parent
.
right
anchors.bottom
:
parent
.
bottom
anchors.top
:
parent
.
top
SplitView
{
id
:
splitView
height
:
200
anchors.top
:
parent
.
top
anchors.right
:
parent
.
right
anchors.left
:
parent
.
left
TextArea
{
id
:
codeView
width
:
parent
.
width
/
2
}
TextArea
{
readOnly
:
true
}
}
TableView
{
id
:
blockTable
width
:
parent
.
width
anchors.top
:
splitView
.
bottom
anchors.bottom
:
logView
.
top
TableViewColumn
{
role
:
"number"
;
title
:
"#"
;
width
:
100
}
TableViewColumn
{
role
:
"hash"
;
title
:
"Hash"
;
width
:
560
}
model
:
blockModel
TableView
{
id
:
logView
width
:
parent
.
width
height
:
150
anchors.bottom
:
parent
.
bottom
TableViewColumn
{
role
:
"description"
;
title
:
"log"
}
onDoubleClicked
:
{
popup
.
visible
=
true
popup
.
block
=
eth
.
getBlock
(
blockModel
.
get
(
row
).
hash
)
popup
.
hashLabel
.
text
=
popup
.
block
.
hash
}
}
model
:
logModel
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
}
}
}
FileDialog
{
...
...
@@ -146,7 +221,6 @@ ApplicationWindow {
text
:
"Import App"
}
Label
{
text
:
"0.0.1"
}
Label
{
anchors.right
:
peerImage
.
left
anchors.rightMargin
:
5
...
...
@@ -201,6 +275,25 @@ ApplicationWindow {
}
}
Window
{
id
:
aboutWin
visible
:
false
title
:
"About"
minimumWidth
:
300
maximumWidth
:
300
maximumHeight
:
200
minimumHeight
:
200
Text
{
font.pointSize
:
18
text
:
"Eth Go"
}
}
function
addTx
(
tx
)
{
txModel
.
insert
(
0
,
{
hash
:
tx
.
hash
,
address
:
tx
.
address
,
value
:
tx
.
value
})
}
function
addBlock
(
block
)
{
blockModel
.
insert
(
0
,
{
number
:
block
.
number
,
hash
:
block
.
hash
})
...
...
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