2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  QtQuick  2.0  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  Ethereum  1.0  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Which ones do we actually need?
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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  QtQuick . Dialogs  1.1  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ApplicationWindow  {  
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    id: wizardRoot 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    width:  500 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    height:  400 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    title:  "Ethereal first run setup" 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Column  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        spacing:  5 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        anchors.leftMargin:  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        anchors.left:  parent . left 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Text  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            visible:  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            text:  "<h2>Ethereal setup</h2>" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Column  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            id: restoreColumn 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            spacing:  5 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Text  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                visible:  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                font.pointSize:  14 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "Restore your Ethereum account" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                id: restoreLabel 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            TextField  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                id: txPrivKey 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                width:  480 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                placeholderText:  "Private key or mnemonic words" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                focus:  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                onTextChanged:  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( this . text . length  ==  64 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        detailLabel . text  =  "Private (hex) key detected." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        actionButton . enabled  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  if ( this . text . split ( " " ) . length  ==  24 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        detailLabel . text  =  "Mnemonic key detected." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        actionButton . enabled  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        detailLabel . text  =  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        actionButton . enabled  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Row  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                spacing:  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                Button  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    id: actionButton 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    text:  "Restore" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    enabled:  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    onClicked:  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        var  success  =  lib . importAndSetPrivKey ( txPrivKey . text ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if ( success ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            importedDetails . visible  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            restoreColumn . visible  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            newKey . visible  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            wizardRoot . height  =  120 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                Text  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    id: detailLabel 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    font.pointSize:  12 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    anchors.topMargin:  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Column  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            id: importedDetails 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            visible:  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Text  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "<b>Your account has been imported. Please close the application and restart it again to let the changes take effect.</b>" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                wrapMode:  Text . WordWrap 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                width:  460 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Column  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            spacing:  5 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            id: newDetailsColumn 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            visible:  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Text  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                font.pointSize:  14 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "Your account details" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Label  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "Address" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            TextField  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                id: addressInput 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                readOnly: true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                width:  480 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Label  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "Private key" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            TextField  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                id: privkeyInput 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                readOnly: true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                width:  480 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Label  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "Mnemonic words" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            TextField  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                id: mnemonicInput 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                readOnly: true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                width:  480 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Label  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "<b>A new account has been created. Please take the time to write down the <i>24 words</i>. You can use those to restore your account at a later date.</b>" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                wrapMode:  Text . WordWrap 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                width:  480 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Label  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                text:  "Please restart the application once you have completed the steps above." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                wrapMode:  Text . WordWrap 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                width:  480 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Button  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        anchors.right:  parent . right 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        anchors.bottom:  parent . bottom 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        anchors.rightMargin:  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        anchors.bottomMargin:  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        id: newKey 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        text:  "I don't have an account yet" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onClicked:  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  res  =  lib . createAndSetPrivKey ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mnemonicInput . text  =  res [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            addressInput . text  =  res [ 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            privkeyInput . text  =  res [ 2 ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // Hide restore
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restoreColumn . visible  =  false 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-12 13:56:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // Show new details
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            newDetailsColumn . visible  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            newKey . visible  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-10 14:53:12 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}