diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/db.cpp | 6 | ||||
-rw-r--r-- | src/init.cpp | 2 | ||||
-rw-r--r-- | src/main.cpp | 86 | ||||
-rw-r--r-- | src/main.h | 2 | ||||
-rw-r--r-- | src/makefile.unix | 10 | ||||
-rw-r--r-- | src/rpc.cpp | 18 | ||||
-rw-r--r-- | src/serialize.h | 2 | ||||
-rw-r--r-- | src/sha256.cpp | 475 | ||||
-rw-r--r-- | src/ui.cpp | 56 | ||||
-rw-r--r-- | src/ui.h | 3 | ||||
-rw-r--r-- | src/uibase.cpp | 25 | ||||
-rw-r--r-- | src/uibase.h | 52 |
12 files changed, 63 insertions, 674 deletions
diff --git a/src/db.cpp b/src/db.cpp index 28a8b71733..071231c5dd 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -778,10 +778,10 @@ bool CWalletDB::LoadWallet() string strKey; ssKey >> strKey; - // Menu state - if (strKey == "fGenerateBitcoins") ssValue >> fGenerateBitcoins; - // Options +#ifndef GUI + if (strKey == "fGenerateBitcoins") ssValue >> fGenerateBitcoins; +#endif if (strKey == "nTransactionFee") ssValue >> nTransactionFee; if (strKey == "addrIncoming") ssValue >> addrIncoming; if (strKey == "fLimitProcessors") ssValue >> fLimitProcessors; diff --git a/src/init.cpp b/src/init.cpp index 8f72181225..a8e93140b3 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -326,7 +326,7 @@ bool AppInit2(int argc, char* argv[]) // Make sure only a single bitcoin process is using the data directory. string strLockFile = GetDataDir() + "/.lock"; FILE* file = fopen(strLockFile.c_str(), "a"); // empty lock file; created if it doesn't exist. - fclose(file); + if (file) fclose(file); static boost::interprocess::file_lock lock(strLockFile.c_str()); if (!lock.try_lock()) { diff --git a/src/main.cpp b/src/main.cpp index 4c8f20c1e4..2cdde5b42b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -681,8 +681,8 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi if (GetSigOpCount() > nSize / 34 || nSize < 100) return error("AcceptToMemoryPool() : nonstandard transaction"); - // Rather not work on nonstandard transactions - if (!IsStandard()) + // Rather not work on nonstandard transactions (unless -testnet) + if (!fTestNet && !IsStandard()) return error("AcceptToMemoryPool() : nonstandard transaction type"); // Do we already have it? @@ -3145,71 +3145,6 @@ void ThreadBitcoinMiner(void* parg) printf("ThreadBitcoinMiner exiting, %d threads remaining\n", vnThreadsRunning[3]); } -#if defined(__GNUC__) && defined(CRYPTOPP_X86_ASM_AVAILABLE) -void CallCPUID(int in, int& aret, int& cret) -{ - int a, c; - asm ( - "mov %2, %%eax; " // in into eax - "cpuid;" - "mov %%eax, %0;" // eax into a - "mov %%ecx, %1;" // ecx into c - :"=r"(a),"=r"(c) /* output */ - :"r"(in) /* input */ - :"%eax","%ebx","%ecx","%edx" /* clobbered register */ - ); - aret = a; - cret = c; -} - -bool Detect128BitSSE2() -{ - int a, c, nBrand; - CallCPUID(0, a, nBrand); - bool fIntel = (nBrand == 0x6c65746e); // ntel - bool fAMD = (nBrand == 0x444d4163); // cAMD - - struct - { - unsigned int nStepping : 4; - unsigned int nModel : 4; - unsigned int nFamily : 4; - unsigned int nProcessorType : 2; - unsigned int nUnused : 2; - unsigned int nExtendedModel : 4; - unsigned int nExtendedFamily : 8; - } - cpu; - CallCPUID(1, a, c); - memcpy(&cpu, &a, sizeof(cpu)); - int nFamily = cpu.nExtendedFamily + cpu.nFamily; - int nModel = cpu.nExtendedModel*16 + cpu.nModel; - - // We need Intel Nehalem or AMD K10 or better for 128bit SSE2 - // Nehalem = i3/i5/i7 and some Xeon - // K10 = Opterons with 4 or more cores, Phenom, Phenom II, Athlon II - // Intel Core i5 family 6, model 26 or 30 - // Intel Core i7 family 6, model 26 or 30 - // Intel Core i3 family 6, model 37 - // AMD Phenom family 16, model 10 - bool fUseSSE2 = ((fIntel && nFamily * 10000 + nModel >= 60026) || - (fAMD && nFamily * 10000 + nModel >= 160010)); - - // AMD reports a lower model number in 64-bit mode - if (fAMD && sizeof(void*) > 4 && nFamily * 10000 + nModel >= 160000) - fUseSSE2 = true; - - static bool fPrinted; - if (!fPrinted) - { - fPrinted = true; - printf("CPUID %08x family %d, model %d, stepping %d, fUseSSE2=%d\n", nBrand, nFamily, nModel, cpu.nStepping, fUseSSE2); - } - return fUseSSE2; -} -#else -bool Detect128BitSSE2() { return false; } -#endif int FormatHashBlocks(void* pbuffer, unsigned int len) { @@ -3270,9 +3205,6 @@ unsigned int ScanHash_CryptoPP(char* pmidstate, char* pdata, char* phash1, char* } } -extern unsigned int ScanHash_4WaySSE2(char* pmidstate, char* pblock, char* phash1, char* phash, unsigned int& nHashesDone); - - class COrphan { @@ -3546,9 +3478,6 @@ void BitcoinMiner() { printf("BitcoinMiner started\n"); SetThreadPriority(THREAD_PRIORITY_LOWEST); - bool f4WaySSE2 = Detect128BitSSE2(); - if (mapArgs.count("-4way")) - f4WaySSE2 = GetBoolArg("-4way"); // Each thread has its own key and counter CReserveKey reservekey; @@ -3610,14 +3539,9 @@ void BitcoinMiner() unsigned int nHashesDone = 0; unsigned int nNonceFound; -#ifdef FOURWAYSSE2 - if (f4WaySSE2) - // tcatm's 4-way 128-bit SSE2 SHA-256 - nNonceFound = ScanHash_4WaySSE2(pmidstate, pdata + 64, phash1, (char*)&hash, nHashesDone); - else -#endif - // Crypto++ SHA-256 - nNonceFound = ScanHash_CryptoPP(pmidstate, pdata + 64, phash1, (char*)&hash, nHashesDone); + // Crypto++ SHA-256 + nNonceFound = ScanHash_CryptoPP(pmidstate, pdata + 64, phash1, + (char*)&hash, nHashesDone); // Check if something found if (nNonceFound != -1) diff --git a/src/main.h b/src/main.h index 355ef5313f..8ff105124e 100644 --- a/src/main.h +++ b/src/main.h @@ -1028,7 +1028,7 @@ public: if (!ptx->IsFinal()) return false; if (ptx->GetDepthInMainChain() >= 1) - return true; + continue; if (!ptx->IsFromMe()) return false; diff --git a/src/makefile.unix b/src/makefile.unix index 61b925e3bc..4f2da37894 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -32,7 +32,8 @@ LIBS+= \ -Wl,-Bdynamic \ -l gthread-2.0 \ -l z \ - -l dl + -l dl \ + -l pthread DEBUGFLAGS=-g -D__WXDEBUG__ @@ -62,17 +63,14 @@ obj/%.o: %.cpp $(HEADERS) cryptopp/obj/%.o: cryptopp/%.cpp $(CXX) -c $(CXXFLAGS) -O3 -o $@ $< -obj/sha256.o: sha256.cpp - $(CXX) -c $(CXXFLAGS) -msse2 -O3 -march=amdfam10 -o $@ $< - -bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha256.o +bitcoin: $(OBJS) obj/ui.o obj/uibase.o $(CXX) $(CXXFLAGS) -o $@ $^ $(WXLIBS) $(LIBS) obj/nogui/%.o: %.cpp $(HEADERS) $(CXX) -c $(CXXFLAGS) -o $@ $< -bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha256.o +bitcoind: $(OBJS:obj/%=obj/nogui/%) $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) diff --git a/src/rpc.cpp b/src/rpc.cpp index 90e7f15a91..d6a92b3463 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1083,8 +1083,8 @@ Value listtransactions(const Array& params, bool fHelp) { if (fHelp || params.size() > 2) throw runtime_error( - "listtransactions [account] [count=10]\n" - "Returns up to [count] most recent transactions for account <account>."); + "listtransactions [account] [count=10] [from=0]\n" + "Returns up to [count] most recent transactions skipping the first [from] transactions for account [account]."); string strAccount = "*"; if (params.size() > 0) @@ -1092,6 +1092,9 @@ Value listtransactions(const Array& params, bool fHelp) int nCount = 10; if (params.size() > 1) nCount = params[1].get_int(); + int nFrom = 0; + if (params.size() > 2) + nFrom = params[2].get_int(); Array ret; CWalletDB walletdb; @@ -1116,7 +1119,8 @@ Value listtransactions(const Array& params, bool fHelp) } // Now: iterate backwards until we have nCount items to return: - for (TxItems::reverse_iterator it = txByTime.rbegin(); it != txByTime.rend(); ++it) + TxItems::reverse_iterator it = txByTime.rbegin(); + for (std::advance(it, nFrom); it != txByTime.rend(); ++it) { CWalletTx *const pwtx = (*it).second.first; if (pwtx != 0) @@ -1570,10 +1574,11 @@ int ReadHTTPHeader(std::basic_istream<char>& stream, map<string, string>& mapHea { string strHeader = str.substr(0, nColon); boost::trim(strHeader); + boost::to_lower(strHeader); string strValue = str.substr(nColon+1); boost::trim(strValue); mapHeadersRet[strHeader] = strValue; - if (strHeader == "Content-Length") + if (strHeader == "content-length") nLen = atoi(strValue.c_str()); } } @@ -1643,7 +1648,7 @@ string DecodeBase64(string s) bool HTTPAuthorized(map<string, string>& mapHeaders) { - string strAuth = mapHeaders["Authorization"]; + string strAuth = mapHeaders["authorization"]; if (strAuth.substr(0,6) != "Basic ") return false; string strUserPass64 = strAuth.substr(6); boost::trim(strUserPass64); @@ -1872,7 +1877,7 @@ void ThreadRPCServer2(void* parg) } // Check authorization - if (mapHeaders.count("Authorization") == 0) + if (mapHeaders.count("authorization") == 0) { stream << HTTPReply(401, "") << std::flush; continue; @@ -2087,6 +2092,7 @@ int CommandLineRPC(int argc, char *argv[]) if (strMethod == "sendfrom" && n > 2) ConvertTo<double>(params[2]); if (strMethod == "sendfrom" && n > 3) ConvertTo<boost::int64_t>(params[3]); if (strMethod == "listtransactions" && n > 1) ConvertTo<boost::int64_t>(params[1]); + if (strMethod == "listtransactions" && n > 2) ConvertTo<boost::int64_t>(params[2]); if (strMethod == "listaccounts" && n > 0) ConvertTo<boost::int64_t>(params[0]); if (strMethod == "sendmany" && n > 1) { diff --git a/src/serialize.h b/src/serialize.h index 383c987864..ee39c0703d 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -25,7 +25,7 @@ class CDataStream; class CAutoFile; static const unsigned int MAX_SIZE = 0x02000000; -static const int VERSION = 32100; +static const int VERSION = 32200; static const char* pszSubVer = ""; static const bool VERSION_IS_BETA = true; diff --git a/src/sha256.cpp b/src/sha256.cpp deleted file mode 100644 index ca116bdcd3..0000000000 --- a/src/sha256.cpp +++ /dev/null @@ -1,475 +0,0 @@ -// Copyright (c) 2010 Nils Schneider -// Distributed under the MIT/X11 software license, see the accompanying -// file license.txt or http://www.opensource.org/licenses/mit-license.php. - -// 4-way 128-bit SSE2 SHA-256 - -#ifdef FOURWAYSSE2 - -#include <string.h> -#include <assert.h> - -#include <xmmintrin.h> -#include <stdint.h> -#include <stdio.h> - -#define NPAR 32 - -extern void DoubleBlockSHA256(const void* pin, void* pout, const void* pinit, unsigned int hash[8][NPAR], const void* init2); - -static const unsigned int sha256_consts[] = { - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, /* 0 */ - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, /* 8 */ - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, /* 16 */ - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, /* 24 */ - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, /* 32 */ - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, /* 40 */ - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, /* 48 */ - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, /* 56 */ - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 -}; - - -static inline __m128i Ch(const __m128i b, const __m128i c, const __m128i d) { - return (b & c) ^ (~b & d); -} - -static inline __m128i Maj(const __m128i b, const __m128i c, const __m128i d) { - return (b & c) ^ (b & d) ^ (c & d); -} - -static inline __m128i ROTR(__m128i x, const int n) { - return _mm_srli_epi32(x, n) | _mm_slli_epi32(x, 32 - n); -} - -static inline __m128i SHR(__m128i x, const int n) { - return _mm_srli_epi32(x, n); -} - -/* SHA256 Functions */ -#define BIGSIGMA0_256(x) (ROTR((x), 2) ^ ROTR((x), 13) ^ ROTR((x), 22)) -#define BIGSIGMA1_256(x) (ROTR((x), 6) ^ ROTR((x), 11) ^ ROTR((x), 25)) -#define SIGMA0_256(x) (ROTR((x), 7) ^ ROTR((x), 18) ^ SHR((x), 3)) -#define SIGMA1_256(x) (ROTR((x), 17) ^ ROTR((x), 19) ^ SHR((x), 10)) - -static inline unsigned int store32(const __m128i x, int i) { - union { unsigned int ret[4]; __m128i x; } box; - box.x = x; - return box.ret[i]; -} - -static inline void store_epi32(const __m128i x, unsigned int *x0, unsigned int *x1, unsigned int *x2, unsigned int *x3) { - union { unsigned int ret[4]; __m128i x; } box; - box.x = x; - *x0 = box.ret[3]; *x1 = box.ret[2]; *x2 = box.ret[1]; *x3 = box.ret[0]; -} - -#define add4(x0, x1, x2, x3) _mm_add_epi32(_mm_add_epi32(_mm_add_epi32(x0, x1), x2), x3) -#define add5(x0, x1, x2, x3, x4) _mm_add_epi32(add4(x0, x1, x2, x3), x4) - -#define SHA256ROUND(a, b, c, d, e, f, g, h, i, w) \ - T1 = add5(h, BIGSIGMA1_256(e), Ch(e, f, g), _mm_set1_epi32(sha256_consts[i]), w); \ -d = _mm_add_epi32(d, T1); \ -h = _mm_add_epi32(T1, _mm_add_epi32(BIGSIGMA0_256(a), Maj(a, b, c))); - -static inline void dumpreg(__m128i x, char *msg) { - union { unsigned int ret[4]; __m128i x; } box; - box.x = x ; - printf("%s %08x %08x %08x %08x\n", msg, box.ret[0], box.ret[1], box.ret[2], box.ret[3]); -} - -#if 1 -#define dumpstate(i) printf("%s: %08x %08x %08x %08x %08x %08x %08x %08x %08x\n", \ - __func__, store32(w0, i), store32(a, i), store32(b, i), store32(c, i), store32(d, i), store32(e, i), store32(f, i), store32(g, i), store32(h, i)); -#else -#define dumpstate() -#endif - -// Align by increasing pointer, must have extra space at end of buffer -template <size_t nBytes, typename T> -T* alignup(T* p) -{ - union - { - T* ptr; - size_t n; - } u; - u.ptr = p; - u.n = (u.n + (nBytes-1)) & ~(nBytes-1); - return u.ptr; -} - -static const unsigned int pSHA256InitState[8] = -{0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19}; - - -unsigned int ScanHash_4WaySSE2(char* pmidstate, char* pdata, char* phash1, char* phash, unsigned int& nHashesDone) -{ - unsigned int& nNonce = *(unsigned int*)(pdata + 12); - for (;;) - { - nNonce += NPAR; - unsigned int thashbuf[9][NPAR]; - unsigned int (&thash)[9][NPAR] = *alignup<16>(&thashbuf); - DoubleBlockSHA256(pdata, phash1, pmidstate, thash, pSHA256InitState); - - for (int j = 0; j < NPAR; j++) - { - if (thash[7][j] == 0) - { - for (int i = 0; i < 32/4; i++) - ((unsigned int*)phash)[i] = thash[i][j]; - return nNonce + j; - } - } - - if ((nNonce & 0xffff) == 0) - { - nHashesDone = 0xffff+1; - return -1; - } - } -} - - -void DoubleBlockSHA256(const void* pin, void* pad, const void *pre, unsigned int thash[9][NPAR], const void *init) -{ - unsigned int* In = (unsigned int*)pin; - unsigned int* Pad = (unsigned int*)pad; - unsigned int* hPre = (unsigned int*)pre; - unsigned int* hInit = (unsigned int*)init; - unsigned int i, j, k; - - /* vectors used in calculation */ - __m128i w0, w1, w2, w3, w4, w5, w6, w7; - __m128i w8, w9, w10, w11, w12, w13, w14, w15; - __m128i T1; - __m128i a, b, c, d, e, f, g, h; - __m128i nonce; - - /* nonce offset for vector */ - __m128i offset = _mm_set_epi32(0x00000003, 0x00000002, 0x00000001, 0x00000000); - - - for(k = 0; k<NPAR; k+=4) { - w0 = _mm_set1_epi32(In[0]); - w1 = _mm_set1_epi32(In[1]); - w2 = _mm_set1_epi32(In[2]); - //w3 = _mm_set1_epi32(In[3]); nonce will be later hacked into the hash - w4 = _mm_set1_epi32(In[4]); - w5 = _mm_set1_epi32(In[5]); - w6 = _mm_set1_epi32(In[6]); - w7 = _mm_set1_epi32(In[7]); - w8 = _mm_set1_epi32(In[8]); - w9 = _mm_set1_epi32(In[9]); - w10 = _mm_set1_epi32(In[10]); - w11 = _mm_set1_epi32(In[11]); - w12 = _mm_set1_epi32(In[12]); - w13 = _mm_set1_epi32(In[13]); - w14 = _mm_set1_epi32(In[14]); - w15 = _mm_set1_epi32(In[15]); - - /* hack nonce into lowest byte of w3 */ - nonce = _mm_set1_epi32(In[3]); - nonce = _mm_add_epi32(nonce, offset); - nonce = _mm_add_epi32(nonce, _mm_set1_epi32(k)); - w3 = nonce; - - a = _mm_set1_epi32(hPre[0]); - b = _mm_set1_epi32(hPre[1]); - c = _mm_set1_epi32(hPre[2]); - d = _mm_set1_epi32(hPre[3]); - e = _mm_set1_epi32(hPre[4]); - f = _mm_set1_epi32(hPre[5]); - g = _mm_set1_epi32(hPre[6]); - h = _mm_set1_epi32(hPre[7]); - - SHA256ROUND(a, b, c, d, e, f, g, h, 0, w0); - SHA256ROUND(h, a, b, c, d, e, f, g, 1, w1); - SHA256ROUND(g, h, a, b, c, d, e, f, 2, w2); - SHA256ROUND(f, g, h, a, b, c, d, e, 3, w3); - SHA256ROUND(e, f, g, h, a, b, c, d, 4, w4); - SHA256ROUND(d, e, f, g, h, a, b, c, 5, w5); - SHA256ROUND(c, d, e, f, g, h, a, b, 6, w6); - SHA256ROUND(b, c, d, e, f, g, h, a, 7, w7); - SHA256ROUND(a, b, c, d, e, f, g, h, 8, w8); - SHA256ROUND(h, a, b, c, d, e, f, g, 9, w9); - SHA256ROUND(g, h, a, b, c, d, e, f, 10, w10); - SHA256ROUND(f, g, h, a, b, c, d, e, 11, w11); - SHA256ROUND(e, f, g, h, a, b, c, d, 12, w12); - SHA256ROUND(d, e, f, g, h, a, b, c, 13, w13); - SHA256ROUND(c, d, e, f, g, h, a, b, 14, w14); - SHA256ROUND(b, c, d, e, f, g, h, a, 15, w15); - - w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0); - SHA256ROUND(a, b, c, d, e, f, g, h, 16, w0); - w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1); - SHA256ROUND(h, a, b, c, d, e, f, g, 17, w1); - w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2); - SHA256ROUND(g, h, a, b, c, d, e, f, 18, w2); - w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3); - SHA256ROUND(f, g, h, a, b, c, d, e, 19, w3); - w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4); - SHA256ROUND(e, f, g, h, a, b, c, d, 20, w4); - w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5); - SHA256ROUND(d, e, f, g, h, a, b, c, 21, w5); - w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6); - SHA256ROUND(c, d, e, f, g, h, a, b, 22, w6); - w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7); - SHA256ROUND(b, c, d, e, f, g, h, a, 23, w7); - w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8); - SHA256ROUND(a, b, c, d, e, f, g, h, 24, w8); - w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9); - SHA256ROUND(h, a, b, c, d, e, f, g, 25, w9); - w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10); - SHA256ROUND(g, h, a, b, c, d, e, f, 26, w10); - w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11); - SHA256ROUND(f, g, h, a, b, c, d, e, 27, w11); - w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12); - SHA256ROUND(e, f, g, h, a, b, c, d, 28, w12); - w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13); - SHA256ROUND(d, e, f, g, h, a, b, c, 29, w13); - w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14); - SHA256ROUND(c, d, e, f, g, h, a, b, 30, w14); - w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15); - SHA256ROUND(b, c, d, e, f, g, h, a, 31, w15); - - w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0); - SHA256ROUND(a, b, c, d, e, f, g, h, 32, w0); - w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1); - SHA256ROUND(h, a, b, c, d, e, f, g, 33, w1); - w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2); - SHA256ROUND(g, h, a, b, c, d, e, f, 34, w2); - w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3); - SHA256ROUND(f, g, h, a, b, c, d, e, 35, w3); - w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4); - SHA256ROUND(e, f, g, h, a, b, c, d, 36, w4); - w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5); - SHA256ROUND(d, e, f, g, h, a, b, c, 37, w5); - w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6); - SHA256ROUND(c, d, e, f, g, h, a, b, 38, w6); - w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7); - SHA256ROUND(b, c, d, e, f, g, h, a, 39, w7); - w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8); - SHA256ROUND(a, b, c, d, e, f, g, h, 40, w8); - w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9); - SHA256ROUND(h, a, b, c, d, e, f, g, 41, w9); - w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10); - SHA256ROUND(g, h, a, b, c, d, e, f, 42, w10); - w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11); - SHA256ROUND(f, g, h, a, b, c, d, e, 43, w11); - w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12); - SHA256ROUND(e, f, g, h, a, b, c, d, 44, w12); - w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13); - SHA256ROUND(d, e, f, g, h, a, b, c, 45, w13); - w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14); - SHA256ROUND(c, d, e, f, g, h, a, b, 46, w14); - w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15); - SHA256ROUND(b, c, d, e, f, g, h, a, 47, w15); - - w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0); - SHA256ROUND(a, b, c, d, e, f, g, h, 48, w0); - w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1); - SHA256ROUND(h, a, b, c, d, e, f, g, 49, w1); - w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2); - SHA256ROUND(g, h, a, b, c, d, e, f, 50, w2); - w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3); - SHA256ROUND(f, g, h, a, b, c, d, e, 51, w3); - w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4); - SHA256ROUND(e, f, g, h, a, b, c, d, 52, w4); - w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5); - SHA256ROUND(d, e, f, g, h, a, b, c, 53, w5); - w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6); - SHA256ROUND(c, d, e, f, g, h, a, b, 54, w6); - w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7); - SHA256ROUND(b, c, d, e, f, g, h, a, 55, w7); - w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8); - SHA256ROUND(a, b, c, d, e, f, g, h, 56, w8); - w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9); - SHA256ROUND(h, a, b, c, d, e, f, g, 57, w9); - w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10); - SHA256ROUND(g, h, a, b, c, d, e, f, 58, w10); - w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11); - SHA256ROUND(f, g, h, a, b, c, d, e, 59, w11); - w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12); - SHA256ROUND(e, f, g, h, a, b, c, d, 60, w12); - w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13); - SHA256ROUND(d, e, f, g, h, a, b, c, 61, w13); - w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14); - SHA256ROUND(c, d, e, f, g, h, a, b, 62, w14); - w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15); - SHA256ROUND(b, c, d, e, f, g, h, a, 63, w15); - -#define store_load(x, i, dest) \ - T1 = _mm_set1_epi32((hPre)[i]); \ - dest = _mm_add_epi32(T1, x); - - store_load(a, 0, w0); - store_load(b, 1, w1); - store_load(c, 2, w2); - store_load(d, 3, w3); - store_load(e, 4, w4); - store_load(f, 5, w5); - store_load(g, 6, w6); - store_load(h, 7, w7); - - w8 = _mm_set1_epi32(Pad[8]); - w9 = _mm_set1_epi32(Pad[9]); - w10 = _mm_set1_epi32(Pad[10]); - w11 = _mm_set1_epi32(Pad[11]); - w12 = _mm_set1_epi32(Pad[12]); - w13 = _mm_set1_epi32(Pad[13]); - w14 = _mm_set1_epi32(Pad[14]); - w15 = _mm_set1_epi32(Pad[15]); - - a = _mm_set1_epi32(hInit[0]); - b = _mm_set1_epi32(hInit[1]); - c = _mm_set1_epi32(hInit[2]); - d = _mm_set1_epi32(hInit[3]); - e = _mm_set1_epi32(hInit[4]); - f = _mm_set1_epi32(hInit[5]); - g = _mm_set1_epi32(hInit[6]); - h = _mm_set1_epi32(hInit[7]); - - SHA256ROUND(a, b, c, d, e, f, g, h, 0, w0); - SHA256ROUND(h, a, b, c, d, e, f, g, 1, w1); - SHA256ROUND(g, h, a, b, c, d, e, f, 2, w2); - SHA256ROUND(f, g, h, a, b, c, d, e, 3, w3); - SHA256ROUND(e, f, g, h, a, b, c, d, 4, w4); - SHA256ROUND(d, e, f, g, h, a, b, c, 5, w5); - SHA256ROUND(c, d, e, f, g, h, a, b, 6, w6); - SHA256ROUND(b, c, d, e, f, g, h, a, 7, w7); - SHA256ROUND(a, b, c, d, e, f, g, h, 8, w8); - SHA256ROUND(h, a, b, c, d, e, f, g, 9, w9); - SHA256ROUND(g, h, a, b, c, d, e, f, 10, w10); - SHA256ROUND(f, g, h, a, b, c, d, e, 11, w11); - SHA256ROUND(e, f, g, h, a, b, c, d, 12, w12); - SHA256ROUND(d, e, f, g, h, a, b, c, 13, w13); - SHA256ROUND(c, d, e, f, g, h, a, b, 14, w14); - SHA256ROUND(b, c, d, e, f, g, h, a, 15, w15); - - w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0); - SHA256ROUND(a, b, c, d, e, f, g, h, 16, w0); - w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1); - SHA256ROUND(h, a, b, c, d, e, f, g, 17, w1); - w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2); - SHA256ROUND(g, h, a, b, c, d, e, f, 18, w2); - w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3); - SHA256ROUND(f, g, h, a, b, c, d, e, 19, w3); - w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4); - SHA256ROUND(e, f, g, h, a, b, c, d, 20, w4); - w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5); - SHA256ROUND(d, e, f, g, h, a, b, c, 21, w5); - w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6); - SHA256ROUND(c, d, e, f, g, h, a, b, 22, w6); - w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7); - SHA256ROUND(b, c, d, e, f, g, h, a, 23, w7); - w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8); - SHA256ROUND(a, b, c, d, e, f, g, h, 24, w8); - w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9); - SHA256ROUND(h, a, b, c, d, e, f, g, 25, w9); - w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10); - SHA256ROUND(g, h, a, b, c, d, e, f, 26, w10); - w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11); - SHA256ROUND(f, g, h, a, b, c, d, e, 27, w11); - w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12); - SHA256ROUND(e, f, g, h, a, b, c, d, 28, w12); - w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13); - SHA256ROUND(d, e, f, g, h, a, b, c, 29, w13); - w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14); - SHA256ROUND(c, d, e, f, g, h, a, b, 30, w14); - w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15); - SHA256ROUND(b, c, d, e, f, g, h, a, 31, w15); - - w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0); - SHA256ROUND(a, b, c, d, e, f, g, h, 32, w0); - w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1); - SHA256ROUND(h, a, b, c, d, e, f, g, 33, w1); - w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2); - SHA256ROUND(g, h, a, b, c, d, e, f, 34, w2); - w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3); - SHA256ROUND(f, g, h, a, b, c, d, e, 35, w3); - w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4); - SHA256ROUND(e, f, g, h, a, b, c, d, 36, w4); - w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5); - SHA256ROUND(d, e, f, g, h, a, b, c, 37, w5); - w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6); - SHA256ROUND(c, d, e, f, g, h, a, b, 38, w6); - w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7); - SHA256ROUND(b, c, d, e, f, g, h, a, 39, w7); - w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8); - SHA256ROUND(a, b, c, d, e, f, g, h, 40, w8); - w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9); - SHA256ROUND(h, a, b, c, d, e, f, g, 41, w9); - w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10); - SHA256ROUND(g, h, a, b, c, d, e, f, 42, w10); - w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11); - SHA256ROUND(f, g, h, a, b, c, d, e, 43, w11); - w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12); - SHA256ROUND(e, f, g, h, a, b, c, d, 44, w12); - w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13); - SHA256ROUND(d, e, f, g, h, a, b, c, 45, w13); - w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14); - SHA256ROUND(c, d, e, f, g, h, a, b, 46, w14); - w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15); - SHA256ROUND(b, c, d, e, f, g, h, a, 47, w15); - - w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0); - SHA256ROUND(a, b, c, d, e, f, g, h, 48, w0); - w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1); - SHA256ROUND(h, a, b, c, d, e, f, g, 49, w1); - w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2); - SHA256ROUND(g, h, a, b, c, d, e, f, 50, w2); - w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3); - SHA256ROUND(f, g, h, a, b, c, d, e, 51, w3); - w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4); - SHA256ROUND(e, f, g, h, a, b, c, d, 52, w4); - w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5); - SHA256ROUND(d, e, f, g, h, a, b, c, 53, w5); - w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6); - SHA256ROUND(c, d, e, f, g, h, a, b, 54, w6); - w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7); - SHA256ROUND(b, c, d, e, f, g, h, a, 55, w7); - w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8); - SHA256ROUND(a, b, c, d, e, f, g, h, 56, w8); - w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9); - SHA256ROUND(h, a, b, c, d, e, f, g, 57, w9); - w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10); - SHA256ROUND(g, h, a, b, c, d, e, f, 58, w10); - w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11); - SHA256ROUND(f, g, h, a, b, c, d, e, 59, w11); - w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12); - SHA256ROUND(e, f, g, h, a, b, c, d, 60, w12); - w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13); - SHA256ROUND(d, e, f, g, h, a, b, c, 61, w13); - w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14); - SHA256ROUND(c, d, e, f, g, h, a, b, 62, w14); - w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15); - SHA256ROUND(b, c, d, e, f, g, h, a, 63, w15); - - /* store resulsts directly in thash */ -#define store_2(x,i) \ - w0 = _mm_set1_epi32(hInit[i]); \ - *(__m128i *)&(thash)[i][0+k] = _mm_add_epi32(w0, x); - - store_2(a, 0); - store_2(b, 1); - store_2(c, 2); - store_2(d, 3); - store_2(e, 4); - store_2(f, 5); - store_2(g, 6); - store_2(h, 7); - *(__m128i *)&(thash)[8][0+k] = nonce; - } - -} - -#endif // FOURWAYSSE2 diff --git a/src/ui.cpp b/src/ui.cpp index 2277da6a3a..f2bdd49d55 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -1094,12 +1094,6 @@ void CMainFrame::OnMenuFileExit(wxCommandEvent& event) Close(true); } -void CMainFrame::OnMenuOptionsGenerate(wxCommandEvent& event) -{ - // Options->Generate Coins - GenerateBitcoins(event.IsChecked()); -} - void CMainFrame::OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event) { event.Check(fGenerateBitcoins); @@ -1655,13 +1649,6 @@ COptionsDialog::COptionsDialog(wxWindow* parent) : COptionsDialogBase(parent) // Init values m_textCtrlTransactionFee->SetValue(FormatMoney(nTransactionFee)); - m_checkBoxLimitProcessors->SetValue(fLimitProcessors); - m_spinCtrlLimitProcessors->Enable(fLimitProcessors); - m_spinCtrlLimitProcessors->SetValue(nLimitProcessors); - int nProcessors = wxThread::GetCPUCount(); - if (nProcessors < 1) - nProcessors = 999; - m_spinCtrlLimitProcessors->SetRange(1, nProcessors); m_checkBoxStartOnSystemStartup->SetValue(fTmpStartOnSystemStartup = GetStartOnSystemStartup()); m_checkBoxMinimizeToTray->SetValue(fMinimizeToTray); m_checkBoxMinimizeOnClose->SetValue(fMinimizeOnClose); @@ -1702,11 +1689,6 @@ void COptionsDialog::OnKillFocusTransactionFee(wxFocusEvent& event) m_textCtrlTransactionFee->SetValue(FormatMoney(nTmp)); } -void COptionsDialog::OnCheckBoxLimitProcessors(wxCommandEvent& event) -{ - m_spinCtrlLimitProcessors->Enable(event.IsChecked()); -} - void COptionsDialog::OnCheckBoxUseProxy(wxCommandEvent& event) { m_textCtrlProxyIP->Enable(event.IsChecked()); @@ -1755,20 +1737,6 @@ void COptionsDialog::OnButtonApply(wxCommandEvent& event) if (ParseMoney(m_textCtrlTransactionFee->GetValue(), nTransactionFee) && nTransactionFee != nPrevTransactionFee) walletdb.WriteSetting("nTransactionFee", nTransactionFee); - int nPrevMaxProc = (fLimitProcessors ? nLimitProcessors : INT_MAX); - if (fLimitProcessors != m_checkBoxLimitProcessors->GetValue()) - { - fLimitProcessors = m_checkBoxLimitProcessors->GetValue(); - walletdb.WriteSetting("fLimitProcessors", fLimitProcessors); - } - if (nLimitProcessors != m_spinCtrlLimitProcessors->GetValue()) - { - nLimitProcessors = m_spinCtrlLimitProcessors->GetValue(); - walletdb.WriteSetting("nLimitProcessors", nLimitProcessors); - } - if (fGenerateBitcoins && (fLimitProcessors ? nLimitProcessors : INT_MAX) > nPrevMaxProc) - GenerateBitcoins(fGenerateBitcoins); - if (fTmpStartOnSystemStartup != m_checkBoxStartOnSystemStartup->GetValue()) { fTmpStartOnSystemStartup = m_checkBoxStartOnSystemStartup->GetValue(); @@ -1859,6 +1827,7 @@ CSendDialog::CSendDialog(wxWindow* parent, const wxString& strAddress) : CSendDi m_bitmapCheckMark->Show(false); fEnabledPrev = true; m_textCtrlAddress->SetFocus(); + //// todo: should add a display of your balance for convenience #ifndef __WXMSW__ wxFont fontTmp = m_staticTextInstructions->GetFont(); @@ -1867,7 +1836,7 @@ CSendDialog::CSendDialog(wxWindow* parent, const wxString& strAddress) : CSendDi m_staticTextInstructions->SetFont(fontTmp); SetSize(725, 180); #endif - + // Set Icon wxIcon iconSend; iconSend.CopyFromBitmap(wxBitmap(send16noshadow_xpm)); @@ -1960,6 +1929,7 @@ void CSendDialog::OnButtonSend(wxCommandEvent& event) { wxMessageBox(strError + " ", _("Sending...")); EndModal(false); + return; } } } @@ -2605,6 +2575,7 @@ void CAddressBookDialog::OnClose(wxCloseEvent& event) enum { ID_TASKBAR_RESTORE = 10001, + ID_TASKBAR_SEND, ID_TASKBAR_OPTIONS, ID_TASKBAR_GENERATE, ID_TASKBAR_EXIT, @@ -2613,8 +2584,8 @@ enum BEGIN_EVENT_TABLE(CMyTaskBarIcon, wxTaskBarIcon) EVT_TASKBAR_LEFT_DCLICK(CMyTaskBarIcon::OnLeftButtonDClick) EVT_MENU(ID_TASKBAR_RESTORE, CMyTaskBarIcon::OnMenuRestore) + EVT_MENU(ID_TASKBAR_SEND, CMyTaskBarIcon::OnMenuSend) EVT_MENU(ID_TASKBAR_OPTIONS, CMyTaskBarIcon::OnMenuOptions) - EVT_MENU(ID_TASKBAR_GENERATE, CMyTaskBarIcon::OnMenuGenerate) EVT_UPDATE_UI(ID_TASKBAR_GENERATE, CMyTaskBarIcon::OnUpdateUIGenerate) EVT_MENU(ID_TASKBAR_EXIT, CMyTaskBarIcon::OnMenuExit) END_EVENT_TABLE() @@ -2665,6 +2636,13 @@ void CMyTaskBarIcon::OnMenuRestore(wxCommandEvent& event) Restore(); } +void CMyTaskBarIcon::OnMenuSend(wxCommandEvent& event) +{ + // Taskbar: Send + CSendDialog dialog(pframeMain); + dialog.ShowModal(); +} + void CMyTaskBarIcon::OnMenuOptions(wxCommandEvent& event) { // Since it's modal, get the main window to do it @@ -2681,11 +2659,6 @@ void CMyTaskBarIcon::Restore() pframeMain->Raise(); } -void CMyTaskBarIcon::OnMenuGenerate(wxCommandEvent& event) -{ - GenerateBitcoins(event.IsChecked()); -} - void CMyTaskBarIcon::OnUpdateUIGenerate(wxUpdateUIEvent& event) { event.Check(fGenerateBitcoins); @@ -2706,8 +2679,8 @@ wxMenu* CMyTaskBarIcon::CreatePopupMenu() { wxMenu* pmenu = new wxMenu; pmenu->Append(ID_TASKBAR_RESTORE, _("&Open Bitcoin")); + pmenu->Append(ID_TASKBAR_SEND, _("&Send Bitcoins")); pmenu->Append(ID_TASKBAR_OPTIONS, _("O&ptions...")); - pmenu->AppendCheckItem(ID_TASKBAR_GENERATE, _("&Generate Coins"))->Check(fGenerateBitcoins); #ifndef __WXMAC_OSX__ // Mac has built-in quit menu pmenu->AppendSeparator(); pmenu->Append(ID_TASKBAR_EXIT, _("E&xit")); @@ -2839,9 +2812,6 @@ bool CMyApp::OnInit() extern int g_isPainting; g_isPainting = 10000; #endif -#ifdef GUI - wxImage::AddHandler(new wxPNGHandler); -#endif #if defined(__WXMSW__ ) || defined(__WXMAC_OSX__) SetAppName("Bitcoin"); #else @@ -52,7 +52,6 @@ protected: void OnPaint(wxPaintEvent& event); void OnPaintListCtrl(wxPaintEvent& event); void OnMenuFileExit(wxCommandEvent& event); - void OnMenuOptionsGenerate(wxCommandEvent& event); void OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event); void OnMenuOptionsChangeYourAddress(wxCommandEvent& event); void OnMenuOptionsOptions(wxCommandEvent& event); @@ -127,7 +126,6 @@ protected: // Event handlers void OnListBox(wxCommandEvent& event); void OnKillFocusTransactionFee(wxFocusEvent& event); - void OnCheckBoxLimitProcessors(wxCommandEvent& event); void OnCheckBoxUseProxy(wxCommandEvent& event); void OnKillFocusProxy(wxFocusEvent& event); @@ -323,6 +321,7 @@ protected: // Event handlers void OnLeftButtonDClick(wxTaskBarIconEvent& event); void OnMenuRestore(wxCommandEvent& event); + void OnMenuSend(wxCommandEvent& event); void OnMenuOptions(wxCommandEvent& event); void OnUpdateUIGenerate(wxUpdateUIEvent& event); void OnMenuGenerate(wxCommandEvent& event); diff --git a/src/uibase.cpp b/src/uibase.cpp index 41be5d7527..1b901a1edb 100644 --- a/src/uibase.cpp +++ b/src/uibase.cpp @@ -28,10 +28,6 @@ CMainFrameBase::CMainFrameBase( wxWindow* parent, wxWindowID id, const wxString& m_menubar->Append( m_menuFile, _("&File") ); m_menuOptions = new wxMenu(); - wxMenuItem* m_menuOptionsGenerateBitcoins; - m_menuOptionsGenerateBitcoins = new wxMenuItem( m_menuOptions, wxID_OPTIONSGENERATEBITCOINS, wxString( _("&Generate Coins") ) , wxEmptyString, wxITEM_CHECK ); - m_menuOptions->Append( m_menuOptionsGenerateBitcoins ); - wxMenuItem* m_menuOptionsChangeYourAddress; m_menuOptionsChangeYourAddress = new wxMenuItem( m_menuOptions, wxID_ANY, wxString( _("&Your Receiving Addresses...") ) , wxEmptyString, wxITEM_NORMAL ); m_menuOptions->Append( m_menuOptionsChangeYourAddress ); @@ -190,8 +186,6 @@ CMainFrameBase::CMainFrameBase( wxWindow* parent, wxWindowID id, const wxString& this->Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( CMainFrameBase::OnMouseEvents ) ); this->Connect( wxEVT_PAINT, wxPaintEventHandler( CMainFrameBase::OnPaint ) ); this->Connect( m_menuFileExit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuFileExit ) ); - this->Connect( m_menuOptionsGenerateBitcoins->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuOptionsGenerate ) ); - this->Connect( m_menuOptionsGenerateBitcoins->GetId(), wxEVT_UPDATE_UI, wxUpdateUIEventHandler( CMainFrameBase::OnUpdateUIOptionsGenerate ) ); this->Connect( m_menuOptionsChangeYourAddress->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuOptionsChangeYourAddress ) ); this->Connect( m_menuOptionsOptions->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuOptionsOptions ) ); this->Connect( m_menuHelpAbout->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuHelpAbout ) ); @@ -250,8 +244,6 @@ CMainFrameBase::~CMainFrameBase() this->Disconnect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( CMainFrameBase::OnMouseEvents ) ); this->Disconnect( wxEVT_PAINT, wxPaintEventHandler( CMainFrameBase::OnPaint ) ); this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuFileExit ) ); - this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuOptionsGenerate ) ); - this->Disconnect( wxID_ANY, wxEVT_UPDATE_UI, wxUpdateUIEventHandler( CMainFrameBase::OnUpdateUIOptionsGenerate ) ); this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuOptionsChangeYourAddress ) ); this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuOptionsOptions ) ); this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( CMainFrameBase::OnMenuHelpAbout ) ); @@ -350,21 +342,6 @@ COptionsDialogBase::COptionsDialogBase( wxWindow* parent, wxWindowID id, const w bSizer69->Add( 0, 16, 0, wxEXPAND, 5 ); - wxBoxSizer* bSizer71; - bSizer71 = new wxBoxSizer( wxHORIZONTAL ); - - m_checkBoxLimitProcessors = new wxCheckBox( m_panelMain, wxID_ANY, _("&Limit coin generation to"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer71->Add( m_checkBoxLimitProcessors, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_spinCtrlLimitProcessors = new wxSpinCtrl( m_panelMain, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 48,-1 ), wxSP_ARROW_KEYS, 1, 999, 1 ); - bSizer71->Add( m_spinCtrlLimitProcessors, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticText35 = new wxStaticText( m_panelMain, wxID_ANY, _("processors"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText35->Wrap( -1 ); - bSizer71->Add( m_staticText35, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - bSizer69->Add( bSizer71, 0, 0, 5 ); - m_checkBoxStartOnSystemStartup = new wxCheckBox( m_panelMain, wxID_ANY, _("&Start Bitcoin on system startup"), wxDefaultPosition, wxDefaultSize, 0 ); bSizer69->Add( m_checkBoxStartOnSystemStartup, 0, wxALL, 5 ); @@ -479,7 +456,6 @@ COptionsDialogBase::COptionsDialogBase( wxWindow* parent, wxWindowID id, const w // Connect Events m_listBox->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( COptionsDialogBase::OnListBox ), NULL, this ); - m_checkBoxLimitProcessors->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( COptionsDialogBase::OnCheckBoxLimitProcessors ), NULL, this ); m_checkBoxMinimizeToTray->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( COptionsDialogBase::OnCheckBoxMinimizeToTray ), NULL, this ); m_checkBoxUseProxy->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( COptionsDialogBase::OnCheckBoxUseProxy ), NULL, this ); m_textCtrlProxyIP->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( COptionsDialogBase::OnKillFocusProxy ), NULL, this ); @@ -494,7 +470,6 @@ COptionsDialogBase::~COptionsDialogBase() { // Disconnect Events m_listBox->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( COptionsDialogBase::OnListBox ), NULL, this ); - m_checkBoxLimitProcessors->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( COptionsDialogBase::OnCheckBoxLimitProcessors ), NULL, this ); m_checkBoxMinimizeToTray->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( COptionsDialogBase::OnCheckBoxMinimizeToTray ), NULL, this ); m_checkBoxUseProxy->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( COptionsDialogBase::OnCheckBoxUseProxy ), NULL, this ); m_textCtrlProxyIP->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( COptionsDialogBase::OnKillFocusProxy ), NULL, this ); diff --git a/src/uibase.h b/src/uibase.h index c5da8f5081..78f3d1b385 100644 --- a/src/uibase.h +++ b/src/uibase.h @@ -34,36 +34,34 @@ #include <wx/dialog.h> #include <wx/listbox.h> #include <wx/checkbox.h> -#include <wx/spinctrl.h> #include <wx/scrolwin.h> #include <wx/statbmp.h> /////////////////////////////////////////////////////////////////////////// #define wxID_MAINFRAME 1000 -#define wxID_OPTIONSGENERATEBITCOINS 1001 -#define wxID_BUTTONSEND 1002 -#define wxID_BUTTONRECEIVE 1003 -#define wxID_TEXTCTRLADDRESS 1004 -#define wxID_BUTTONNEW 1005 -#define wxID_BUTTONCOPY 1006 -#define wxID_PROXYIP 1007 -#define wxID_PROXYPORT 1008 -#define wxID_TRANSACTIONFEE 1009 -#define wxID_TEXTCTRLPAYTO 1010 -#define wxID_BUTTONPASTE 1011 -#define wxID_BUTTONADDRESSBOOK 1012 -#define wxID_TEXTCTRLAMOUNT 1013 -#define wxID_CHOICETRANSFERTYPE 1014 -#define wxID_LISTCTRL 1015 -#define wxID_BUTTONRENAME 1016 -#define wxID_PANELSENDING 1017 -#define wxID_LISTCTRLSENDING 1018 -#define wxID_PANELRECEIVING 1019 -#define wxID_LISTCTRLRECEIVING 1020 -#define wxID_BUTTONDELETE 1021 -#define wxID_BUTTONEDIT 1022 -#define wxID_TEXTCTRL 1023 +#define wxID_BUTTONSEND 1001 +#define wxID_BUTTONRECEIVE 1002 +#define wxID_TEXTCTRLADDRESS 1003 +#define wxID_BUTTONNEW 1004 +#define wxID_BUTTONCOPY 1005 +#define wxID_PROXYIP 1006 +#define wxID_PROXYPORT 1007 +#define wxID_TRANSACTIONFEE 1008 +#define wxID_TEXTCTRLPAYTO 1009 +#define wxID_BUTTONPASTE 1010 +#define wxID_BUTTONADDRESSBOOK 1011 +#define wxID_TEXTCTRLAMOUNT 1012 +#define wxID_CHOICETRANSFERTYPE 1013 +#define wxID_LISTCTRL 1014 +#define wxID_BUTTONRENAME 1015 +#define wxID_PANELSENDING 1016 +#define wxID_LISTCTRLSENDING 1017 +#define wxID_PANELRECEIVING 1018 +#define wxID_LISTCTRLRECEIVING 1019 +#define wxID_BUTTONDELETE 1020 +#define wxID_BUTTONEDIT 1021 +#define wxID_TEXTCTRL 1022 /////////////////////////////////////////////////////////////////////////////// /// Class CMainFrameBase @@ -99,8 +97,6 @@ class CMainFrameBase : public wxFrame virtual void OnMouseEvents( wxMouseEvent& event ) { event.Skip(); } virtual void OnPaint( wxPaintEvent& event ) { event.Skip(); } virtual void OnMenuFileExit( wxCommandEvent& event ) { event.Skip(); } - virtual void OnMenuOptionsGenerate( wxCommandEvent& event ) { event.Skip(); } - virtual void OnUpdateUIOptionsGenerate( wxUpdateUIEvent& event ) { event.Skip(); } virtual void OnMenuOptionsChangeYourAddress( wxCommandEvent& event ) { event.Skip(); } virtual void OnMenuOptionsOptions( wxCommandEvent& event ) { event.Skip(); } virtual void OnMenuHelpAbout( wxCommandEvent& event ) { event.Skip(); } @@ -165,9 +161,6 @@ class COptionsDialogBase : public wxDialog wxScrolledWindow* m_scrolledWindow; wxPanel* m_panelMain; - wxCheckBox* m_checkBoxLimitProcessors; - wxSpinCtrl* m_spinCtrlLimitProcessors; - wxStaticText* m_staticText35; wxCheckBox* m_checkBoxStartOnSystemStartup; wxCheckBox* m_checkBoxMinimizeToTray; wxCheckBox* m_checkBoxUseUPnP; @@ -192,7 +185,6 @@ class COptionsDialogBase : public wxDialog // Virtual event handlers, overide them in your derived class virtual void OnListBox( wxCommandEvent& event ) { event.Skip(); } - virtual void OnCheckBoxLimitProcessors( wxCommandEvent& event ) { event.Skip(); } virtual void OnCheckBoxMinimizeToTray( wxCommandEvent& event ) { event.Skip(); } virtual void OnCheckBoxUseProxy( wxCommandEvent& event ) { event.Skip(); } virtual void OnKillFocusProxy( wxFocusEvent& event ) { event.Skip(); } |