Added open js option for repetitive tasks in ethereal
This commit is contained in:
		
							parent
							
								
									ce8f24e57a
								
							
						
					
					
						commit
						c59d7a899b
					
				| @ -63,6 +63,16 @@ ApplicationWindow { | |||||||
| 					txImportDialog.visible = true | 					txImportDialog.visible = true | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  | 
 | ||||||
|  | 			MenuItem { | ||||||
|  | 				text: "Run JS file" | ||||||
|  | 				onTriggered: { | ||||||
|  | 					generalFileDialog.callback = function(path) { | ||||||
|  | 						eth.evalJavascriptFile(path) | ||||||
|  | 					} | ||||||
|  | 					generalFileDialog.open() | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		Menu { | 		Menu { | ||||||
| @ -452,6 +462,16 @@ ApplicationWindow { | |||||||
| 		onAccepted: { | 		onAccepted: { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	 | ||||||
|  | 
 | ||||||
|  | 	FileDialog { | ||||||
|  | 		id: generalFileDialog | ||||||
|  | 		property var callback; | ||||||
|  | 		onAccepted: { | ||||||
|  | 			var path = this.fileUrl.toString() | ||||||
|  | 			callback.call(this, path) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	FileDialog { | 	FileDialog { | ||||||
| 		id: importDialog | 		id: importDialog | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ import ( | |||||||
| 	"github.com/ethereum/eth-go/ethreact" | 	"github.com/ethereum/eth-go/ethreact" | ||||||
| 	"github.com/ethereum/eth-go/ethutil" | 	"github.com/ethereum/eth-go/ethutil" | ||||||
| 	"github.com/ethereum/eth-go/ethwire" | 	"github.com/ethereum/eth-go/ethwire" | ||||||
|  | 	"github.com/ethereum/go-ethereum/javascript" | ||||||
| 	"github.com/ethereum/go-ethereum/utils" | 	"github.com/ethereum/go-ethereum/utils" | ||||||
| 	"github.com/go-qml/qml" | 	"github.com/go-qml/qml" | ||||||
| ) | ) | ||||||
| @ -47,6 +48,8 @@ type Gui struct { | |||||||
| 	config         *ethutil.ConfigManager | 	config         *ethutil.ConfigManager | ||||||
| 
 | 
 | ||||||
| 	miner *ethminer.Miner | 	miner *ethminer.Miner | ||||||
|  | 
 | ||||||
|  | 	jsEngine *javascript.JSRE | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Create GUI, but doesn't start it
 | // Create GUI, but doesn't start it
 | ||||||
| @ -58,7 +61,7 @@ func NewWindow(ethereum *eth.Ethereum, config *ethutil.ConfigManager, clientIden | |||||||
| 
 | 
 | ||||||
| 	pub := ethpub.NewPEthereum(ethereum) | 	pub := ethpub.NewPEthereum(ethereum) | ||||||
| 
 | 
 | ||||||
| 	return &Gui{eth: ethereum, txDb: db, pub: pub, logLevel: ethlog.LogLevel(logLevel), Session: session, open: false, clientIdentity: clientIdentity, config: config} | 	return &Gui{eth: ethereum, txDb: db, pub: pub, logLevel: ethlog.LogLevel(logLevel), Session: session, open: false, clientIdentity: clientIdentity, config: config, jsEngine: javascript.NewJSRE(ethereum)} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (gui *Gui) Start(assetPath string) { | func (gui *Gui) Start(assetPath string) { | ||||||
| @ -121,6 +124,9 @@ func (gui *Gui) Stop() { | |||||||
| 		gui.open = false | 		gui.open = false | ||||||
| 		gui.win.Hide() | 		gui.win.Hide() | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	gui.jsEngine.Stop() | ||||||
|  | 
 | ||||||
| 	logger.Infoln("Stopped") | 	logger.Infoln("Stopped") | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -464,6 +470,13 @@ func (self *Gui) ImportTx(rlpTx string) { | |||||||
| 	self.eth.TxPool().QueueTransaction(tx) | 	self.eth.TxPool().QueueTransaction(tx) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (self *Gui) SearchChange(blockHash, address, storageAddress string) { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (self *Gui) EvalJavascriptFile(path string) { | ||||||
|  | 	self.jsEngine.LoadExtFile(path[7:]) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (gui *Gui) SetCustomIdentifier(customIdentifier string) { | func (gui *Gui) SetCustomIdentifier(customIdentifier string) { | ||||||
| 	gui.clientIdentity.SetCustomIdentifier(customIdentifier) | 	gui.clientIdentity.SetCustomIdentifier(customIdentifier) | ||||||
| 	gui.config.Save("id", customIdentifier) | 	gui.config.Save("id", customIdentifier) | ||||||
|  | |||||||
| @ -1,11 +1,13 @@ | |||||||
| package main | package main | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"github.com/ethereum/eth-go" |  | ||||||
| 	"github.com/ethereum/go-ethereum/ethereum/repl" |  | ||||||
| 	"github.com/ethereum/go-ethereum/utils" |  | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"os" | 	"os" | ||||||
|  | 
 | ||||||
|  | 	"github.com/ethereum/eth-go" | ||||||
|  | 	"github.com/ethereum/go-ethereum/ethereum/repl" | ||||||
|  | 	"github.com/ethereum/go-ethereum/javascript" | ||||||
|  | 	"github.com/ethereum/go-ethereum/utils" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func InitJsConsole(ethereum *eth.Ethereum) { | func InitJsConsole(ethereum *eth.Ethereum) { | ||||||
| @ -25,7 +27,7 @@ func ExecJsFile(ethereum *eth.Ethereum, InputFile string) { | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		logger.Fatalln(err) | 		logger.Fatalln(err) | ||||||
| 	} | 	} | ||||||
| 	re := ethrepl.NewJSRE(ethereum) | 	re := javascript.NewJSRE(ethereum) | ||||||
| 	utils.RegisterInterrupt(func(os.Signal) { | 	utils.RegisterInterrupt(func(os.Signal) { | ||||||
| 		re.Stop() | 		re.Stop() | ||||||
| 	}) | 	}) | ||||||
|  | |||||||
| @ -3,12 +3,14 @@ package ethrepl | |||||||
| import ( | import ( | ||||||
| 	"bufio" | 	"bufio" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"github.com/ethereum/eth-go" |  | ||||||
| 	"github.com/ethereum/eth-go/ethlog" |  | ||||||
| 	"github.com/ethereum/eth-go/ethutil" |  | ||||||
| 	"io" | 	"io" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path" | 	"path" | ||||||
|  | 
 | ||||||
|  | 	"github.com/ethereum/eth-go" | ||||||
|  | 	"github.com/ethereum/eth-go/ethlog" | ||||||
|  | 	"github.com/ethereum/eth-go/ethutil" | ||||||
|  | 	"github.com/ethereum/go-ethereum/javascript" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var logger = ethlog.NewLogger("REPL") | var logger = ethlog.NewLogger("REPL") | ||||||
| @ -19,7 +21,7 @@ type Repl interface { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type JSRepl struct { | type JSRepl struct { | ||||||
| 	re *JSRE | 	re *javascript.JSRE | ||||||
| 
 | 
 | ||||||
| 	prompt string | 	prompt string | ||||||
| 
 | 
 | ||||||
| @ -34,7 +36,7 @@ func NewJSRepl(ethereum *eth.Ethereum) *JSRepl { | |||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return &JSRepl{re: NewJSRE(ethereum), prompt: "> ", history: hist} | 	return &JSRepl{re: javascript.NewJSRE(ethereum), prompt: "> ", history: hist} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (self *JSRepl) Start() { | func (self *JSRepl) Start() { | ||||||
|  | |||||||
| @ -115,8 +115,8 @@ L: | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (self *JSRepl) PrintValue(v interface{}) { | func (self *JSRepl) PrintValue(v interface{}) { | ||||||
| 	method, _ := self.re.vm.Get("prettyPrint") | 	method, _ := self.re.Vm.Get("prettyPrint") | ||||||
| 	v, err := self.re.vm.ToValue(v) | 	v, err := self.re.Vm.ToValue(v) | ||||||
| 	if err == nil { | 	if err == nil { | ||||||
| 		method.Call(method, v) | 		method.Call(method, v) | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -1,9 +1,10 @@ | |||||||
| package utils | package utils | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"math/big" | ||||||
|  | 
 | ||||||
| 	"github.com/ethereum/eth-go/ethchain" | 	"github.com/ethereum/eth-go/ethchain" | ||||||
| 	"github.com/ethereum/eth-go/ethstate" | 	"github.com/ethereum/eth-go/ethstate" | ||||||
| 	"math/big" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type VMEnv struct { | type VMEnv struct { | ||||||
| @ -29,5 +30,6 @@ func (self *VMEnv) PrevHash() []byte       { return self.block.PrevHash } | |||||||
| func (self *VMEnv) Coinbase() []byte       { return self.block.Coinbase } | func (self *VMEnv) Coinbase() []byte       { return self.block.Coinbase } | ||||||
| func (self *VMEnv) Time() int64            { return self.block.Time } | func (self *VMEnv) Time() int64            { return self.block.Time } | ||||||
| func (self *VMEnv) Difficulty() *big.Int   { return self.block.Difficulty } | func (self *VMEnv) Difficulty() *big.Int   { return self.block.Difficulty } | ||||||
|  | func (self *VMEnv) BlockHash() []byte      { return self.block.Hash() } | ||||||
| func (self *VMEnv) Value() *big.Int        { return self.value } | func (self *VMEnv) Value() *big.Int        { return self.value } | ||||||
| func (self *VMEnv) State() *ethstate.State { return self.state } | func (self *VMEnv) State() *ethstate.State { return self.state } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user