new methods: init_menubar and load_wallet
authorthomasv <thomasv@gitorious>
Wed, 15 May 2013 08:53:49 +0000 (10:53 +0200)
committerMaran <maran.hidskes@gmail.com>
Sat, 1 Jun 2013 09:59:54 +0000 (11:59 +0200)
gui/gui_classic.py
lib/wallet.py

index e648b1f..efbf40b 100644 (file)
@@ -277,12 +277,46 @@ class ElectrumWindow(QMainWindow):
         if not self.wallet.seed: title += ' [%s]' % (_('seedless'))
         self.setWindowTitle( title )
 
+        self.init_menubar()
+
+        QShortcut(QKeySequence("Ctrl+W"), self, self.close)
+        QShortcut(QKeySequence("Ctrl+Q"), self, self.close)
+        QShortcut(QKeySequence("Ctrl+PgUp"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() - 1 )%tabs.count() ))
+        QShortcut(QKeySequence("Ctrl+PgDown"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() + 1 )%tabs.count() ))
+        
+        self.connect(self, QtCore.SIGNAL('update_status'), self.update_status)
+        self.connect(self, QtCore.SIGNAL('banner_signal'), lambda: self.console.showMessage(self.wallet.interface.banner) )
+        self.history_list.setFocus(True)
+        
+        self.exchanger = exchange_rate.Exchanger(self)
+        self.connect(self, SIGNAL("refresh_balance()"), self.update_wallet)
+
+        # dark magic fix by flatfly; https://bitcointalk.org/index.php?topic=73651.msg959913#msg959913
+        if platform.system() == 'Windows':
+            n = 3 if self.wallet.seed else 2
+            tabs.setCurrentIndex (n)
+            tabs.setCurrentIndex (0)
+
+        # fix fee
+        if self.wallet.fee < 50000:
+            self.wallet.set_fee(50000)
+            self.show_message("Note: Your default fee was raised to 0.0005 BTC/kilobyte")
+
+        # set initial message
+        self.console.showMessage(self.wallet.interface.banner)
+
+        # plugins that need to change the GUI do it here
+        self.run_hook('init_gui')
+
+
+
+    def init_menubar(self):
         menubar = QMenuBar()
 
         electrum_menu = menubar.addMenu(_("&File"))
         preferences_name = _("Preferences")
         if sys.platform == 'darwin':
-          preferences_name = _("Electrum preferences") # Settings / Preferences are all reserved keywords in OSX using this as work around
+            preferences_name = _("Electrum preferences") # Settings / Preferences are all reserved keywords in OSX using this as work around
 
         preferences_menu = electrum_menu.addAction(preferences_name)
         electrum_menu.addSeparator()
@@ -323,35 +357,31 @@ class ElectrumWindow(QMainWindow):
         self.setMenuBar(menubar)
 
 
-        QShortcut(QKeySequence("Ctrl+W"), self, self.close)
-        QShortcut(QKeySequence("Ctrl+Q"), self, self.close)
-        QShortcut(QKeySequence("Ctrl+PgUp"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() - 1 )%tabs.count() ))
-        QShortcut(QKeySequence("Ctrl+PgDown"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() + 1 )%tabs.count() ))
-        
-        self.connect(self, QtCore.SIGNAL('update_status'), self.update_status)
-        self.connect(self, QtCore.SIGNAL('banner_signal'), lambda: self.console.showMessage(self.wallet.interface.banner) )
-        self.history_list.setFocus(True)
-        
-        self.exchanger = exchange_rate.Exchanger(self)
-        self.connect(self, SIGNAL("refresh_balance()"), self.update_wallet)
 
-        # dark magic fix by flatfly; https://bitcointalk.org/index.php?topic=73651.msg959913#msg959913
-        if platform.system() == 'Windows':
-            n = 3 if self.wallet.seed else 2
-            tabs.setCurrentIndex (n)
-            tabs.setCurrentIndex (0)
+    def load_wallet(self, filename):
+        import electrum
 
-        # fix fee
-        if self.wallet.fee < 50000:
-            self.wallet.set_fee(50000)
-            self.show_message("Note: Your default fee was raised to 0.0005 BTC/kilobyte")
+        config = electrum.SimpleConfig({'wallet_path': filename})
+        if not config.wallet_file_exists:
+            self.show_message("file not found "+ filename)
+            return
 
-        # set initial message
-        self.console.showMessage(self.wallet.interface.banner)
+        #self.wallet.verifier.stop()
+        interface = self.wallet.interface
+        verifier = self.wallet.verifier
+        self.wallet.synchronizer.stop()
+        
+        self.config = config
+        self.wallet = electrum.Wallet(self.config)
+        self.wallet.interface = interface
+        self.wallet.verifier = verifier
 
-        # plugins that need to change the GUI do it here
-        self.run_hook('init_gui')
+        synchronizer = electrum.WalletSynchronizer(self.wallet, self.config)
+        synchronizer.start()
+
+        self.update_wallet()
 
+        
 
     # plugins
     def init_plugins(self):
index aaf8656..ce4b76b 100644 (file)
@@ -1037,6 +1037,7 @@ class WalletSynchronizer(threading.Thread):
         threading.Thread.__init__(self)
         self.daemon = True
         self.wallet = wallet
+        wallet.synchronizer = self
         self.interface = self.wallet.interface
         self.interface.register_channel('synchronizer')
         self.wallet.interface.register_callback('connected', lambda: self.wallet.set_up_to_date(False))