Merge branch '0.5.x' into 0.6.0.x
authorLuke Dashjr <luke-jr+git@utopios.org>
Wed, 4 Apr 2012 19:43:29 +0000 (15:43 -0400)
committerLuke Dashjr <luke-jr+git@utopios.org>
Wed, 4 Apr 2012 19:43:29 +0000 (15:43 -0400)
Conflicts:
src/bitcoinrpc.cpp

contrib/gitian-downloader/linux-download-config
contrib/gitian-downloader/luke-jr-key.pgp [new file with mode: 0644]
contrib/gitian-downloader/sipa-key.pgp
contrib/gitian-downloader/win32-download-config
src/bitcoinrpc.cpp
src/noui.h
src/qt/bitcoin.cpp
src/qt/bitcoingui.cpp
src/qt/bitcoingui.h
src/qt/transactiontablemodel.cpp
src/qtui.h

index 36f5f68..88e48e2 100644 (file)
@@ -15,9 +15,13 @@ signers:
     weight: 40
     name: Devrandom
     key: devrandom
+  E463A93F5F3117EEDE6C7316BD02942421F4889F:
+    weight: 40
+    name: Luke-Jr
+    key: luke-jr
   D762373D24904A3E42F33B08B9A408E71DAAC974:
     weight: 40
-    name: Sipa
+    name: "Pieter Wuille"
     key: sipa
   77E72E69DA7EE0A148C06B21B34821D4944DE5F7:
     weight: 40
diff --git a/contrib/gitian-downloader/luke-jr-key.pgp b/contrib/gitian-downloader/luke-jr-key.pgp
new file mode 100644 (file)
index 0000000..c40917d
Binary files /dev/null and b/contrib/gitian-downloader/luke-jr-key.pgp differ
index 086c9eb..a52a5de 100644 (file)
Binary files a/contrib/gitian-downloader/sipa-key.pgp and b/contrib/gitian-downloader/sipa-key.pgp differ
index b1e1c73..595626f 100644 (file)
@@ -15,9 +15,13 @@ signers:
     weight: 40
     name: Devrandom
     key: devrandom
+  E463A93F5F3117EEDE6C7316BD02942421F4889F:
+    weight: 40
+    name: Luke-Jr
+    key: luke-jr
   D762373D24904A3E42F33B08B9A408E71DAAC974:
     weight: 40
-    name: Sipa
+    name: "Pieter Wuille"
     key: sipa
   77E72E69DA7EE0A148C06B21B34821D4944DE5F7:
     weight: 40
index d8b9782..a246677 100644 (file)
@@ -2371,7 +2371,7 @@ void ThreadRPCServer2(void* parg)
             strWhatAmI = strprintf(_("To use the %s option"), "\"-server\"");
         else if (mapArgs.count("-daemon"))
             strWhatAmI = strprintf(_("To use the %s option"), "\"-daemon\"");
-        ::error(
+        ThreadSafeMessageBox(strprintf(
             _("%s, you must set a rpcpassword in the configuration file:\n %s\n"
               "It is recommended you use the following random password:\n"
               "rpcuser=bitcoinrpc\n"
@@ -2380,7 +2380,8 @@ void ThreadRPCServer2(void* parg)
               "If the file does not exist, create it with owner-readable-only file permissions.\n"),
                 strWhatAmI.c_str(),
                 GetConfigFile().c_str(),
-                EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str());
+                EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()),
+            _("Error"), wxOK | wxMODAL);
 #ifndef QT_GUI
         CreateThread(Shutdown, NULL);
 #endif
index 458fc64..8888db6 100644 (file)
@@ -36,6 +36,8 @@ typedef void wxWindow;
 #define wxHELP                  0x00008000
 #define wxMORE                  0x00010000
 #define wxSETUP                 0x00020000
+// Force blocking, modal message box dialog (not just notification)
+#define wxMODAL                 0x00040000
 
 inline int MyMessageBox(const std::string& message, const std::string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)
 {
index 68f750d..3450bb4 100644 (file)
@@ -36,12 +36,19 @@ int MyMessageBox(const std::string& message, const std::string& caption, int sty
 
 int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y)
 {
+    bool modal = style & wxMODAL;
+
+    if (modal)
+        while (!guiref)
+            sleep(1);
+
     // Message from network thread
     if(guiref)
     {
         QMetaObject::invokeMethod(guiref, "error", Qt::QueuedConnection,
                                    Q_ARG(QString, QString::fromStdString(caption)),
-                                   Q_ARG(QString, QString::fromStdString(message)));
+                                   Q_ARG(QString, QString::fromStdString(message)),
+                                   Q_ARG(bool, modal));
     }
     else
     {
index 7bce128..d735c14 100644 (file)
@@ -551,10 +551,15 @@ void BitcoinGUI::refreshStatusBar()
     setNumBlocks(clientModel->getNumBlocks());
 }
 
-void BitcoinGUI::error(const QString &title, const QString &message)
+void BitcoinGUI::error(const QString &title, const QString &message, bool modal)
 {
     // Report errors from network/worker thread
-    notificator->notify(Notificator::Critical, title, message);
+    if (modal)
+    {
+        QMessageBox::critical(this, title, message, QMessageBox::Ok, QMessageBox::Ok);
+    } else {
+        notificator->notify(Notificator::Critical, title, message);
+    }
 }
 
 void BitcoinGUI::changeEvent(QEvent *e)
index dbc3264..d221f6b 100644 (file)
@@ -117,7 +117,7 @@ public slots:
     void refreshStatusBar();
 
     /** Notify the user of an error in the network or transaction handling code. */
-    void error(const QString &title, const QString &message);
+    void error(const QString &title, const QString &message, bool modal = false);
     /** Asks the user whether to pay the transaction fee or to cancel the transaction.
        It is currently not possible to pass a return value to another thread through
        BlockingQueuedConnection, so an indirected pointer is used.
index b863546..480d4ac 100644 (file)
@@ -288,20 +288,19 @@ QString TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) cons
     }
     if(wtx->type == TransactionRecord::Generated)
     {
-        status += "\n";
         switch(wtx->status.maturity)
         {
         case TransactionStatus::Immature:
-            status += tr("Mined balance will be available in %n more blocks", "",
+            status += "\n" + tr("Mined balance will be available in %n more blocks", "",
                            wtx->status.matures_in);
             break;
         case TransactionStatus::Mature:
             break;
         case TransactionStatus::MaturesWarning:
-            status += tr("This block was not received by any other nodes and will probably not be accepted!");
+            status += "\n" + tr("This block was not received by any other nodes and will probably not be accepted!");
             break;
         case TransactionStatus::NotAccepted:
-            status += tr("Generated but not accepted");
+            status += "\n" + tr("Generated but not accepted");
             break;
         }
     }
index 9791ba5..7987370 100644 (file)
@@ -35,6 +35,8 @@ typedef void wxWindow;
 #define wxHELP                  0x00008000
 #define wxMORE                  0x00010000
 #define wxSETUP                 0x00020000
+// Force blocking, modal message box dialog (not just notification)
+#define wxMODAL                 0x00040000
 
 extern int MyMessageBox(const std::string& message, const std::string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1);
 #define wxMessageBox  MyMessageBox