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
465b0a79
Commit
465b0a79
authored
Jan 21, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated browser & pass view to callback function
parent
87f50659
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
245 additions
and
231 deletions
+245
-231
browser.qml
cmd/mist/assets/qml/browser.qml
+242
-229
ui_lib.go
cmd/mist/ui_lib.go
+3
-2
No files found.
cmd/mist/assets/qml/browser.qml
View file @
465b0a79
...
@@ -9,9 +9,9 @@ import Ethereum 1.0
...
@@ -9,9 +9,9 @@ import Ethereum 1.0
Rectangle
{
Rectangle
{
id
:
window
id
:
window
objectName
:
"browserView"
objectName
:
"browserView"
anchors.fill
:
parent
anchors.fill
:
parent
color
:
"#00000000"
color
:
"#00000000"
property
var
title
:
"Browser"
property
var
title
:
"Browser"
property
var
iconSource
:
"../browser.png"
property
var
iconSource
:
"../browser.png"
...
@@ -139,311 +139,324 @@ Rectangle {
...
@@ -139,311 +139,324 @@ Rectangle {
}
}
}
}
// Border
// Border
Rectangle
{
Rectangle
{
id
:
divider
id
:
divider
anchors
{
anchors
{
left
:
parent
.
left
left
:
parent
.
left
right
:
parent
.
right
right
:
parent
.
right
top
:
navBar
.
bottom
top
:
navBar
.
bottom
}
}
z
:
-
1
z
:
-
1
height
:
1
height
:
1
color
:
"#CCCCCC"
color
:
"#CCCCCC"
}
}
WebView
{
ScrollView
{
objectName
:
"webView"
id
:
webview
anchors
{
anchors
{
left
:
parent
.
left
left
:
parent
.
left
right
:
parent
.
right
right
:
parent
.
right
bottom
:
parent
.
bottom
bottom
:
parent
.
bottom
top
:
divider
.
bottom
top
:
divider
.
bottom
}
}
WebView
{
objectName
:
"webView"
id
:
webview
anchors.fill
:
parent
function
injectJs
(
js
)
{
function
injectJs
(
js
)
{
webview
.
experimental
.
navigatorQtObjectEnabled
=
true
;
webview
.
experimental
.
navigatorQtObjectEnabled
=
true
;
webview
.
experimental
.
evaluateJavaScript
(
js
)
webview
.
experimental
.
evaluateJavaScript
(
js
)
webview
.
experimental
.
javascriptEnabled
=
true
;
webview
.
experimental
.
javascriptEnabled
=
true
;
}
}
function
sendMessage
(
data
)
{
function
sendMessage
(
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
(
data
))
webview
.
experimental
.
postMessage
(
JSON
.
stringify
(
data
))
}
}
Component.onCompleted
:
{
for
(
var
i
in
experimental
.
preferences
)
{
console
.
log
(
i
)
}
}
experimental.preferences.javascriptEnabled
:
true
experimental
.
preferences
.
javascriptEnabled
:
true
experimental.preferences.webGLEnabled
:
true
experimental
.
preferences
.
webAudioEnabled
:
true
experimental.itemSelector
:
MouseArea
{
experimental
.
preferences
.
pluginsEnabled
:
true
// To avoid conflicting with ListView.model when inside Initiator context.
experimental
.
preferences
.
navigatorQtObjectEnabled
:
true
property
QtObject
selectorModel
:
model
experimental
.
preferences
.
developerExtrasEnabled
:
true
anchors.fill
:
parent
experimental
.
preferences
.
webGLEnabled
:
true
onClicked
:
selectorModel
.
reject
()
experimental
.
preferences
.
notificationsEnabled
:
true
experimental
.
preferences
.
localStorageEnabled
:
true
Menu
{
experimental
.
userAgent
:
"Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Mist/0.1 Safari/537.36"
visible
:
true
id
:
itemSelector
experimental
.
itemSelector
:
MouseArea
{
// To avoid conflicting with ListView.model when inside Initiator context.
Instantiator
{
property
QtObject
selectorModel
:
model
model
:
selectorModel
.
items
anchors.fill
:
parent
delegate
:
MenuItem
{
onClicked
:
selectorModel
.
reject
()
text
:
model
.
text
onTriggered
:
{
Menu
{
selectorModel
.
accept
(
index
)
visible
:
true
id
:
itemSelector
Instantiator
{
model
:
selectorModel
.
items
delegate
:
MenuItem
{
text
:
model
.
text
onTriggered
:
{
selectorModel
.
accept
(
index
)
}
}
}
onObjectAdded
:
itemSelector
.
insertItem
(
index
,
object
)
onObjectRemoved
:
itemSelector
.
removeItem
(
object
)
}
}
onObjectAdded
:
itemSelector
.
insertItem
(
index
,
object
)
onObjectRemoved
:
itemSelector
.
removeItem
(
object
)
}
}
}
Component.onCompleted
:
{
Component.onCompleted
:
{
itemSelector
.
popup
()
itemSelector
.
popup
()
}
}
}
}
experimental.userScripts
:
[
"../ext/q.js"
,
"../ext/ethereum.js/lib/web3.js"
,
"../ext/ethereum.js/lib/qt.js"
,
"../ext/setup.js"
]
experimental.preferences.webAudioEnabled
:
true
experimental.onMessageReceived
:
{
experimental.preferences.navigatorQtObjectEnabled
:
true
console
.
log
(
"[onMessageReceived]: "
,
message
.
data
)
experimental.preferences.developerExtrasEnabled
:
true
// TODO move to messaging.js
experimental.userScripts
:
[
"../ext/q.js"
,
"../ext/ethereum.js/lib/web3.js"
,
"../ext/ethereum.js/lib/qt.js"
,
"../ext/setup.js"
]
var
data
=
JSON
.
parse
(
message
.
data
)
experimental.onMessageReceived
:
{
console
.
log
(
"[onMessageReceived]: "
,
message
.
data
)
// TODO move to messaging.js
var
data
=
JSON
.
parse
(
message
.
data
)
try
{
try
{
switch
(
data
.
call
)
{
switch
(
data
.
call
)
{
case
"eth_compile"
:
case
"eth_compile"
:
postData
(
data
.
_id
,
eth
.
compile
(
data
.
args
[
0
]))
postData
(
data
.
_id
,
eth
.
compile
(
data
.
args
[
0
]))
break
break
case
"eth_coinbase"
:
case
"eth_coinbase"
:
postData
(
data
.
_id
,
eth
.
coinBase
())
postData
(
data
.
_id
,
eth
.
coinBase
())
case
"eth_account"
:
case
"eth_account"
:
postData
(
data
.
_id
,
eth
.
key
().
address
);
postData
(
data
.
_id
,
eth
.
key
().
address
);
case
"eth_istening"
:
case
"eth_istening"
:
postData
(
data
.
_id
,
eth
.
isListening
())
postData
(
data
.
_id
,
eth
.
isListening
())
break
break
case
"eth_mining"
:
case
"eth_mining"
:
postData
(
data
.
_id
,
eth
.
isMining
())
postData
(
data
.
_id
,
eth
.
isMining
())
break
break
case
"eth_peerCount"
:
case
"eth_peerCount"
:
postData
(
data
.
_id
,
eth
.
peerCount
())
postData
(
data
.
_id
,
eth
.
peerCount
())
break
break
case
"eth_countAt"
:
case
"eth_countAt"
:
require
(
1
)
require
(
1
)
postData
(
data
.
_id
,
eth
.
txCountAt
(
data
.
args
[
0
]))
postData
(
data
.
_id
,
eth
.
txCountAt
(
data
.
args
[
0
]))
break
break
case
"eth_codeAt"
:
case
"eth_codeAt"
:
require
(
1
)
require
(
1
)
var
code
=
eth
.
codeAt
(
data
.
args
[
0
])
var
code
=
eth
.
codeAt
(
data
.
args
[
0
])
postData
(
data
.
_id
,
code
);
postData
(
data
.
_id
,
code
);
break
break
case
"eth_blockByNumber"
:
case
"eth_blockByNumber"
:
require
(
1
)
require
(
1
)
var
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
var
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
postData
(
data
.
_id
,
block
)
postData
(
data
.
_id
,
block
)
break
break
case
"eth_blockByHash"
:
case
"eth_blockByHash"
:
require
(
1
)
require
(
1
)
var
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
var
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
postData
(
data
.
_id
,
block
)
postData
(
data
.
_id
,
block
)
break
break
require
(
2
)
require
(
2
)
var
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
var
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
postData
(
data
.
_id
,
block
.
transactions
[
data
.
args
[
1
]])
postData
(
data
.
_id
,
block
.
transactions
[
data
.
args
[
1
]])
break
break
case
"eth_transactionByHash"
:
case
"eth_transactionByHash"
:
case
"eth_transactionByNumber"
:
case
"eth_transactionByNumber"
:
require
(
2
)
require
(
2
)
var
block
;
var
block
;
if
(
data
.
call
===
"transactionByHash"
)
if
(
data
.
call
===
"transactionByHash"
)
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
else
else
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
var
tx
=
block
.
transactions
.
get
(
data
.
args
[
1
])
var
tx
=
block
.
transactions
.
get
(
data
.
args
[
1
])
postData
(
data
.
_id
,
tx
)
postData
(
data
.
_id
,
tx
)
break
break
case
"eth_uncleByHash"
:
case
"eth_uncleByHash"
:
case
"eth_uncleByNumber"
:
case
"eth_uncleByNumber"
:
require
(
2
)
require
(
2
)
var
block
;
var
block
;
if
(
data
.
call
===
"uncleByHash"
)
if
(
data
.
call
===
"uncleByHash"
)
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
else
else
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
var
uncle
=
block
.
uncles
.
get
(
data
.
args
[
1
])
var
uncle
=
block
.
uncles
.
get
(
data
.
args
[
1
])
postData
(
data
.
_id
,
uncle
)
postData
(
data
.
_id
,
uncle
)
break
break
case
"transact"
:
case
"transact"
:
require
(
5
)
require
(
5
)
var
tx
=
eth
.
transact
(
data
.
args
)
var
tx
=
eth
.
transact
(
data
.
args
)
postData
(
data
.
_id
,
tx
)
postData
(
data
.
_id
,
tx
)
break
break
case
"eth_stateAt"
:
case
"eth_stateAt"
:
require
(
2
);
require
(
2
);
var
storage
=
eth
.
storageAt
(
data
.
args
[
0
],
data
.
args
[
1
]);
var
storage
=
eth
.
storageAt
(
data
.
args
[
0
],
data
.
args
[
1
]);
postData
(
data
.
_id
,
storage
)
postData
(
data
.
_id
,
storage
)
break
break
case
"eth_call"
:
case
"eth_call"
:
require
(
1
);
require
(
1
);
var
ret
=
eth
.
call
(
data
.
args
)
var
ret
=
eth
.
call
(
data
.
args
)
postData
(
data
.
_id
,
ret
)
postData
(
data
.
_id
,
ret
)
break
break
case
"eth_balanceAt"
:
case
"eth_balanceAt"
:
require
(
1
);
require
(
1
);
postData
(
data
.
_id
,
eth
.
balanceAt
(
data
.
args
[
0
]));
postData
(
data
.
_id
,
eth
.
balanceAt
(
data
.
args
[
0
]));
break
break
case
"eth_watch"
:
case
"eth_watch"
:
require
(
2
)
require
(
2
)
eth
.
watch
(
data
.
args
[
0
],
data
.
args
[
1
])
eth
.
watch
(
data
.
args
[
0
],
data
.
args
[
1
])
case
"eth_disconnect"
:
case
"eth_disconnect"
:
require
(
1
)
require
(
1
)
postData
(
data
.
_id
,
null
)
postData
(
data
.
_id
,
null
)
break
;
break
;
case
"eth_newFilterString"
:
case
"eth_newFilterString"
:
require
(
1
)
require
(
1
)
var
id
=
eth
.
newFilterString
(
data
.
args
[
0
])
var
id
=
eth
.
newFilterString
(
data
.
args
[
0
])
postData
(
data
.
_id
,
id
);
postData
(
data
.
_id
,
id
);
break
;
break
;
case
"eth_newFilter"
:
case
"eth_newFilter"
:
require
(
1
)
require
(
1
)
var
id
=
eth
.
newFilter
(
data
.
args
[
0
])
var
id
=
eth
.
newFilter
(
data
.
args
[
0
])
postData
(
data
.
_id
,
id
);
postData
(
data
.
_id
,
id
);
break
;
break
;
case
"eth_filterLogs"
:
case
"eth_filterLogs"
:
require
(
1
);
require
(
1
);
var
messages
=
eth
.
messages
(
data
.
args
[
0
]);
var
messages
=
eth
.
messages
(
data
.
args
[
0
]);
var
m
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
messages
)))
var
m
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
messages
)))
postData
(
data
.
_id
,
m
);
postData
(
data
.
_id
,
m
);
break
;
break
;
case
"eth_deleteFilter"
:
case
"eth_deleteFilter"
:
require
(
1
);
require
(
1
);
eth
.
uninstallFilter
(
data
.
args
[
0
])
eth
.
uninstallFilter
(
data
.
args
[
0
])
break
;
break
;
case
"shh_newFilter"
:
case
"shh_newFilter"
:
require
(
1
);
require
(
1
);
var
id
=
shh
.
watch
(
data
.
args
[
0
],
window
);
var
id
=
shh
.
watch
(
data
.
args
[
0
],
window
);
postData
(
data
.
_id
,
id
);
postData
(
data
.
_id
,
id
);
break
;
break
;
case
"shh_newIdentity"
:
case
"shh_newIdentity"
:
var
id
=
shh
.
newIdentity
()
var
id
=
shh
.
newIdentity
()
postData
(
data
.
_id
,
id
)
postData
(
data
.
_id
,
id
)
break
break
case
"shh_post"
:
case
"shh_post"
:
require
(
1
);
require
(
1
);
var
params
=
data
.
args
[
0
];
var
params
=
data
.
args
[
0
];
var
fields
=
[
"payload"
,
"to"
,
"from"
];
var
fields
=
[
"payload"
,
"to"
,
"from"
];
for
(
var
i
=
0
;
i
<
fields
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
fields
.
length
;
i
++
)
{
params
[
fields
[
i
]]
=
params
[
fields
[
i
]]
||
""
;
params
[
fields
[
i
]]
=
params
[
fields
[
i
]]
||
""
;
}
}
if
(
typeof
params
.
payload
!==
"object"
)
{
params
.
payload
=
[
params
.
payload
];
}
//params.payload = params.payload.join(""); }
if
(
typeof
params
.
payload
!==
"object"
)
{
params
.
payload
=
[
params
.
payload
];
}
//params.payload = params.payload.join(""); }
params
.
topics
=
params
.
topics
||
[];
params
.
topics
=
params
.
topics
||
[];
params
.
priority
=
params
.
priority
||
1000
;
params
.
priority
=
params
.
priority
||
1000
;
params
.
ttl
=
params
.
ttl
||
100
;
params
.
ttl
=
params
.
ttl
||
100
;
shh
.
post
(
params
.
payload
,
params
.
to
,
params
.
from
,
params
.
topics
,
params
.
priority
,
params
.
ttl
);
shh
.
post
(
params
.
payload
,
params
.
to
,
params
.
from
,
params
.
topics
,
params
.
priority
,
params
.
ttl
);
break
;
break
;
case
"shh_getMessages"
:
case
"shh_getMessages"
:
require
(
1
);
require
(
1
);
var
m
=
shh
.
messages
(
data
.
args
[
0
]);
var
m
=
shh
.
messages
(
data
.
args
[
0
]);
var
messages
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
m
)));
var
messages
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
m
)));
postData
(
data
.
_id
,
messages
);
postData
(
data
.
_id
,
messages
);
break
;
break
;
case
"ssh_newGroup"
:
case
"ssh_newGroup"
:
postData
(
data
.
_id
,
""
);
postData
(
data
.
_id
,
""
);
break
;
break
;
}
}
}
catch
(
e
)
{
}
catch
(
e
)
{
console
.
log
(
data
.
call
+
": "
+
e
)
console
.
log
(
data
.
call
+
": "
+
e
)
postData
(
data
.
_id
,
null
);
postData
(
data
.
_id
,
null
);
}
}
}
}
function
post
(
seed
,
data
)
{
function
post
(
seed
,
data
)
{
postData
(
data
.
_id
,
data
)
postData
(
data
.
_id
,
data
)
}
}
function
require
(
args
,
num
)
{
function
require
(
args
,
num
)
{
if
(
args
.
length
<
num
)
{
if
(
args
.
length
<
num
)
{
throw
(
"required argument count of "
+
num
+
" got "
+
args
.
length
);
throw
(
"required argument count of "
+
num
+
" got "
+
args
.
length
);
}
}
function
postData
(
seed
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_id
:
seed
}))
}
function
postEvent
(
event
,
id
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_id
:
id
,
_event
:
event
}))
}
}
}
function
postData
(
seed
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_id
:
seed
}))
}
function
postEvent
(
event
,
id
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_id
:
id
,
_event
:
event
}))
}
function
onWatchedCb
(
data
,
id
)
{
function
onWatchedCb
(
data
,
id
)
{
var
messages
=
JSON
.
parse
(
data
)
var
messages
=
JSON
.
parse
(
data
)
postEvent
(
"watched:"
+
id
,
messages
)
postEvent
(
"watched:"
+
id
,
messages
)
}
}
function
onNewBlockCb
(
block
)
{
function
onNewBlockCb
(
block
)
{
postEvent
(
"block:new"
,
block
)
postEvent
(
"block:new"
,
block
)
}
}
function
onObjectChangeCb
(
stateObject
)
{
function
onObjectChangeCb
(
stateObject
)
{
postEvent
(
"object:"
+
stateObject
.
address
(),
stateObject
)
postEvent
(
"object:"
+
stateObject
.
address
(),
stateObject
)
}
}
function
onStorageChangeCb
(
storageObject
)
{
function
onStorageChangeCb
(
storageObject
)
{
var
ev
=
[
"storage"
,
storageObject
.
stateAddress
,
storageObject
.
address
].
join
(
":"
);
var
ev
=
[
"storage"
,
storageObject
.
stateAddress
,
storageObject
.
address
].
join
(
":"
);
postEvent
(
ev
,
[
storageObject
.
address
,
storageObject
.
value
])
postEvent
(
ev
,
[
storageObject
.
address
,
storageObject
.
value
])
}
}
}
}
}
...
...
cmd/mist/ui_lib.go
View file @
465b0a79
...
@@ -312,10 +312,11 @@ func (self *UiLib) ToAscii(data string) string {
...
@@ -312,10 +312,11 @@ func (self *UiLib) ToAscii(data string) string {
}
}
/// Ethereum filter methods
/// Ethereum filter methods
func
(
self
*
UiLib
)
NewFilter
(
object
map
[
string
]
interface
{})
(
id
int
)
{
func
(
self
*
UiLib
)
NewFilter
(
object
map
[
string
]
interface
{}
,
view
*
qml
.
Common
)
(
id
int
)
{
filter
:=
qt
.
NewFilterFromMap
(
object
,
self
.
eth
)
filter
:=
qt
.
NewFilterFromMap
(
object
,
self
.
eth
)
filter
.
MessageCallback
=
func
(
messages
state
.
Messages
)
{
filter
.
MessageCallback
=
func
(
messages
state
.
Messages
)
{
self
.
win
.
Root
()
.
Call
(
"invokeFilterCallback"
,
xeth
.
ToJSMessages
(
messages
),
id
)
view
.
Call
(
"messages"
,
xeth
.
ToJSMessages
(
messages
),
id
)
//self.win.Root().Call("invokeFilterCallback", xeth.ToJSMessages(messages), id)
}
}
id
=
self
.
filterManager
.
InstallFilter
(
filter
)
id
=
self
.
filterManager
.
InstallFilter
(
filter
)
return
id
return
id
...
...
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