{\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
CCriticalSection cs_mapKeys;\r
CKey keyUser;\r
\r
-int nDropMessagesTest = 0;\r
-\r
// Settings\r
int fGenerateBitcoins = false;\r
int64 nTransactionFee = 0;\r
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
Sleep(1000);\r
if (fShutdown)\r
return;\r
+ if (!fGenerateBitcoins)\r
+ return;\r
}\r
\r
unsigned int nTransactionsUpdatedLast = nTransactionsUpdated;\r
extern uint256 hashBestChain;\r
extern CBlockIndex* pindexBest;\r
extern unsigned int nTransactionsUpdated;\r
-extern int nDropMessagesTest;\r
\r
// Settings\r
extern int fGenerateBitcoins;\r
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
\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
}\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
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
{\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
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
Sleep(20);\r
Sleep(50);\r
\r
- // Sockets shutdown\r
-#ifdef __WXMSW__\r
- WSACleanup();\r
-#endif\r
return true;\r
}\r
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
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
\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
"");\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
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
}\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
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
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
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
\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
SetAppName("bitcoin");\r
#endif\r
\r
+ //\r
+ // Parameters\r
+ //\r
ParseParameters(argc, argv);\r
if (mapArgs.count("-?") || mapArgs.count("--help"))\r
{\r
" -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
}\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
if (!strErrors.empty())\r
{\r
wxMessageBox(strErrors, "Bitcoin");\r
- OnExit();\r
return false;\r
}\r
\r
if (mapArgs.count("-printblockindex") || mapArgs.count("-printblocktree"))\r
{\r
PrintBlockTree();\r
- OnExit();\r
return false;\r
}\r
\r
}\r
if (nFound == 0)\r
printf("No blocks matching %s were found\n", strMatch.c_str());\r
- OnExit();\r
return false;\r
}\r
\r
if (!addrProxy.IsValid())\r
{\r
wxMessageBox("Invalid -proxy address", "Bitcoin");\r
- OnExit();\r
return false;\r
}\r
}\r
_beginthread(ThreadDelayedRepaint, 0, NULL);\r
\r
if (!CheckDiskSpace())\r
- {\r
- OnExit();\r
return false;\r
- }\r
\r
RandAddSeedPerfmon();\r
\r
\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
\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
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
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
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
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
\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
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
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
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
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
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
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
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
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
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
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
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
protected:\r
\r
\r
- wxStaticText* m_staticText14;\r
+ wxStaticText* m_staticTextInstructions;\r
\r
wxStaticBitmap* m_bitmapCheckMark;\r
wxStaticText* m_staticText36;\r
</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">&Copy to Clipboard</property>\r
+ <property name="label"> &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's IP address (e.g. 123.45.6.7) for online transfer with comments and confirmation, 
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">&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 &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">&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 &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">&New Address...</property>\r
+ <property name="label"> &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">&Copy to Clipboard</property>\r
+ <property name="label"> &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">&New Address...</property>\r
+ <property name="label"> &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
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