UI tweaks, use BindListenPort to detect instance already running, setsockopt(SO_REUSE...
authors_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
Sat, 7 Nov 2009 05:05:03 +0000 (05:05 +0000)
committers_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
Sat, 7 Nov 2009 05:05:03 +0000 (05:05 +0000)
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@35 1a98c847-1fd6-4fd8-948a-caf3550aa51b

db.cpp
main.cpp
main.h
net.cpp
net.h
ui.cpp
ui.h
uibase.cpp
uibase.h
uiproject.fbp
util.cpp

diff --git a/db.cpp b/db.cpp
index 1235592..61d6025 100644 (file)
--- a/db.cpp
+++ b/db.cpp
@@ -139,7 +139,7 @@ void DBFlush(bool fShutdown)
 {\r
     // Flush log data to the actual data file\r
     //  on all files that are not in use\r
-    printf("DBFlush(%s)\n", fShutdown ? "true" : "false");\r
+    printf("DBFlush(%s)%s\n", fShutdown ? "true" : "false", fDbEnvInit ? "" : " db not started");\r
     if (!fDbEnvInit)\r
         return;\r
     CRITICAL_BLOCK(cs_db)\r
index e4f1deb..fe213c0 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -42,8 +42,6 @@ map<uint160, vector<unsigned char> > mapPubKeys;
 CCriticalSection cs_mapKeys;\r
 CKey keyUser;\r
 \r
-int nDropMessagesTest = 0;\r
-\r
 // Settings\r
 int fGenerateBitcoins = false;\r
 int64 nTransactionFee = 0;\r
@@ -1721,9 +1719,9 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
     static map<unsigned int, vector<unsigned char> > mapReuseKey;\r
     RandAddSeedPerfmon();\r
     printf("received: %s (%d bytes)\n", strCommand.c_str(), vRecv.size());\r
-    if (nDropMessagesTest > 0 && GetRand(nDropMessagesTest) == 0)\r
+    if (mapArgs.count("-dropmessagestest") && GetRand(atoi(mapArgs["-dropmessagestest"])) == 0)\r
     {\r
-        printf("dropmessages DROPPING RECV MESSAGE\n");\r
+        printf("dropmessagestest DROPPING RECV MESSAGE\n");\r
         return true;\r
     }\r
 \r
@@ -2315,6 +2313,8 @@ void BitcoinMiner()
             Sleep(1000);\r
             if (fShutdown)\r
                 return;\r
+            if (!fGenerateBitcoins)\r
+                return;\r
         }\r
 \r
         unsigned int nTransactionsUpdatedLast = nTransactionsUpdated;\r
diff --git a/main.h b/main.h
index 16b8c6a..853fdfa 100644 (file)
--- a/main.h
+++ b/main.h
@@ -34,7 +34,6 @@ extern int nBestHeight;
 extern uint256 hashBestChain;\r
 extern CBlockIndex* pindexBest;\r
 extern unsigned int nTransactionsUpdated;\r
-extern int nDropMessagesTest;\r
 \r
 // Settings\r
 extern int fGenerateBitcoins;\r
diff --git a/net.cpp b/net.cpp
index 44a75a1..b4df35c 100644 (file)
--- a/net.cpp
+++ b/net.cpp
@@ -511,11 +511,6 @@ void ThreadSocketHandler(void* parg)
         PrintException(NULL, "ThreadSocketHandler()");\r
     }\r
 \r
-    foreach(CNode* pnode, vNodes)\r
-        closesocket(pnode->hSocket);\r
-    if (closesocket(hListenSocket) == SOCKET_ERROR)\r
-        printf("closesocket(hListenSocket) failed with error %d\n", WSAGetLastError());\r
-\r
     printf("ThreadSocketHandler exiting\n");\r
 }\r
 \r
@@ -989,15 +984,13 @@ void ThreadMessageHandler2(void* parg)
 \r
 \r
 \r
-\r
-bool StartNode(string& strError)\r
+bool BindListenPort(string& strError)\r
 {\r
-    if (pnodeLocalHost == NULL)\r
-        pnodeLocalHost = new CNode(INVALID_SOCKET, CAddress("127.0.0.1", nLocalServices));\r
     strError = "";\r
+    int nOne = 1;\r
 \r
 #ifdef __WXMSW__\r
-    // Sockets startup\r
+    // Initialize Windows Sockets\r
     WSADATA wsadata;\r
     int ret = WSAStartup(MAKEWORD(2,2), &wsadata);\r
     if (ret != NO_ERROR)\r
@@ -1008,33 +1001,6 @@ bool StartNode(string& strError)
     }\r
 #endif\r
 \r
-    // Get local host ip\r
-    char pszHostName[255];\r
-    if (gethostname(pszHostName, sizeof(pszHostName)) == SOCKET_ERROR)\r
-    {\r
-        strError = strprintf("Error: Unable to get IP address of this computer (gethostname returned error %d)", WSAGetLastError());\r
-        printf("%s\n", strError.c_str());\r
-        return false;\r
-    }\r
-    struct hostent* phostent = gethostbyname(pszHostName);\r
-    if (!phostent)\r
-    {\r
-        strError = strprintf("Error: Unable to get IP address of this computer (gethostbyname returned error %d)", WSAGetLastError());\r
-        printf("%s\n", strError.c_str());\r
-        return false;\r
-    }\r
-\r
-    // Take the first IP that isn't loopback 127.x.x.x\r
-    for (int i = 0; phostent->h_addr_list[i] != NULL; i++)\r
-        printf("host ip %d: %s\n", i, CAddress(*(unsigned int*)phostent->h_addr_list[i]).ToStringIP().c_str());\r
-    for (int i = 0; phostent->h_addr_list[i] != NULL; i++)\r
-    {\r
-        addrLocalHost = CAddress(*(unsigned int*)phostent->h_addr_list[i], DEFAULT_PORT, nLocalServices);\r
-        if (addrLocalHost.IsValid() && addrLocalHost.GetByte(3) != 127)\r
-            break;\r
-    }\r
-    printf("addrLocalHost = %s\n", addrLocalHost.ToString().c_str());\r
-\r
     // Create socket for listening for incoming connections\r
     hListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);\r
     if (hListenSocket == INVALID_SOCKET)\r
@@ -1043,15 +1009,21 @@ bool StartNode(string& strError)
         printf("%s\n", strError.c_str());\r
         return false;\r
     }\r
+\r
 #if defined(__BSD__) || defined(__WXOSX__)\r
-    int set = 1;\r
-    setsockopt(hSocket, SOL_SOCKET, SO_NOSIGPIPE, (void*)&set, sizeof(int));\r
+    // Different way of disabling SIGPIPE on BSD\r
+    setsockopt(hListenSocket, SOL_SOCKET, SO_NOSIGPIPE, (void*)&nOne, sizeof(int));\r
+#endif\r
+\r
+#ifndef __WXMSW__\r
+    // Allow binding if the port is still in TIME_WAIT state after\r
+    // the program was closed and restarted.  Not an issue on windows.\r
+    setsockopt(hListenSocket, SOL_SOCKET, SO_REUSEADDR, (void*)&nOne, sizeof(int));\r
 #endif\r
 \r
-    // Set to nonblocking, incoming connections will also inherit this\r
 #ifdef __WXMSW__\r
-    u_long nOne = 1;\r
-    if (ioctlsocket(hListenSocket, FIONBIO, &nOne) == SOCKET_ERROR)\r
+    // Set to nonblocking, incoming connections will also inherit this\r
+    if (ioctlsocket(hListenSocket, FIONBIO, (u_long*)&nOne) == SOCKET_ERROR)\r
 #else\r
     if (fcntl(hListenSocket, F_SETFL, O_NONBLOCK) == SOCKET_ERROR)\r
 #endif\r
@@ -1072,7 +1044,7 @@ bool StartNode(string& strError)
     {\r
         int nErr = WSAGetLastError();\r
         if (nErr == WSAEADDRINUSE)\r
-            strError = strprintf("Error: Unable to bind to port %d on this computer. The program is probably already running.", ntohs(sockaddr.sin_port));\r
+            strError = strprintf("Unable to bind to port %d on this computer.  Bitcoin may be running already.", ntohs(sockaddr.sin_port));\r
         else\r
             strError = strprintf("Error: Unable to bind to port %d on this computer (bind returned error %d)", ntohs(sockaddr.sin_port), nErr);\r
         printf("%s\n", strError.c_str());\r
@@ -1088,6 +1060,42 @@ bool StartNode(string& strError)
         return false;\r
     }\r
 \r
+    return true;\r
+}\r
+\r
+bool StartNode(string& strError)\r
+{\r
+    strError = "";\r
+    if (pnodeLocalHost == NULL)\r
+        pnodeLocalHost = new CNode(INVALID_SOCKET, CAddress("127.0.0.1", nLocalServices));\r
+\r
+    // Get local host ip\r
+    char pszHostName[255];\r
+    if (gethostname(pszHostName, sizeof(pszHostName)) == SOCKET_ERROR)\r
+    {\r
+        strError = strprintf("Error: Unable to get IP address of this computer (gethostname returned error %d)", WSAGetLastError());\r
+        printf("%s\n", strError.c_str());\r
+        return false;\r
+    }\r
+    struct hostent* phostent = gethostbyname(pszHostName);\r
+    if (!phostent)\r
+    {\r
+        strError = strprintf("Error: Unable to get IP address of this computer (gethostbyname returned error %d)", WSAGetLastError());\r
+        printf("%s\n", strError.c_str());\r
+        return false;\r
+    }\r
+\r
+    // Take the first IP that isn't loopback 127.x.x.x\r
+    for (int i = 0; phostent->h_addr_list[i] != NULL; i++)\r
+        printf("host ip %d: %s\n", i, CAddress(*(unsigned int*)phostent->h_addr_list[i]).ToStringIP().c_str());\r
+    for (int i = 0; phostent->h_addr_list[i] != NULL; i++)\r
+    {\r
+        addrLocalHost = CAddress(*(unsigned int*)phostent->h_addr_list[i], DEFAULT_PORT, nLocalServices);\r
+        if (addrLocalHost.IsValid() && addrLocalHost.GetByte(3) != 127)\r
+            break;\r
+    }\r
+    printf("addrLocalHost = %s\n", addrLocalHost.ToString().c_str());\r
+\r
     // Get our external IP address for incoming connections\r
     if (fUseProxy)\r
     {\r
@@ -1158,9 +1166,5 @@ bool StopNode()
         Sleep(20);\r
     Sleep(50);\r
 \r
-    // Sockets shutdown\r
-#ifdef __WXMSW__\r
-    WSACleanup();\r
-#endif\r
     return true;\r
 }\r
diff --git a/net.h b/net.h
index 024e733..7b83d46 100644 (file)
--- a/net.h
+++ b/net.h
@@ -28,6 +28,7 @@ CNode* FindNode(unsigned int ip);
 CNode* ConnectNode(CAddress addrConnect, int64 nTimeout=0);\r
 void AbandonRequests(void (*fn)(void*, CDataStream&), void* param1);\r
 bool AnySubscribed(unsigned int nChannel);\r
+bool BindListenPort(string& strError=REF(string()));\r
 bool StartNode(string& strError=REF(string()));\r
 bool StopNode();\r
 \r
@@ -456,6 +457,8 @@ extern CNode* pnodeLocalHost;
 extern uint64 nLocalHostNonce;\r
 extern bool fShutdown;\r
 extern array<int, 10> vnThreadsRunning;\r
+extern SOCKET hListenSocket;\r
+\r
 extern vector<CNode*> vNodes;\r
 extern CCriticalSection cs_vNodes;\r
 extern map<vector<unsigned char>, CAddress> mapAddresses;\r
@@ -647,8 +650,7 @@ public:
 \r
     void EndMessage()\r
     {\r
-        extern int nDropMessagesTest;\r
-        if (nDropMessagesTest > 0 && GetRand(nDropMessagesTest) == 0)\r
+        if (mapArgs.count("-dropmessagestest") && GetRand(atoi(mapArgs["-dropmessagestest"])) == 0)\r
         {\r
             printf("dropmessages DROPPING SEND MESSAGE\n");\r
             AbortMessage();\r
diff --git a/ui.cpp b/ui.cpp
index d330231..bfb0ad2 100644 (file)
--- a/ui.cpp
+++ b/ui.cpp
@@ -181,17 +181,30 @@ void AddToMyProducts(CProduct product)
                 "");\r
 }\r
 \r
-void StringMessageBox(const string& message, const string& caption, int style, wxWindow* parent, int x, int y)\r
+void CalledMessageBox(const string& message, const string& caption, int style, wxWindow* parent, int x, int y, int* pnRet, bool* pfDone)\r
 {\r
-    wxMessageBox(message, caption, style, parent, x, y);\r
+    *pnRet = wxMessageBox(message, caption, style, parent, x, y);\r
+    *pfDone = true;\r
 }\r
 \r
 int ThreadSafeMessageBox(const string& message, const string& caption, int style, wxWindow* parent, int x, int y)\r
 {\r
 #ifdef __WXMSW__\r
-    wxMessageBox(message, caption, style, parent, x, y);\r
+    return wxMessageBox(message, caption, style, parent, x, y);\r
 #else\r
-    UIThreadCall(bind(StringMessageBox, message, caption, style, parent, x, y));\r
+    if (wxThread::IsMain())\r
+    {\r
+        return wxMessageBox(message, caption, style, parent, x, y);\r
+    }\r
+    else\r
+    {\r
+        int nRet = 0;\r
+        bool fDone = false;\r
+        UIThreadCall(bind(CalledMessageBox, message, caption, style, parent, x, y, &nRet, &fDone));\r
+        while (!fDone)\r
+            Sleep(100);\r
+        return nRet;\r
+    }\r
 #endif\r
 }\r
 \r
@@ -303,6 +316,18 @@ CMainFrame::CMainFrame(wxWindow* parent) : CMainFrameBase(parent)
     fOnSetFocusAddress = false;\r
     fRefresh = false;\r
     m_choiceFilter->SetSelection(0);\r
+#ifndef __WXMSW__\r
+    wxFont fontTmp = m_staticTextBalance->GetFont();\r
+    fontTmp.SetPointSize(10);\r
+    fontTmp.SetFamily(wxFONTFAMILY_TELETYPE);\r
+    m_staticTextBalance->SetFont(fontTmp);\r
+    m_staticTextBalance->SetSize(140, 17);\r
+    // ampersand underlines aren't working on gtk\r
+    m_toolBar->ClearTools();\r
+    m_toolBar->AddTool(wxID_BUTTONSEND, "Send Coins", wxBitmap(send20_xpm), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);\r
+    m_toolBar->AddTool(wxID_BUTTONRECEIVE, "Address Book", wxBitmap(addressbook20_xpm), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);\r
+    m_toolBar->Realize();\r
+#endif\r
     m_staticTextBalance->SetLabel(FormatMoney(GetBalance()) + "  ");\r
     m_listCtrl->SetFocus();\r
     SetIcon(wxICON(bitcoin));\r
@@ -998,7 +1023,7 @@ void CMainFrame::OnPaintListCtrl(wxPaintEvent& event)
 }\r
 \r
 \r
-void UIThreadCall(boost::function<void ()> fn)\r
+void UIThreadCall(boost::function0<void> fn)\r
 {\r
     // Call this with a function object created with bind.\r
     // bind needs all parameters to match the function's expected types\r
@@ -1009,14 +1034,14 @@ void UIThreadCall(boost::function<void ()> fn)
     if (pframeMain)\r
     {\r
         wxCommandEvent event(wxEVT_UITHREADCALL);\r
-        event.SetClientData((void*)new boost::function<void ()>(fn));\r
+        event.SetClientData((void*)new boost::function0<void>(fn));\r
         pframeMain->GetEventHandler()->AddPendingEvent(event);\r
     }\r
 }\r
 \r
 void CMainFrame::OnUIThreadCall(wxCommandEvent& event)\r
 {\r
-    boost::function<void ()>* pfn = (boost::function<void ()>*)event.GetClientData();\r
+    boost::function0<void>* pfn = (boost::function0<void>*)event.GetClientData();\r
     (*pfn)();\r
     delete pfn;\r
 }\r
@@ -1630,7 +1655,14 @@ CSendDialog::CSendDialog(wxWindow* parent, const wxString& strAddress) : CSendDi
     m_choiceTransferType->SetSelection(0);\r
     m_bitmapCheckMark->Show(false);\r
     fEnabledPrev = true;\r
+    m_textCtrlAddress->SetFocus();\r
     //// todo: should add a display of your balance for convenience\r
+#ifndef __WXMSW__\r
+    wxFont fontTmp = m_staticTextInstructions->GetFont();\r
+    fontTmp.SetPointSize(fontTmp.GetPointSize()-1);\r
+    m_staticTextInstructions->SetFont(fontTmp);\r
+    SetSize(725, wxDefaultCoord);\r
+#endif\r
 \r
     // Set Icon\r
     wxIcon iconSend;\r
@@ -1801,7 +1833,7 @@ CSendingDialog::CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 n
     fUIDone = false;\r
     fWorkDone = false;\r
 \r
-    SetTitle(strprintf("Sending %s to %s...", FormatMoney(nPrice).c_str(), wtx.mapValue["to"].c_str()));\r
+    SetTitle(strprintf("Sending %s to %s", FormatMoney(nPrice).c_str(), wtx.mapValue["to"].c_str()));\r
     m_textCtrlStatus->SetValue("");\r
 \r
     _beginthread(SendingDialogStartTransfer, 0, this);\r
@@ -3344,16 +3376,19 @@ IMPLEMENT_APP(CMyApp)
 \r
 bool CMyApp::OnInit()\r
 {\r
+    bool fRet = false;\r
     try\r
     {\r
-        return OnInit2();\r
+        fRet = OnInit2();\r
     }\r
     catch (std::exception& e) {\r
         PrintException(&e, "OnInit()");\r
     } catch (...) {\r
         PrintException(NULL, "OnInit()");\r
     }\r
-    return false;\r
+    if (!fRet)\r
+        Shutdown(NULL);\r
+    return fRet;\r
 }\r
 \r
 bool CMyApp::OnInit2()\r
@@ -3374,6 +3409,9 @@ bool CMyApp::OnInit2()
     SetAppName("bitcoin");\r
 #endif\r
 \r
+    //\r
+    // Parameters\r
+    //\r
     ParseParameters(argc, argv);\r
     if (mapArgs.count("-?") || mapArgs.count("--help"))\r
     {\r
@@ -3389,7 +3427,27 @@ bool CMyApp::OnInit2()
             "  -connect=<ip>\t  Connect only to the specified node\n"\r
             "  -?\t\t  This help message\n";\r
         wxMessageBox(strUsage, "Bitcoin", wxOK);\r
-        exit(0);\r
+        return false;\r
+    }\r
+\r
+    if (mapArgs.count("-datadir"))\r
+        strlcpy(pszSetDataDir, mapArgs["-datadir"].c_str(), sizeof(pszSetDataDir));\r
+\r
+    if (mapArgs.count("-debug"))\r
+        fDebug = true;\r
+\r
+    if (mapArgs.count("-printtodebugger"))\r
+        fPrintToDebugger = true;\r
+\r
+    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");\r
+    printf("Bitcoin version %d, OS version %s\n", VERSION, wxGetOsDescription().mb_str());\r
+\r
+    if (mapArgs.count("-loadblockindextest"))\r
+    {\r
+        CTxDB txdb("r");\r
+        txdb.LoadBlockIndex();\r
+        PrintBlockTree();\r
+        return false;\r
     }\r
 \r
     //\r
@@ -3434,41 +3492,20 @@ bool CMyApp::OnInit2()
     }\r
 #endif\r
 \r
-    //\r
-    // Parameters\r
-    //\r
-    if (mapArgs.count("-datadir"))\r
-        strlcpy(pszSetDataDir, mapArgs["-datadir"].c_str(), sizeof(pszSetDataDir));\r
-\r
-    if (mapArgs.count("-debug"))\r
-        fDebug = true;\r
-\r
-    if (mapArgs.count("-printtodebugger"))\r
-        fPrintToDebugger = true;\r
-\r
-    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");\r
-    printf("Bitcoin version %d, OS version %s\n", VERSION, wxGetOsDescription().mb_str());\r
-\r
-    if (mapArgs.count("-dropmessages"))\r
-    {\r
-        nDropMessagesTest = atoi(mapArgs["-dropmessages"]);\r
-        if (nDropMessagesTest == 0)\r
-            nDropMessagesTest = 20;\r
-    }\r
-\r
-    if (mapArgs.count("-loadblockindextest"))\r
+    // Bind to the port early so we can tell if another instance is already running.\r
+    // This is a backup to wxSingleInstanceChecker, which doesn't work on Linux.\r
+    string strErrors;\r
+    if (!BindListenPort(strErrors))\r
     {\r
-        CTxDB txdb("r");\r
-        txdb.LoadBlockIndex();\r
-        PrintBlockTree();\r
-        exit(0);\r
+        wxMessageBox(strErrors, "Bitcoin");\r
+        return false;\r
     }\r
 \r
     //\r
     // Load data files\r
     //\r
     bool fFirstRun;\r
-    string strErrors;\r
+    strErrors = "";\r
     int64 nStart;\r
 \r
     printf("Loading addresses...\n");\r
@@ -3502,7 +3539,6 @@ bool CMyApp::OnInit2()
     if (!strErrors.empty())\r
     {\r
         wxMessageBox(strErrors, "Bitcoin");\r
-        OnExit();\r
         return false;\r
     }\r
 \r
@@ -3515,7 +3551,6 @@ bool CMyApp::OnInit2()
     if (mapArgs.count("-printblockindex") || mapArgs.count("-printblocktree"))\r
     {\r
         PrintBlockTree();\r
-        OnExit();\r
         return false;\r
     }\r
 \r
@@ -3539,7 +3574,6 @@ bool CMyApp::OnInit2()
         }\r
         if (nFound == 0)\r
             printf("No blocks matching %s were found\n", strMatch.c_str());\r
-        OnExit();\r
         return false;\r
     }\r
 \r
@@ -3558,7 +3592,6 @@ bool CMyApp::OnInit2()
         if (!addrProxy.IsValid())\r
         {\r
             wxMessageBox("Invalid -proxy address", "Bitcoin");\r
-            OnExit();\r
             return false;\r
         }\r
     }\r
@@ -3588,10 +3621,7 @@ bool CMyApp::OnInit2()
     _beginthread(ThreadDelayedRepaint, 0, NULL);\r
 \r
     if (!CheckDiskSpace())\r
-    {\r
-        OnExit();\r
         return false;\r
-    }\r
 \r
     RandAddSeedPerfmon();\r
 \r
diff --git a/ui.h b/ui.h
index 1db4099..a919c36 100644 (file)
--- a/ui.h
+++ b/ui.h
@@ -24,7 +24,7 @@ extern int fMinimizeOnClose;
 \r
 extern void HandleCtrlA(wxKeyEvent& event);\r
 extern string FormatTxStatus(const CWalletTx& wtx);\r
-extern void UIThreadCall(boost::function<void ()>);\r
+extern void UIThreadCall(boost::function0<void>);\r
 extern void MainFrameRepaint();\r
 extern void Shutdown(void* parg);\r
 extern int ThreadSafeMessageBox(const string& message, const string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1);\r
index 6a280cd..7bc8081 100644 (file)
@@ -89,7 +89,7 @@ CMainFrameBase::CMainFrameBase( wxWindow* parent, wxWindowID id, const wxString&
        \r
        bSizer85->Add( m_textCtrlAddress, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );\r
        \r
-       m_buttonCopy = new wxButton( this, wxID_BUTTONCOPY, wxT("&Copy to Clipboard"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );\r
+       m_buttonCopy = new wxButton( this, wxID_BUTTONCOPY, wxT(" &Copy to Clipboard "), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );\r
        bSizer85->Add( m_buttonCopy, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );\r
        \r
        m_button91 = new wxButton( this, wxID_BUTTONCHANGE, wxT("C&hange..."), wxDefaultPosition, wxDefaultSize, 0 );\r
@@ -116,7 +116,7 @@ CMainFrameBase::CMainFrameBase( wxWindow* parent, wxWindowID id, const wxString&
        m_staticTextBalance = new wxStaticText( m_panel14, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 120,15 ), wxALIGN_RIGHT|wxST_NO_AUTORESIZE );\r
        m_staticTextBalance->Wrap( -1 );\r
        m_staticTextBalance->SetFont( wxFont( 8, 70, 90, 90, false, wxEmptyString ) );\r
-       m_staticTextBalance->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );\r
+       m_staticTextBalance->SetBackgroundColour( wxColour( 255, 255, 255 ) );\r
        \r
        bSizer66->Add( m_staticTextBalance, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );\r
        \r
@@ -341,10 +341,10 @@ CTxDetailsDialogBase::CTxDetailsDialogBase( wxWindow* parent, wxWindowID id, con
        bSizer64->Add( bSizer66, 1, wxEXPAND, 5 );\r
        \r
        wxBoxSizer* bSizer65;\r
-       bSizer65 = new wxBoxSizer( wxVERTICAL );\r
+       bSizer65 = new wxBoxSizer( wxHORIZONTAL );\r
        \r
        m_buttonOK = new wxButton( this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer65->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer65->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer64->Add( bSizer65, 0, wxALIGN_RIGHT, 5 );\r
        \r
@@ -521,13 +521,13 @@ COptionsDialogBase::COptionsDialogBase( wxWindow* parent, wxWindowID id, const w
        bSizer58 = new wxBoxSizer( wxHORIZONTAL );\r
        \r
        m_buttonOK = new wxButton( this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer58->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer58->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer58->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer58->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonApply = new wxButton( this, wxID_APPLY, wxT("&Apply"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer58->Add( m_buttonApply, 0, wxALL, 5 );\r
+       bSizer58->Add( m_buttonApply, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer55->Add( bSizer58, 0, wxALIGN_RIGHT, 5 );\r
        \r
@@ -619,7 +619,7 @@ CAboutDialogBase::CAboutDialogBase( wxWindow* parent, wxWindowID id, const wxStr
        bSizer61->Add( 0, 0, 1, wxEXPAND, 5 );\r
        \r
        m_buttonOK = new wxButton( this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer61->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer61->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer60->Add( bSizer61, 0, wxALIGN_RIGHT|wxEXPAND, 5 );\r
        \r
@@ -655,9 +655,9 @@ CSendDialogBase::CSendDialogBase( wxWindow* parent, wxWindowID id, const wxStrin
        \r
        fgSizer1->Add( 0, 0, 0, wxEXPAND, 5 );\r
        \r
-       m_staticText14 = new wxStaticText( this, wxID_ANY, wxT("Enter the recipient's IP address (e.g. 123.45.6.7) for online transfer with comments and confirmation, \nor Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) if recipient is not online."), wxDefaultPosition, wxDefaultSize, 0 );\r
-       m_staticText14->Wrap( -1 );\r
-       fgSizer1->Add( m_staticText14, 0, wxTOP|wxRIGHT|wxLEFT, 5 );\r
+       m_staticTextInstructions = new wxStaticText( this, wxID_ANY, wxT("Enter the recipient's IP address (e.g. 123.45.6.7) for online transfer with comments and confirmation, \nor Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) if recipient is not online."), wxDefaultPosition, wxDefaultSize, 0 );\r
+       m_staticTextInstructions->Wrap( -1 );\r
+       fgSizer1->Add( m_staticTextInstructions, 0, wxTOP|wxRIGHT|wxLEFT, 5 );\r
        \r
        wxBoxSizer* bSizer47;\r
        bSizer47 = new wxBoxSizer( wxHORIZONTAL );\r
@@ -681,11 +681,16 @@ CSendDialogBase::CSendDialogBase( wxWindow* parent, wxWindowID id, const wxStrin
        m_textCtrlAddress = new wxTextCtrl( this, wxID_TEXTCTRLPAYTO, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );\r
        bSizer19->Add( m_textCtrlAddress, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );\r
        \r
+       wxBoxSizer* bSizer66;\r
+       bSizer66 = new wxBoxSizer( wxHORIZONTAL );\r
+       \r
        m_buttonPaste = new wxButton( this, wxID_BUTTONPASTE, wxT("&Paste"), wxDefaultPosition, wxSize( -1,-1 ), wxBU_EXACTFIT );\r
-       bSizer19->Add( m_buttonPaste, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );\r
+       bSizer66->Add( m_buttonPaste, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxEXPAND, 5 );\r
        \r
        m_buttonAddress = new wxButton( this, wxID_BUTTONADDRESSBOOK, wxT(" Address &Book..."), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer19->Add( m_buttonAddress, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );\r
+       bSizer66->Add( m_buttonAddress, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxEXPAND, 5 );\r
+       \r
+       bSizer19->Add( bSizer66, 0, wxALIGN_CENTER_VERTICAL, 5 );\r
        \r
        fgSizer1->Add( bSizer19, 1, wxEXPAND|wxRIGHT, 5 );\r
        \r
@@ -764,10 +769,10 @@ CSendDialogBase::CSendDialogBase( wxWindow* parent, wxWindowID id, const wxStrin
        m_buttonSend = new wxButton( this, wxID_BUTTONSEND, wxT("&Send"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
        m_buttonSend->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );\r
        \r
-       bSizer23->Add( m_buttonSend, 0, wxALL, 5 );\r
+       bSizer23->Add( m_buttonSend, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer23->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer23->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer21->Add( bSizer23, 0, wxEXPAND, 5 );\r
        \r
@@ -827,10 +832,10 @@ CSendingDialogBase::CSendingDialogBase( wxWindow* parent, wxWindowID id, const w
        m_buttonOK = new wxButton( this, wxID_ANY, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 );\r
        m_buttonOK->Enable( false );\r
        \r
-       bSizer69->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer69->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer68->Add( bSizer69, 0, wxEXPAND, 5 );\r
        \r
@@ -877,21 +882,21 @@ CYourAddressDialogBase::CYourAddressDialogBase( wxWindow* parent, wxWindowID id,
        bSizer69->Add( 0, 0, 1, wxEXPAND, 5 );\r
        \r
        m_buttonRename = new wxButton( this, wxID_BUTTONRENAME, wxT("&Edit..."), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer69->Add( m_buttonRename, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonRename, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
-       m_buttonNew = new wxButton( this, wxID_BUTTONNEW, wxT("&New Address..."), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer69->Add( m_buttonNew, 0, wxALL, 5 );\r
+       m_buttonNew = new wxButton( this, wxID_BUTTONNEW, wxT(" &New Address... "), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
+       bSizer69->Add( m_buttonNew, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
-       m_buttonCopy = new wxButton( this, wxID_BUTTONCOPY, wxT("&Copy to Clipboard"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer69->Add( m_buttonCopy, 0, wxALL, 5 );\r
+       m_buttonCopy = new wxButton( this, wxID_BUTTONCOPY, wxT(" &Copy to Clipboard "), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
+       bSizer69->Add( m_buttonCopy, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonOK = new wxButton( this, wxID_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer69->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
        m_buttonCancel->Hide();\r
        \r
-       bSizer69->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer68->Add( bSizer69, 0, wxEXPAND, 5 );\r
        \r
@@ -950,19 +955,19 @@ CAddressBookDialogBase::CAddressBookDialogBase( wxWindow* parent, wxWindowID id,
        bSizer69->Add( 0, 0, 1, wxEXPAND, 5 );\r
        \r
        m_buttonEdit = new wxButton( this, wxID_BUTTONEDIT, wxT("&Edit..."), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer69->Add( m_buttonEdit, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonEdit, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
-       m_buttonNew = new wxButton( this, wxID_BUTTONNEW, wxT("&New Address..."), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer69->Add( m_buttonNew, 0, wxALL, 5 );\r
+       m_buttonNew = new wxButton( this, wxID_BUTTONNEW, wxT(" &New Address... "), wxDefaultPosition, wxDefaultSize, 0 );\r
+       bSizer69->Add( m_buttonNew, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonDelete = new wxButton( this, wxID_BUTTONDELETE, wxT("&Delete"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer69->Add( m_buttonDelete, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonDelete, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonOK = new wxButton( this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer69->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer69->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer69->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer68->Add( bSizer69, 0, wxEXPAND, 5 );\r
        \r
@@ -1360,13 +1365,13 @@ CEditProductDialogBase::CEditProductDialogBase( wxWindow* parent, wxWindowID id,
        bSizer26 = new wxBoxSizer( wxHORIZONTAL );\r
        \r
        m_buttonOK = new wxButton( this, wxID_BUTTONSEND, wxT("&Send"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer26->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer26->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonPreview = new wxButton( this, wxID_BUTTONPREVIEW, wxT("&Preview"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer26->Add( m_buttonPreview, 0, wxALL, 5 );\r
+       bSizer26->Add( m_buttonPreview, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer26->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer26->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer20->Add( bSizer26, 0, wxALIGN_RIGHT, 5 );\r
        \r
@@ -1551,10 +1556,10 @@ CViewProductDialogBase::CViewProductDialogBase( wxWindow* parent, wxWindowID id,
        bSizer25 = new wxBoxSizer( wxHORIZONTAL );\r
        \r
        m_buttonSubmitForm = new wxButton( m_scrolledWindow, wxID_BUTTONSAMPLE, wxT("&Submit"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer25->Add( m_buttonSubmitForm, 0, wxALL, 5 );\r
+       bSizer25->Add( m_buttonSubmitForm, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancelForm = new wxButton( m_scrolledWindow, wxID_CANCEL2, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer25->Add( m_buttonCancelForm, 0, wxALL, 5 );\r
+       bSizer25->Add( m_buttonCancelForm, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer21->Add( bSizer25, 0, wxALIGN_CENTER_HORIZONTAL, 5 );\r
        \r
@@ -1571,13 +1576,13 @@ CViewProductDialogBase::CViewProductDialogBase( wxWindow* parent, wxWindowID id,
        m_buttonBack = new wxButton( this, wxID_BUTTONBACK, wxT("< &Back  "), wxDefaultPosition, wxDefaultSize, 0 );\r
        m_buttonBack->Enable( false );\r
        \r
-       bSizer26->Add( m_buttonBack, 0, wxALL, 5 );\r
+       bSizer26->Add( m_buttonBack, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonNext = new wxButton( this, wxID_BUTTONNEXT, wxT("  &Next >"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer26->Add( m_buttonNext, 0, wxALL, 5 );\r
+       bSizer26->Add( m_buttonNext, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer26->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer26->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer20->Add( bSizer26, 0, wxALIGN_RIGHT, 5 );\r
        \r
@@ -1622,7 +1627,7 @@ CViewOrderDialogBase::CViewOrderDialogBase( wxWindow* parent, wxWindowID id, con
        bSizer26 = new wxBoxSizer( wxHORIZONTAL );\r
        \r
        m_buttonOK = new wxButton( this, wxID_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer26->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer26->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer20->Add( bSizer26, 0, wxALIGN_RIGHT, 5 );\r
        \r
@@ -1678,10 +1683,10 @@ CEditReviewDialogBase::CEditReviewDialogBase( wxWindow* parent, wxWindowID id, c
        bSizer113 = new wxBoxSizer( wxHORIZONTAL );\r
        \r
        m_buttonSubmit = new wxButton( this, wxID_SUBMIT, wxT("&Submit"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer113->Add( m_buttonSubmit, 0, wxALL, 5 );\r
+       bSizer113->Add( m_buttonSubmit, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer113->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer113->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer112->Add( bSizer113, 0, wxALIGN_RIGHT, 5 );\r
        \r
@@ -1745,10 +1750,10 @@ CGetTextFromUserDialogBase::CGetTextFromUserDialogBase( wxWindow* parent, wxWind
        bSizer80->Add( 0, 0, 1, wxEXPAND, 5 );\r
        \r
        m_buttonOK = new wxButton( this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 );\r
-       bSizer80->Add( m_buttonOK, 0, wxALL, 5 );\r
+       bSizer80->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );\r
-       bSizer80->Add( m_buttonCancel, 0, wxALL, 5 );\r
+       bSizer80->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );\r
        \r
        bSizer79->Add( bSizer80, 0, wxEXPAND, 5 );\r
        \r
index 6332b93..2cb99e9 100644 (file)
--- a/uibase.h
+++ b/uibase.h
@@ -277,7 +277,7 @@ class CSendDialogBase : public wxDialog
        protected:\r
                \r
                \r
-               wxStaticText* m_staticText14;\r
+               wxStaticText* m_staticTextInstructions;\r
                \r
                wxStaticBitmap* m_bitmapCheckMark;\r
                wxStaticText* m_staticText36;\r
index 7c5bb24..3aa1c86 100644 (file)
                     </object>\r
                 </object>\r
             </object>\r
-            <object class="wxToolBar" expanded="0">\r
+            <object class="wxToolBar" expanded="1">\r
                 <property name="bg"></property>\r
                 <property name="bitmapsize">20,20</property>\r
                 <property name="context_help"></property>\r
                                 <property name="font"></property>\r
                                 <property name="hidden">0</property>\r
                                 <property name="id">wxID_BUTTONCOPY</property>\r
-                                <property name="label">&amp;Copy to Clipboard</property>\r
+                                <property name="label"> &amp;Copy to Clipboard </property>\r
                                 <property name="maximum_size"></property>\r
                                 <property name="minimum_size"></property>\r
                                 <property name="name">m_buttonCopy</property>\r
                                         <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>\r
                                         <property name="proportion">0</property>\r
                                         <object class="wxStaticText" expanded="1">\r
-                                            <property name="bg">wxSYS_COLOUR_WINDOW</property>\r
+                                            <property name="bg">255,255,255</property>\r
                                             <property name="context_help"></property>\r
                                             <property name="enabled">1</property>\r
                                             <property name="fg"></property>\r
                     <object class="wxBoxSizer" expanded="1">\r
                         <property name="minimum_size"></property>\r
                         <property name="name">bSizer65</property>\r
-                        <property name="orient">wxVERTICAL</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
                         <property name="permission">none</property>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         <property name="permission">none</property>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                                 <property name="label">Enter the recipient&apos;s IP address (e.g. 123.45.6.7) for online transfer with comments and confirmation, &#x0A;or Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) if recipient is not online.</property>\r
                                 <property name="maximum_size"></property>\r
                                 <property name="minimum_size"></property>\r
-                                <property name="name">m_staticText14</property>\r
+                                <property name="name">m_staticTextInstructions</property>\r
                                 <property name="permission">protected</property>\r
                                 <property name="pos"></property>\r
                                 <property name="size"></property>\r
                                 </object>\r
                                 <object class="sizeritem" expanded="1">\r
                                     <property name="border">5</property>\r
-                                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>\r
+                                    <property name="flag">wxALIGN_CENTER_VERTICAL</property>\r
                                     <property name="proportion">0</property>\r
-                                    <object class="wxButton" expanded="1">\r
-                                        <property name="bg"></property>\r
-                                        <property name="context_help"></property>\r
-                                        <property name="default">0</property>\r
-                                        <property name="enabled">1</property>\r
-                                        <property name="fg"></property>\r
-                                        <property name="font"></property>\r
-                                        <property name="hidden">0</property>\r
-                                        <property name="id">wxID_BUTTONPASTE</property>\r
-                                        <property name="label">&amp;Paste</property>\r
-                                        <property name="maximum_size"></property>\r
-                                        <property name="minimum_size"></property>\r
-                                        <property name="name">m_buttonPaste</property>\r
-                                        <property name="permission">protected</property>\r
-                                        <property name="pos"></property>\r
-                                        <property name="size">-1,-1</property>\r
-                                        <property name="style">wxBU_EXACTFIT</property>\r
-                                        <property name="subclass"></property>\r
-                                        <property name="tooltip"></property>\r
-                                        <property name="window_extra_style"></property>\r
-                                        <property name="window_name"></property>\r
-                                        <property name="window_style"></property>\r
-                                        <event name="OnButtonClick">OnButtonPaste</event>\r
-                                        <event name="OnChar"></event>\r
-                                        <event name="OnEnterWindow"></event>\r
-                                        <event name="OnEraseBackground"></event>\r
-                                        <event name="OnKeyDown"></event>\r
-                                        <event name="OnKeyUp"></event>\r
-                                        <event name="OnKillFocus"></event>\r
-                                        <event name="OnLeaveWindow"></event>\r
-                                        <event name="OnLeftDClick"></event>\r
-                                        <event name="OnLeftDown"></event>\r
-                                        <event name="OnLeftUp"></event>\r
-                                        <event name="OnMiddleDClick"></event>\r
-                                        <event name="OnMiddleDown"></event>\r
-                                        <event name="OnMiddleUp"></event>\r
-                                        <event name="OnMotion"></event>\r
-                                        <event name="OnMouseEvents"></event>\r
-                                        <event name="OnMouseWheel"></event>\r
-                                        <event name="OnPaint"></event>\r
-                                        <event name="OnRightDClick"></event>\r
-                                        <event name="OnRightDown"></event>\r
-                                        <event name="OnRightUp"></event>\r
-                                        <event name="OnSetFocus"></event>\r
-                                        <event name="OnSize"></event>\r
-                                        <event name="OnUpdateUI"></event>\r
-                                    </object>\r
-                                </object>\r
-                                <object class="sizeritem" expanded="1">\r
-                                    <property name="border">5</property>\r
-                                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>\r
-                                    <property name="proportion">0</property>\r
-                                    <object class="wxButton" expanded="1">\r
-                                        <property name="bg"></property>\r
-                                        <property name="context_help"></property>\r
-                                        <property name="default">0</property>\r
-                                        <property name="enabled">1</property>\r
-                                        <property name="fg"></property>\r
-                                        <property name="font"></property>\r
-                                        <property name="hidden">0</property>\r
-                                        <property name="id">wxID_BUTTONADDRESSBOOK</property>\r
-                                        <property name="label"> Address &amp;Book...</property>\r
-                                        <property name="maximum_size"></property>\r
+                                    <object class="wxBoxSizer" expanded="1">\r
                                         <property name="minimum_size"></property>\r
-                                        <property name="name">m_buttonAddress</property>\r
-                                        <property name="permission">protected</property>\r
-                                        <property name="pos"></property>\r
-                                        <property name="size"></property>\r
-                                        <property name="style"></property>\r
-                                        <property name="subclass"></property>\r
-                                        <property name="tooltip"></property>\r
-                                        <property name="window_extra_style"></property>\r
-                                        <property name="window_name"></property>\r
-                                        <property name="window_style"></property>\r
-                                        <event name="OnButtonClick">OnButtonAddressBook</event>\r
-                                        <event name="OnChar"></event>\r
-                                        <event name="OnEnterWindow"></event>\r
-                                        <event name="OnEraseBackground"></event>\r
-                                        <event name="OnKeyDown"></event>\r
-                                        <event name="OnKeyUp"></event>\r
-                                        <event name="OnKillFocus"></event>\r
-                                        <event name="OnLeaveWindow"></event>\r
-                                        <event name="OnLeftDClick"></event>\r
-                                        <event name="OnLeftDown"></event>\r
-                                        <event name="OnLeftUp"></event>\r
-                                        <event name="OnMiddleDClick"></event>\r
-                                        <event name="OnMiddleDown"></event>\r
-                                        <event name="OnMiddleUp"></event>\r
-                                        <event name="OnMotion"></event>\r
-                                        <event name="OnMouseEvents"></event>\r
-                                        <event name="OnMouseWheel"></event>\r
-                                        <event name="OnPaint"></event>\r
-                                        <event name="OnRightDClick"></event>\r
-                                        <event name="OnRightDown"></event>\r
-                                        <event name="OnRightUp"></event>\r
-                                        <event name="OnSetFocus"></event>\r
-                                        <event name="OnSize"></event>\r
-                                        <event name="OnUpdateUI"></event>\r
+                                        <property name="name">bSizer66</property>\r
+                                        <property name="orient">wxHORIZONTAL</property>\r
+                                        <property name="permission">none</property>\r
+                                        <object class="sizeritem" expanded="1">\r
+                                            <property name="border">5</property>\r
+                                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxEXPAND</property>\r
+                                            <property name="proportion">0</property>\r
+                                            <object class="wxButton" expanded="1">\r
+                                                <property name="bg"></property>\r
+                                                <property name="context_help"></property>\r
+                                                <property name="default">0</property>\r
+                                                <property name="enabled">1</property>\r
+                                                <property name="fg"></property>\r
+                                                <property name="font"></property>\r
+                                                <property name="hidden">0</property>\r
+                                                <property name="id">wxID_BUTTONPASTE</property>\r
+                                                <property name="label">&amp;Paste</property>\r
+                                                <property name="maximum_size"></property>\r
+                                                <property name="minimum_size"></property>\r
+                                                <property name="name">m_buttonPaste</property>\r
+                                                <property name="permission">protected</property>\r
+                                                <property name="pos"></property>\r
+                                                <property name="size">-1,-1</property>\r
+                                                <property name="style">wxBU_EXACTFIT</property>\r
+                                                <property name="subclass"></property>\r
+                                                <property name="tooltip"></property>\r
+                                                <property name="window_extra_style"></property>\r
+                                                <property name="window_name"></property>\r
+                                                <property name="window_style"></property>\r
+                                                <event name="OnButtonClick">OnButtonPaste</event>\r
+                                                <event name="OnChar"></event>\r
+                                                <event name="OnEnterWindow"></event>\r
+                                                <event name="OnEraseBackground"></event>\r
+                                                <event name="OnKeyDown"></event>\r
+                                                <event name="OnKeyUp"></event>\r
+                                                <event name="OnKillFocus"></event>\r
+                                                <event name="OnLeaveWindow"></event>\r
+                                                <event name="OnLeftDClick"></event>\r
+                                                <event name="OnLeftDown"></event>\r
+                                                <event name="OnLeftUp"></event>\r
+                                                <event name="OnMiddleDClick"></event>\r
+                                                <event name="OnMiddleDown"></event>\r
+                                                <event name="OnMiddleUp"></event>\r
+                                                <event name="OnMotion"></event>\r
+                                                <event name="OnMouseEvents"></event>\r
+                                                <event name="OnMouseWheel"></event>\r
+                                                <event name="OnPaint"></event>\r
+                                                <event name="OnRightDClick"></event>\r
+                                                <event name="OnRightDown"></event>\r
+                                                <event name="OnRightUp"></event>\r
+                                                <event name="OnSetFocus"></event>\r
+                                                <event name="OnSize"></event>\r
+                                                <event name="OnUpdateUI"></event>\r
+                                            </object>\r
+                                        </object>\r
+                                        <object class="sizeritem" expanded="1">\r
+                                            <property name="border">5</property>\r
+                                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxEXPAND</property>\r
+                                            <property name="proportion">0</property>\r
+                                            <object class="wxButton" expanded="1">\r
+                                                <property name="bg"></property>\r
+                                                <property name="context_help"></property>\r
+                                                <property name="default">0</property>\r
+                                                <property name="enabled">1</property>\r
+                                                <property name="fg"></property>\r
+                                                <property name="font"></property>\r
+                                                <property name="hidden">0</property>\r
+                                                <property name="id">wxID_BUTTONADDRESSBOOK</property>\r
+                                                <property name="label"> Address &amp;Book...</property>\r
+                                                <property name="maximum_size"></property>\r
+                                                <property name="minimum_size"></property>\r
+                                                <property name="name">m_buttonAddress</property>\r
+                                                <property name="permission">protected</property>\r
+                                                <property name="pos"></property>\r
+                                                <property name="size"></property>\r
+                                                <property name="style"></property>\r
+                                                <property name="subclass"></property>\r
+                                                <property name="tooltip"></property>\r
+                                                <property name="window_extra_style"></property>\r
+                                                <property name="window_name"></property>\r
+                                                <property name="window_style"></property>\r
+                                                <event name="OnButtonClick">OnButtonAddressBook</event>\r
+                                                <event name="OnChar"></event>\r
+                                                <event name="OnEnterWindow"></event>\r
+                                                <event name="OnEraseBackground"></event>\r
+                                                <event name="OnKeyDown"></event>\r
+                                                <event name="OnKeyUp"></event>\r
+                                                <event name="OnKillFocus"></event>\r
+                                                <event name="OnLeaveWindow"></event>\r
+                                                <event name="OnLeftDClick"></event>\r
+                                                <event name="OnLeftDown"></event>\r
+                                                <event name="OnLeftUp"></event>\r
+                                                <event name="OnMiddleDClick"></event>\r
+                                                <event name="OnMiddleDown"></event>\r
+                                                <event name="OnMiddleUp"></event>\r
+                                                <event name="OnMotion"></event>\r
+                                                <event name="OnMouseEvents"></event>\r
+                                                <event name="OnMouseWheel"></event>\r
+                                                <event name="OnPaint"></event>\r
+                                                <event name="OnRightDClick"></event>\r
+                                                <event name="OnRightDown"></event>\r
+                                                <event name="OnRightUp"></event>\r
+                                                <event name="OnSetFocus"></event>\r
+                                                <event name="OnSize"></event>\r
+                                                <event name="OnUpdateUI"></event>\r
+                                            </object>\r
+                                        </object>\r
                                     </object>\r
                                 </object>\r
                             </object>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                                 <property name="font"></property>\r
                                 <property name="hidden">0</property>\r
                                 <property name="id">wxID_BUTTONNEW</property>\r
-                                <property name="label">&amp;New Address...</property>\r
+                                <property name="label"> &amp;New Address... </property>\r
                                 <property name="maximum_size"></property>\r
                                 <property name="minimum_size">-1,-1</property>\r
                                 <property name="name">m_buttonNew</property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                                 <property name="font"></property>\r
                                 <property name="hidden">0</property>\r
                                 <property name="id">wxID_BUTTONCOPY</property>\r
-                                <property name="label">&amp;Copy to Clipboard</property>\r
+                                <property name="label"> &amp;Copy to Clipboard </property>\r
                                 <property name="maximum_size"></property>\r
                                 <property name="minimum_size">-1,-1</property>\r
                                 <property name="name">m_buttonCopy</property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                                 <property name="font"></property>\r
                                 <property name="hidden">0</property>\r
                                 <property name="id">wxID_BUTTONNEW</property>\r
-                                <property name="label">&amp;New Address...</property>\r
+                                <property name="label"> &amp;New Address... </property>\r
                                 <property name="maximum_size"></property>\r
                                 <property name="minimum_size">-1,-1</property>\r
                                 <property name="name">m_buttonNew</property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         <property name="permission">none</property>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                                             <property name="permission">none</property>\r
                                             <object class="sizeritem" expanded="1">\r
                                                 <property name="border">5</property>\r
-                                                <property name="flag">wxALL</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                                                 <property name="proportion">0</property>\r
                                                 <object class="wxButton" expanded="1">\r
                                                     <property name="bg"></property>\r
                                             </object>\r
                                             <object class="sizeritem" expanded="1">\r
                                                 <property name="border">5</property>\r
-                                                <property name="flag">wxALL</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                                                 <property name="proportion">0</property>\r
                                                 <object class="wxButton" expanded="1">\r
                                                     <property name="bg"></property>\r
                         <property name="permission">none</property>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         <property name="permission">none</property>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         <property name="permission">none</property>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
                         </object>\r
                         <object class="sizeritem" expanded="1">\r
                             <property name="border">5</property>\r
-                            <property name="flag">wxALL</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>\r
                             <property name="proportion">0</property>\r
                             <object class="wxButton" expanded="1">\r
                                 <property name="bg"></property>\r
index 5efb579..4a5b983 100644 (file)
--- a/util.cpp
+++ b/util.cpp
@@ -53,6 +53,17 @@ public:
         for (int i = 0; i < CRYPTO_num_locks(); i++)\r
             delete ppmutexOpenSSL[i];\r
         OPENSSL_free(ppmutexOpenSSL);\r
+\r
+        // Close sockets\r
+        foreach(CNode* pnode, vNodes)\r
+            closesocket(pnode->hSocket);\r
+        if (closesocket(hListenSocket) == SOCKET_ERROR)\r
+            printf("closesocket(hListenSocket) failed with error %d\n", WSAGetLastError());\r
+\r
+#ifdef __WXMSW__\r
+        // Shutdown Windows Sockets\r
+        WSACleanup();\r
+#endif\r
     }\r
 }\r
 instance_of_cinit;\r