Initial novacoin support
[electrum-nvc.git] / gui / qt / util.py
index e6c13a8..c61c022 100644 (file)
@@ -1,9 +1,10 @@
-from electrum.i18n import _
+from electrum_nvc.i18n import _
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 import os.path
 import time
-
+import traceback
+import sys
 import threading
 
 class WaitingDialog(QThread):
@@ -21,13 +22,25 @@ class WaitingDialog(QThread):
         self.d.show()
 
     def run(self):
-        self.result = self.run_task()
+        self.error = None
+        try:
+            self.result = self.run_task()
+        except Exception as e:
+            traceback.print_exc(file=sys.stdout)
+            self.error = str(e)
         self.d.emit(SIGNAL('done'))
 
     def close(self):
         self.d.accept()
+        if self.error:
+            QMessageBox.warning(self.parent, _('Error'), self.error, _('OK'))
+            return
+
         if self.on_complete:
-            self.on_complete(*self.result)
+            if type(self.result) is tuple:
+                self.on_complete(*self.result)
+            else:
+                self.on_complete(self.result)
 
 
 
@@ -97,6 +110,22 @@ def ok_cancel_buttons(dialog, ok_label=_("OK") ):
     hbox, b = ok_cancel_buttons2(dialog, ok_label)
     return hbox
 
+def line_dialog(parent, title, label, ok_label, default=None):
+    dialog = QDialog(parent)
+    dialog.setMinimumWidth(500)
+    dialog.setWindowTitle(title)
+    dialog.setModal(1)
+    l = QVBoxLayout()
+    dialog.setLayout(l)
+    l.addWidget(QLabel(label))
+    txt = QLineEdit()
+    if default:
+        txt.setText(default)
+    l.addWidget(txt)
+    l.addLayout(ok_cancel_buttons(dialog, ok_label))
+    if dialog.exec_():
+        return unicode(txt.text())
+
 def text_dialog(parent, title, label, ok_label, default=None):
     from qrtextedit import QRTextEdit
     dialog = QDialog(parent)