Add translations and fixes to 1.9 master
[electrum-nvc.git] / gui / gui_classic / transaction_dialog.py
index ae18242..ba168d6 100644 (file)
@@ -34,7 +34,7 @@ from PyQt4.QtCore import *
 import PyQt4.QtCore as QtCore
 
 from electrum import transaction
-
+from qt_util import MyTreeWidget
 
 class TxDialog(QDialog):
 
@@ -46,13 +46,13 @@ class TxDialog(QDialog):
             
         QDialog.__init__(self)
         self.setMinimumWidth(600)
-        self.setWindowTitle(_('Transaction'))
+        self.setWindowTitle(_("Transaction"))
         self.setModal(1)
 
         vbox = QVBoxLayout()
         self.setLayout(vbox)
 
-        vbox.addWidget(QLabel("Transaction ID:"))
+        vbox.addWidget(QLabel(_("Transaction ID:")))
         self.tx_hash_e  = QLineEdit()
         self.tx_hash_e.setReadOnly(True)
         vbox.addWidget(self.tx_hash_e)
@@ -66,8 +66,9 @@ class TxDialog(QDialog):
         self.fee_label = QLabel()
         vbox.addWidget(self.fee_label)
 
-        self.io = self.io_widget(tx)
-        vbox.addWidget( self.io )
+        self.add_io(vbox)
+
+        vbox.addStretch(1)
 
         buttons = QHBoxLayout()
         vbox.addLayout( buttons )
@@ -99,7 +100,7 @@ class TxDialog(QDialog):
     def sign(self):
         tx_dict = self.tx.as_dict()
         input_info = json.loads(tx_dict["input_info"])
-        self.parent.sign_raw_transaction(self.tx, input_info, self)
+        self.parent.sign_raw_transaction(self.tx, input_info)
         self.update()
 
 
@@ -111,13 +112,14 @@ class TxDialog(QDialog):
             self.show_message(_("Transaction saved successfully"))
 
 
+
     def update(self):
         tx_hash = self.tx.hash()
 
         is_relevant, is_mine, v, fee = self.wallet.get_tx_value(self.tx)
 
         if self.tx.is_complete:
-            status = "Status: Signed"
+            status = _("Status: Signed")
             self.sign_button.hide()
 
             if tx_hash in self.wallet.transactions.keys():
@@ -126,14 +128,14 @@ class TxDialog(QDialog):
                     time_str = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
                 else:
                     time_str = 'pending'
-                status = "Status: %d confirmations"%conf
+                status = _("Status: %d confirmations")%conf
                 self.broadcast_button.hide()
             else:
                 time_str = None
                 conf = 0
                 self.broadcast_button.show()
         else:
-            status = "Status: Unsigned"
+            status = _("Status: Unsigned")
             time_str = None
             self.sign_button.show()
             self.broadcast_button.hide()
@@ -142,7 +144,7 @@ class TxDialog(QDialog):
         self.status_label.setText(status)
 
         if time_str is not None:
-            self.date_label.setText("Date: %s"%time_str)
+            self.date_label.setText(_("Date: %s")%time_str)
             self.date_label.show()
         else:
             self.date_label.hide()
@@ -150,67 +152,56 @@ class TxDialog(QDialog):
         if is_relevant:    
             if is_mine:
                 if fee is not None: 
-                    self.amount_label.setText("Amount sent: %s"% self.parent.format_amount(v-fee))
-                    self.fee_label.setText("Transaction fee: %s"% self.parent.format_amount(fee))
+                    self.amount_label.setText(_("Amount sent:")+' %s'% self.parent.format_amount(v-fee) + ' ' + self.parent.base_unit())
+                    self.fee_label.setText(_("Transaction fee:")+' %s'% self.parent.format_amount(fee) + ' ' + self.parent.base_unit())
                 else:
-                    self.amount_label.setText("Amount sent: %s"% self.parent.format_amount(v))
-                    self.fee_label.setText("Transaction fee: unknown")
+                    self.amount_label.setText(_("Amount sent:")+' %s'% self.parent.format_amount(v) + ' ' + self.parent.base_unit())
+                    self.fee_label.setText(_("Transaction fee: unknown"))
             else:
-                self.amount_label.setText("Amount received: %s"% self.parent.format_amount(v))
+                self.amount_label.setText(_("Amount received:")+' %s'% self.parent.format_amount(v) + ' ' + self.parent.base_unit())
         else:
-            self.amount_label.setText("Transaction unrelated to your wallet")
+            self.amount_label.setText(_("Transaction unrelated to your wallet"))
 
 
+    def exec_menu(self, position,l):
+        item = l.itemAt(position)
+        if not item: return
+        addr = unicode(item.text(0))
+        menu = QMenu()
+        menu.addAction(_("Copy to clipboard"), lambda: self.parent.app.clipboard().setText(addr))
+        menu.exec_(l.viewport().mapToGlobal(position))
 
-    def io_widget(self, tx):
-        tabs = QTabWidget(self)
 
-        tab1 = QWidget()
-        grid_ui = QGridLayout(tab1)
-        grid_ui.setColumnStretch(0,1)
-        tabs.addTab(tab1, _('Outputs') )
+    def add_io(self, vbox):
 
-        tree_widget = QTreeWidget(self)
-        tree_widget.setColumnCount(2)
-        tree_widget.setHeaderLabels( [_('Address'), _('Amount')] )
-        tree_widget.setColumnWidth(0, 300)
-        tree_widget.setColumnWidth(1, 50)
+        vbox.addWidget(QLabel(_("Inputs")))
+        lines = map(lambda x: x.get('address') , self.tx.inputs )
 
-        for address, value in tx.outputs:
-            item = QTreeWidgetItem( [address, "%s" % ( self.parent.format_amount(value))] )
-            tree_widget.addTopLevelItem(item)
+        i_text = QTextEdit('\n'.join(lines))
+        i_text.setReadOnly(True)
+        i_text.setMaximumHeight(100)
+        vbox.addWidget(i_text)
 
-        tree_widget.setMaximumHeight(100)
+        vbox.addWidget(QLabel(_("Outputs")))
+        lines = map(lambda x: x[0] + u'\t\t' + self.parent.format_amount(x[1]), self.tx.outputs)
 
-        grid_ui.addWidget(tree_widget)
+        o_text = QTextEdit()
+        o_text.setText('\n'.join(lines))
+        o_text.setReadOnly(True)
+        o_text.setMaximumHeight(100)
+        vbox.addWidget(o_text)
 
-        tab2 = QWidget()
-        grid_ui = QGridLayout(tab2)
-        grid_ui.setColumnStretch(0,1)
-        tabs.addTab(tab2, _('Inputs') )
         
-        tree_widget = QTreeWidget(self)
-        tree_widget.setColumnCount(2)
-        tree_widget.setHeaderLabels( [ _('Address'), _('Previous output')] )
-
-        for input_line in tx.inputs:
-            item = QTreeWidgetItem( [ str(input_line["address"]), str(input_line.get("prevout_hash"))] )
-            tree_widget.addTopLevelItem(item)
-
-        tree_widget.setMaximumHeight(100)
-
-        grid_ui.addWidget(tree_widget)
-        return tabs
 
 
     def broadcast(self):
         result, result_message = self.wallet.sendtx( self.tx )
         if result:
-            self.show_message("Transaction successfully sent: %s" % (result_message))
+            self.show_message(_("Transaction successfully sent:")+' %s' % (result_message))
             if dialog:
                 dialog.done(0)
         else:
-            self.show_message("There was a problem sending your transaction:\n %s" % (result_message))
+            self.show_message(_("There was a problem sending your transaction:") + '\n %s' % (result_message))
 
     def show_message(self, msg):
         QMessageBox.information(self, _('Message'), msg, _('OK'))