prioritize button to match freeze button in gtk gui
[electrum-nvc.git] / gui / gtk.py
index fb0bb5c..8e10348 100644 (file)
@@ -51,12 +51,12 @@ def numbify(entry, is_int = False):
             s = s[:p] + '.' + s[p:p+8]
         try:
             amount = int( Decimal(s) * 100000000 )
-        except:
+        except Exception:
             amount = None
     else:
         try:
             amount = int( s )
-        except:
+        except Exception:
             amount = None
     entry.set_text(s)
     return amount
@@ -70,7 +70,7 @@ def show_seed_dialog(wallet, password, parent):
         return
     try:
         seed = wallet.get_seed(password)
-    except:
+    except Exception:
         show_message("Incorrect password")
         return
     dialog = gtk.MessageDialog(
@@ -140,7 +140,7 @@ def run_recovery_dialog():
 
     try:
         seed.decode('hex')
-    except:
+    except Exception:
         print_error("Warning: Not hex, trying decode")
         seed = mnemonic.mn_decode( seed.split(' ') )
     if not seed:
@@ -209,7 +209,7 @@ def run_settings_dialog(self):
 
     try:
         fee = int( 100000000 * Decimal(fee) )
-    except:
+    except Exception:
         show_message("error")
         return
     self.wallet.set_fee(fee)
@@ -217,7 +217,7 @@ def run_settings_dialog(self):
     try:
         nz = int( nz )
         if nz>8: nz = 8
-    except:
+    except Exception:
         show_message("error")
         return
 
@@ -359,7 +359,7 @@ def run_network_dialog( network, parent ):
         proxy = network.config.get('proxy')
         auto_connect = network.config.get('auto_cycle')
         network.set_parameters(host, port, protocol, proxy, auto_connect)
-    except:
+    except Exception:
         show_message("error:" + server)
         return False
 
@@ -441,7 +441,7 @@ def change_password_dialog(wallet, parent, icon):
 
     try:
         wallet.get_seed(password)
-    except:
+    except Exception:
         show_message("Incorrect password")
         return
 
@@ -591,7 +591,7 @@ class ElectrumWindow:
                     if re.match('^(|([\w\-\.]+)@)((\w[\w\-]+\.)+[\w\-]+)$', r):
                         try:
                             to_address = self.wallet.get_alias(r, interactive=False)
-                        except:
+                        except Exception:
                             continue
                         if to_address:
                             s = r + ' <' + to_address + '>'
@@ -789,12 +789,12 @@ class ElectrumWindow:
 
         try:
             amount = int( Decimal(amount_entry.get_text()) * 100000000 )
-        except:
+        except Exception:
             self.show_message( "invalid amount")
             return
         try:
             fee = int( Decimal(fee_entry.get_text()) * 100000000 )
-        except:
+        except Exception:
             self.show_message( "invalid fee")
             return
 
@@ -807,7 +807,7 @@ class ElectrumWindow:
 
         try:
             tx = self.wallet.mktx( [(to_address, amount)], password, fee )
-        except BaseException, e:
+        except Exception as e:
             self.show_message(str(e))
             return
 
@@ -946,7 +946,7 @@ class ElectrumWindow:
 
 
     def create_recv_tab(self):
-        self.recv_list = gtk.ListStore(str, str, str, str)
+        self.recv_list = gtk.ListStore(str, str, str, str, str)
         self.add_tab( self.make_address_list(True), 'Receive')
         self.update_receiving_tab()
 
@@ -993,11 +993,16 @@ class ElectrumWindow:
         tvcolumn.add_attribute(cell, 'text', 2)
 
         if is_recv:
-            tvcolumn = gtk.TreeViewColumn('Type')
+            tvcolumn = gtk.TreeViewColumn('Balance')
             treeview.append_column(tvcolumn)
             cell = gtk.CellRendererText()
             tvcolumn.pack_start(cell, True)
             tvcolumn.add_attribute(cell, 'text', 3)
+            tvcolumn = gtk.TreeViewColumn('Type')
+            treeview.append_column(tvcolumn)
+            cell = gtk.CellRendererText()
+            tvcolumn.pack_start(cell, True)
+            tvcolumn.add_attribute(cell, 'text', 4)
 
         scroll = gtk.ScrolledWindow()
         scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
@@ -1060,6 +1065,35 @@ class ElectrumWindow:
         button.show()
         hbox.pack_start(button,False)
 
+        if is_recv:
+            button = gtk.Button("Freeze")
+            def freeze_address(w, treeview, liststore, wallet):
+                path, col = treeview.get_cursor()
+                if path:
+                    address = liststore.get_value( liststore.get_iter(path), 0)
+                    if address in wallet.frozen_addresses:
+                        wallet.unfreeze(address)
+                    else:
+                        wallet.freeze(address)
+                    self.update_receiving_tab()
+            button.connect("clicked", freeze_address, treeview, liststore, self.wallet)
+            button.show()
+            hbox.pack_start(button,False)
+
+            button = gtk.Button("Prioritize")
+            def prioritize_address(w, treeview, liststore, wallet):
+                path, col = treeview.get_cursor()
+                if path:
+                    address = liststore.get_value( liststore.get_iter(path), 0)
+                    if address in wallet.prioritized_addresses:
+                        wallet.unprioritize(address)
+                    else:
+                        wallet.prioritize(address)
+                    self.update_receiving_tab()
+            button.connect("clicked", prioritize_address, treeview, liststore, self.wallet) 
+            button.show()
+            hbox.pack_start(button,False)
+
         if not is_recv:
             button = gtk.Button("Pay to")
             def payto(w, treeview, liststore):
@@ -1113,13 +1147,18 @@ class ElectrumWindow:
         self.recv_list.clear()
         for address in self.wallet.addresses(True):
             Type = "R"
+            c = u = 0
             if self.wallet.is_change(address): Type = "C"
-            if address in self.wallet.imported_keys.keys(): Type = "I"
+            if address in self.wallet.imported_keys.keys():
+                Type = "I"
+            c, u = self.wallet.get_addr_balance(address)
+            if address in self.wallet.frozen_addresses: Type = Type + "F"
+            if address in self.wallet.prioritized_addresses: Type = Type + "P"
             label = self.wallet.labels.get(address)
             h = self.wallet.history.get(address,[])
             n = len(h)
             tx = "0" if n==0 else "%d"%n
-            self.recv_list.append((address, label, tx, Type ))
+            self.recv_list.append((address, label, tx, format_satoshis(c,False,self.num_zeros), Type ))
 
     def update_sending_tab(self):
         # detect addresses that are not mine in history, add them here...
@@ -1143,7 +1182,7 @@ class ElectrumWindow:
             if conf > 0:
                 try:
                     time_str = datetime.datetime.fromtimestamp( timestamp).isoformat(' ')[:-3]
-                except:
+                except Exception:
                     time_str = "------"
                 conf_icon = gtk.STOCK_APPLY
             elif conf == -1: