Fix CRLF
This commit is contained in:
@@ -1,201 +1,201 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Why base-58 instead of standard base-64 encoding?
|
// Why base-58 instead of standard base-64 encoding?
|
||||||
// - Don't want 0OIl characters that look the same in some fonts and
|
// - Don't want 0OIl characters that look the same in some fonts and
|
||||||
// could be used to create visually identical looking account numbers.
|
// could be used to create visually identical looking account numbers.
|
||||||
// - A string with non-alphanumeric characters is not as easily accepted as an account number.
|
// - A string with non-alphanumeric characters is not as easily accepted as an account number.
|
||||||
// - E-mail usually won't line-break if there's no punctuation to break at.
|
// - E-mail usually won't line-break if there's no punctuation to break at.
|
||||||
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
|
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
||||||
|
|
||||||
|
|
||||||
inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
|
inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
|
||||||
{
|
{
|
||||||
CAutoBN_CTX pctx;
|
CAutoBN_CTX pctx;
|
||||||
CBigNum bn58 = 58;
|
CBigNum bn58 = 58;
|
||||||
CBigNum bn0 = 0;
|
CBigNum bn0 = 0;
|
||||||
|
|
||||||
// Convert big endian data to little endian
|
// Convert big endian data to little endian
|
||||||
// Extra zero at the end make sure bignum will interpret as a positive number
|
// Extra zero at the end make sure bignum will interpret as a positive number
|
||||||
vector<unsigned char> vchTmp(pend-pbegin+1, 0);
|
vector<unsigned char> vchTmp(pend-pbegin+1, 0);
|
||||||
reverse_copy(pbegin, pend, vchTmp.begin());
|
reverse_copy(pbegin, pend, vchTmp.begin());
|
||||||
|
|
||||||
// Convert little endian data to bignum
|
// Convert little endian data to bignum
|
||||||
CBigNum bn;
|
CBigNum bn;
|
||||||
bn.setvch(vchTmp);
|
bn.setvch(vchTmp);
|
||||||
|
|
||||||
// Convert bignum to string
|
// Convert bignum to string
|
||||||
string str;
|
string str;
|
||||||
str.reserve((pend - pbegin) * 138 / 100 + 1);
|
str.reserve((pend - pbegin) * 138 / 100 + 1);
|
||||||
CBigNum dv;
|
CBigNum dv;
|
||||||
CBigNum rem;
|
CBigNum rem;
|
||||||
while (bn > bn0)
|
while (bn > bn0)
|
||||||
{
|
{
|
||||||
if (!BN_div(&dv, &rem, &bn, &bn58, pctx))
|
if (!BN_div(&dv, &rem, &bn, &bn58, pctx))
|
||||||
throw bignum_error("EncodeBase58 : BN_div failed");
|
throw bignum_error("EncodeBase58 : BN_div failed");
|
||||||
bn = dv;
|
bn = dv;
|
||||||
unsigned int c = rem.getulong();
|
unsigned int c = rem.getulong();
|
||||||
str += pszBase58[c];
|
str += pszBase58[c];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Leading zeroes encoded as base58 zeros
|
// Leading zeroes encoded as base58 zeros
|
||||||
for (const unsigned char* p = pbegin; p < pend && *p == 0; p++)
|
for (const unsigned char* p = pbegin; p < pend && *p == 0; p++)
|
||||||
str += pszBase58[0];
|
str += pszBase58[0];
|
||||||
|
|
||||||
// Convert little endian string to big endian
|
// Convert little endian string to big endian
|
||||||
reverse(str.begin(), str.end());
|
reverse(str.begin(), str.end());
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline string EncodeBase58(const vector<unsigned char>& vch)
|
inline string EncodeBase58(const vector<unsigned char>& vch)
|
||||||
{
|
{
|
||||||
return EncodeBase58(&vch[0], &vch[0] + vch.size());
|
return EncodeBase58(&vch[0], &vch[0] + vch.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
|
inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
|
||||||
{
|
{
|
||||||
CAutoBN_CTX pctx;
|
CAutoBN_CTX pctx;
|
||||||
vchRet.clear();
|
vchRet.clear();
|
||||||
CBigNum bn58 = 58;
|
CBigNum bn58 = 58;
|
||||||
CBigNum bn = 0;
|
CBigNum bn = 0;
|
||||||
CBigNum bnChar;
|
CBigNum bnChar;
|
||||||
while (isspace(*psz))
|
while (isspace(*psz))
|
||||||
psz++;
|
psz++;
|
||||||
|
|
||||||
// Convert big endian string to bignum
|
// Convert big endian string to bignum
|
||||||
for (const char* p = psz; *p; p++)
|
for (const char* p = psz; *p; p++)
|
||||||
{
|
{
|
||||||
const char* p1 = strchr(pszBase58, *p);
|
const char* p1 = strchr(pszBase58, *p);
|
||||||
if (p1 == NULL)
|
if (p1 == NULL)
|
||||||
{
|
{
|
||||||
while (isspace(*p))
|
while (isspace(*p))
|
||||||
p++;
|
p++;
|
||||||
if (*p != '\0')
|
if (*p != '\0')
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bnChar.setulong(p1 - pszBase58);
|
bnChar.setulong(p1 - pszBase58);
|
||||||
if (!BN_mul(&bn, &bn, &bn58, pctx))
|
if (!BN_mul(&bn, &bn, &bn58, pctx))
|
||||||
throw bignum_error("DecodeBase58 : BN_mul failed");
|
throw bignum_error("DecodeBase58 : BN_mul failed");
|
||||||
bn += bnChar;
|
bn += bnChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get bignum as little endian data
|
// Get bignum as little endian data
|
||||||
vector<unsigned char> vchTmp = bn.getvch();
|
vector<unsigned char> vchTmp = bn.getvch();
|
||||||
|
|
||||||
// Trim off sign byte if present
|
// Trim off sign byte if present
|
||||||
if (vchTmp.size() >= 2 && vchTmp.end()[-1] == 0 && vchTmp.end()[-2] >= 0x80)
|
if (vchTmp.size() >= 2 && vchTmp.end()[-1] == 0 && vchTmp.end()[-2] >= 0x80)
|
||||||
vchTmp.erase(vchTmp.end()-1);
|
vchTmp.erase(vchTmp.end()-1);
|
||||||
|
|
||||||
// Restore leading zeros
|
// Restore leading zeros
|
||||||
int nLeadingZeros = 0;
|
int nLeadingZeros = 0;
|
||||||
for (const char* p = psz; *p == pszBase58[0]; p++)
|
for (const char* p = psz; *p == pszBase58[0]; p++)
|
||||||
nLeadingZeros++;
|
nLeadingZeros++;
|
||||||
vchRet.assign(nLeadingZeros + vchTmp.size(), 0);
|
vchRet.assign(nLeadingZeros + vchTmp.size(), 0);
|
||||||
|
|
||||||
// Convert little endian data to big endian
|
// Convert little endian data to big endian
|
||||||
reverse_copy(vchTmp.begin(), vchTmp.end(), vchRet.end() - vchTmp.size());
|
reverse_copy(vchTmp.begin(), vchTmp.end(), vchRet.end() - vchTmp.size());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool DecodeBase58(const string& str, vector<unsigned char>& vchRet)
|
inline bool DecodeBase58(const string& str, vector<unsigned char>& vchRet)
|
||||||
{
|
{
|
||||||
return DecodeBase58(str.c_str(), vchRet);
|
return DecodeBase58(str.c_str(), vchRet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline string EncodeBase58Check(const vector<unsigned char>& vchIn)
|
inline string EncodeBase58Check(const vector<unsigned char>& vchIn)
|
||||||
{
|
{
|
||||||
// add 4-byte hash check to the end
|
// add 4-byte hash check to the end
|
||||||
vector<unsigned char> vch(vchIn);
|
vector<unsigned char> vch(vchIn);
|
||||||
uint256 hash = Hash(vch.begin(), vch.end());
|
uint256 hash = Hash(vch.begin(), vch.end());
|
||||||
vch.insert(vch.end(), (unsigned char*)&hash, (unsigned char*)&hash + 4);
|
vch.insert(vch.end(), (unsigned char*)&hash, (unsigned char*)&hash + 4);
|
||||||
return EncodeBase58(vch);
|
return EncodeBase58(vch);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool DecodeBase58Check(const char* psz, vector<unsigned char>& vchRet)
|
inline bool DecodeBase58Check(const char* psz, vector<unsigned char>& vchRet)
|
||||||
{
|
{
|
||||||
if (!DecodeBase58(psz, vchRet))
|
if (!DecodeBase58(psz, vchRet))
|
||||||
return false;
|
return false;
|
||||||
if (vchRet.size() < 4)
|
if (vchRet.size() < 4)
|
||||||
{
|
{
|
||||||
vchRet.clear();
|
vchRet.clear();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
uint256 hash = Hash(vchRet.begin(), vchRet.end()-4);
|
uint256 hash = Hash(vchRet.begin(), vchRet.end()-4);
|
||||||
if (memcmp(&hash, &vchRet.end()[-4], 4) != 0)
|
if (memcmp(&hash, &vchRet.end()[-4], 4) != 0)
|
||||||
{
|
{
|
||||||
vchRet.clear();
|
vchRet.clear();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
vchRet.resize(vchRet.size()-4);
|
vchRet.resize(vchRet.size()-4);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool DecodeBase58Check(const string& str, vector<unsigned char>& vchRet)
|
inline bool DecodeBase58Check(const string& str, vector<unsigned char>& vchRet)
|
||||||
{
|
{
|
||||||
return DecodeBase58Check(str.c_str(), vchRet);
|
return DecodeBase58Check(str.c_str(), vchRet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static const unsigned char ADDRESSVERSION = 0;
|
static const unsigned char ADDRESSVERSION = 0;
|
||||||
|
|
||||||
inline string Hash160ToAddress(uint160 hash160)
|
inline string Hash160ToAddress(uint160 hash160)
|
||||||
{
|
{
|
||||||
// add 1-byte version number to the front
|
// add 1-byte version number to the front
|
||||||
vector<unsigned char> vch(1, ADDRESSVERSION);
|
vector<unsigned char> vch(1, ADDRESSVERSION);
|
||||||
vch.insert(vch.end(), UBEGIN(hash160), UEND(hash160));
|
vch.insert(vch.end(), UBEGIN(hash160), UEND(hash160));
|
||||||
return EncodeBase58Check(vch);
|
return EncodeBase58Check(vch);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool AddressToHash160(const char* psz, uint160& hash160Ret)
|
inline bool AddressToHash160(const char* psz, uint160& hash160Ret)
|
||||||
{
|
{
|
||||||
vector<unsigned char> vch;
|
vector<unsigned char> vch;
|
||||||
if (!DecodeBase58Check(psz, vch))
|
if (!DecodeBase58Check(psz, vch))
|
||||||
return false;
|
return false;
|
||||||
if (vch.empty())
|
if (vch.empty())
|
||||||
return false;
|
return false;
|
||||||
unsigned char nVersion = vch[0];
|
unsigned char nVersion = vch[0];
|
||||||
if (vch.size() != sizeof(hash160Ret) + 1)
|
if (vch.size() != sizeof(hash160Ret) + 1)
|
||||||
return false;
|
return false;
|
||||||
memcpy(&hash160Ret, &vch[1], sizeof(hash160Ret));
|
memcpy(&hash160Ret, &vch[1], sizeof(hash160Ret));
|
||||||
return (nVersion <= ADDRESSVERSION);
|
return (nVersion <= ADDRESSVERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool AddressToHash160(const string& str, uint160& hash160Ret)
|
inline bool AddressToHash160(const string& str, uint160& hash160Ret)
|
||||||
{
|
{
|
||||||
return AddressToHash160(str.c_str(), hash160Ret);
|
return AddressToHash160(str.c_str(), hash160Ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool IsValidBitcoinAddress(const char* psz)
|
inline bool IsValidBitcoinAddress(const char* psz)
|
||||||
{
|
{
|
||||||
uint160 hash160;
|
uint160 hash160;
|
||||||
return AddressToHash160(psz, hash160);
|
return AddressToHash160(psz, hash160);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool IsValidBitcoinAddress(const string& str)
|
inline bool IsValidBitcoinAddress(const string& str)
|
||||||
{
|
{
|
||||||
return IsValidBitcoinAddress(str.c_str());
|
return IsValidBitcoinAddress(str.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline string PubKeyToAddress(const vector<unsigned char>& vchPubKey)
|
inline string PubKeyToAddress(const vector<unsigned char>& vchPubKey)
|
||||||
{
|
{
|
||||||
return Hash160ToAddress(Hash160(vchPubKey));
|
return Hash160ToAddress(Hash160(vchPubKey));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
Known bugs:
|
Known bugs:
|
||||||
- Window flickers when blocks are added (problem with repainting?)
|
- Window flickers when blocks are added (problem with repainting?)
|
||||||
+114
-114
@@ -1,114 +1,114 @@
|
|||||||
Copyright (c) 2009-2010 Satoshi Nakamoto
|
Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
Distributed under the MIT/X11 software license, see the accompanying
|
Distributed under the MIT/X11 software license, see the accompanying
|
||||||
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
This product includes software developed by the OpenSSL Project for use in
|
This product includes software developed by the OpenSSL Project for use in
|
||||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
||||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
||||||
|
|
||||||
|
|
||||||
WINDOWS BUILD NOTES
|
WINDOWS BUILD NOTES
|
||||||
===================
|
===================
|
||||||
|
|
||||||
Compilers Supported
|
Compilers Supported
|
||||||
-------------------
|
-------------------
|
||||||
MinGW GCC (recommended)
|
MinGW GCC (recommended)
|
||||||
|
|
||||||
MSVC 6.0 SP6: You'll need Boost version 1.34 because they dropped support
|
MSVC 6.0 SP6: You'll need Boost version 1.34 because they dropped support
|
||||||
for MSVC 6.0 after that. However, they didn't add Asio until 1.35.
|
for MSVC 6.0 after that. However, they didn't add Asio until 1.35.
|
||||||
You should still be able to build with MSVC 6.0 by adding Asio to 1.34 by
|
You should still be able to build with MSVC 6.0 by adding Asio to 1.34 by
|
||||||
unpacking boost_asio_*.zip into the boost directory:
|
unpacking boost_asio_*.zip into the boost directory:
|
||||||
http://sourceforge.net/projects/asio/files/asio
|
http://sourceforge.net/projects/asio/files/asio
|
||||||
|
|
||||||
MSVC 8.0 (2005) SP1 has been tested. Note: MSVC 7.0 and up have a habit of
|
MSVC 8.0 (2005) SP1 has been tested. Note: MSVC 7.0 and up have a habit of
|
||||||
linking to runtime DLLs that are not installed on XP by default.
|
linking to runtime DLLs that are not installed on XP by default.
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
Dependencies
|
||||||
------------
|
------------
|
||||||
Libraries you need to download separately and build:
|
Libraries you need to download separately and build:
|
||||||
|
|
||||||
default path download
|
default path download
|
||||||
wxWidgets-2.9 \wxwidgets http://www.wxwidgets.org/downloads/
|
wxWidgets-2.9 \wxwidgets http://www.wxwidgets.org/downloads/
|
||||||
OpenSSL \openssl http://www.openssl.org/source/
|
OpenSSL \openssl http://www.openssl.org/source/
|
||||||
Berkeley DB \db http://www.oracle.com/technology/software/products/berkeley-db/index.html
|
Berkeley DB \db http://www.oracle.com/technology/software/products/berkeley-db/index.html
|
||||||
Boost \boost http://www.boost.org/users/download/
|
Boost \boost http://www.boost.org/users/download/
|
||||||
|
|
||||||
Their licenses:
|
Their licenses:
|
||||||
wxWidgets LGPL 2.1 with very liberal exceptions
|
wxWidgets LGPL 2.1 with very liberal exceptions
|
||||||
OpenSSL Old BSD license with the problematic advertising requirement
|
OpenSSL Old BSD license with the problematic advertising requirement
|
||||||
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
||||||
Boost MIT-like license
|
Boost MIT-like license
|
||||||
|
|
||||||
Versions used in this release:
|
Versions used in this release:
|
||||||
MinGW GCC 3.4.5
|
MinGW GCC 3.4.5
|
||||||
wxWidgets 2.9.0
|
wxWidgets 2.9.0
|
||||||
OpenSSL 0.9.8k
|
OpenSSL 0.9.8k
|
||||||
Berkeley DB 4.7.25.NC
|
Berkeley DB 4.7.25.NC
|
||||||
Boost 1.42.1
|
Boost 1.42.1
|
||||||
|
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
The UI layout is edited with wxFormBuilder. The project file is
|
The UI layout is edited with wxFormBuilder. The project file is
|
||||||
uiproject.fbp. It generates uibase.cpp and uibase.h, which define base
|
uiproject.fbp. It generates uibase.cpp and uibase.h, which define base
|
||||||
classes that do the rote work of constructing all the UI elements.
|
classes that do the rote work of constructing all the UI elements.
|
||||||
|
|
||||||
The release is built with GCC and then "strip bitcoin.exe" to strip the debug
|
The release is built with GCC and then "strip bitcoin.exe" to strip the debug
|
||||||
symbols, which reduces the executable size by about 90%.
|
symbols, which reduces the executable size by about 90%.
|
||||||
|
|
||||||
|
|
||||||
wxWidgets
|
wxWidgets
|
||||||
---------
|
---------
|
||||||
cd \wxwidgets\build\msw
|
cd \wxwidgets\build\msw
|
||||||
make -f makefile.gcc
|
make -f makefile.gcc
|
||||||
or
|
or
|
||||||
nmake -f makefile.vc
|
nmake -f makefile.vc
|
||||||
|
|
||||||
|
|
||||||
OpenSSL
|
OpenSSL
|
||||||
-------
|
-------
|
||||||
Bitcoin does not use any encryption. If you want to do a no-everything
|
Bitcoin does not use any encryption. If you want to do a no-everything
|
||||||
build of OpenSSL to exclude encryption routines, a few patches are required.
|
build of OpenSSL to exclude encryption routines, a few patches are required.
|
||||||
(instructions for OpenSSL v0.9.8k)
|
(instructions for OpenSSL v0.9.8k)
|
||||||
|
|
||||||
Edit engines\e_gmp.c and engines\e_capi.c and add this #ifndef around
|
Edit engines\e_gmp.c and engines\e_capi.c and add this #ifndef around
|
||||||
the openssl/rsa.h include:
|
the openssl/rsa.h include:
|
||||||
#ifndef OPENSSL_NO_RSA
|
#ifndef OPENSSL_NO_RSA
|
||||||
#include <openssl/rsa.h>
|
#include <openssl/rsa.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Edit ms\mingw32.bat and replace the Configure line's parameters with this
|
Edit ms\mingw32.bat and replace the Configure line's parameters with this
|
||||||
no-everything list. You have to put this in the batch file because batch
|
no-everything list. You have to put this in the batch file because batch
|
||||||
files can't take more than nine command line parameters.
|
files can't take more than nine command line parameters.
|
||||||
perl Configure mingw threads no-rc2 no-rc4 no-rc5 no-idea no-des no-bf no-cast no-aes no-camellia no-seed no-rsa no-dh
|
perl Configure mingw threads no-rc2 no-rc4 no-rc5 no-idea no-des no-bf no-cast no-aes no-camellia no-seed no-rsa no-dh
|
||||||
|
|
||||||
Also REM out the following line in ms\mingw32.bat after the mingw32-make
|
Also REM out the following line in ms\mingw32.bat after the mingw32-make
|
||||||
line. The build fails after it's already finished building libeay32, which
|
line. The build fails after it's already finished building libeay32, which
|
||||||
is all we care about, but the failure aborts the script before it runs
|
is all we care about, but the failure aborts the script before it runs
|
||||||
dllwrap to generate libeay32.dll.
|
dllwrap to generate libeay32.dll.
|
||||||
REM if errorlevel 1 goto end
|
REM if errorlevel 1 goto end
|
||||||
|
|
||||||
Build
|
Build
|
||||||
cd \openssl
|
cd \openssl
|
||||||
ms\mingw32.bat
|
ms\mingw32.bat
|
||||||
|
|
||||||
If you want to use it with MSVC, generate the .lib file
|
If you want to use it with MSVC, generate the .lib file
|
||||||
lib /machine:i386 /def:ms\libeay32.def /out:out\libeay32.lib
|
lib /machine:i386 /def:ms\libeay32.def /out:out\libeay32.lib
|
||||||
|
|
||||||
|
|
||||||
Berkeley DB
|
Berkeley DB
|
||||||
-----------
|
-----------
|
||||||
Using MinGW and MSYS:
|
Using MinGW and MSYS:
|
||||||
cd \db\build_unix
|
cd \db\build_unix
|
||||||
sh ../dist/configure --enable-mingw --enable-cxx
|
sh ../dist/configure --enable-mingw --enable-cxx
|
||||||
make
|
make
|
||||||
|
|
||||||
|
|
||||||
Boost
|
Boost
|
||||||
-----
|
-----
|
||||||
download bjam.exe from
|
download bjam.exe from
|
||||||
http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941
|
http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941
|
||||||
cd \boost
|
cd \boost
|
||||||
bjam toolset=gcc --build-type=complete stage
|
bjam toolset=gcc --build-type=complete stage
|
||||||
or
|
or
|
||||||
bjam toolset=msvc --build-type=complete stage
|
bjam toolset=msvc --build-type=complete stage
|
||||||
|
|||||||
+217
-217
@@ -1,217 +1,217 @@
|
|||||||
Copyright (c) 2009-2010 Satoshi Nakamoto
|
Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
Distributed under the MIT/X11 software license, see the accompanying
|
Distributed under the MIT/X11 software license, see the accompanying
|
||||||
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
This product includes software developed by the OpenSSL Project for use in
|
This product includes software developed by the OpenSSL Project for use in
|
||||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
||||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
||||||
|
|
||||||
|
|
||||||
Mac OS X build instructions
|
Mac OS X build instructions
|
||||||
Laszlo Hanyecz (solar@heliacal.net)
|
Laszlo Hanyecz (solar@heliacal.net)
|
||||||
|
|
||||||
|
|
||||||
Tested on 10.5 and 10.6 intel. PPC is not supported because it's big-endian.
|
Tested on 10.5 and 10.6 intel. PPC is not supported because it's big-endian.
|
||||||
|
|
||||||
All of the commands should be executed in Terminal.app.. it's in
|
All of the commands should be executed in Terminal.app.. it's in
|
||||||
/Applications/Utilities
|
/Applications/Utilities
|
||||||
|
|
||||||
You need to install XCode with all the options checked so that the compiler
|
You need to install XCode with all the options checked so that the compiler
|
||||||
and everything is available in /usr not just /Developer
|
and everything is available in /usr not just /Developer
|
||||||
I think it comes on the DVD but you can get the current version from
|
I think it comes on the DVD but you can get the current version from
|
||||||
http://developer.apple.com
|
http://developer.apple.com
|
||||||
|
|
||||||
|
|
||||||
1. Pick a directory to work inside.. something like ~/bitcoin works. The
|
1. Pick a directory to work inside.. something like ~/bitcoin works. The
|
||||||
structure I use looks like this:
|
structure I use looks like this:
|
||||||
(~ is your home directory)
|
(~ is your home directory)
|
||||||
|
|
||||||
~/bitcoin
|
~/bitcoin
|
||||||
~/bitcoin/trunk # source code
|
~/bitcoin/trunk # source code
|
||||||
~/bitcoin/deps # dependencies.. like libraries and headers needed to compile
|
~/bitcoin/deps # dependencies.. like libraries and headers needed to compile
|
||||||
~/bitcoin/Bitcoin.app # the application bundle where you can run the app
|
~/bitcoin/Bitcoin.app # the application bundle where you can run the app
|
||||||
|
|
||||||
Just execute: mkdir ~/bitcoin
|
Just execute: mkdir ~/bitcoin
|
||||||
This will create the top dir for you..
|
This will create the top dir for you..
|
||||||
|
|
||||||
WARNING: do not use the ~ notation with the configure scripts.. use the full
|
WARNING: do not use the ~ notation with the configure scripts.. use the full
|
||||||
name of the directory, for example /Users/james/bitcoin/deps for a user named
|
name of the directory, for example /Users/james/bitcoin/deps for a user named
|
||||||
'james'. In my examples I am using 'macosuser' so make sure you change that.
|
'james'. In my examples I am using 'macosuser' so make sure you change that.
|
||||||
|
|
||||||
2. Check out the trunk version of the bitcoin code from subversion:
|
2. Check out the trunk version of the bitcoin code from subversion:
|
||||||
|
|
||||||
cd ~/bitcoin
|
cd ~/bitcoin
|
||||||
svn checkout https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk
|
svn checkout https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk
|
||||||
|
|
||||||
This will make ~/bitcoin/trunk for you with all the files from subversion.
|
This will make ~/bitcoin/trunk for you with all the files from subversion.
|
||||||
|
|
||||||
3. Get and build the dependencies
|
3. Get and build the dependencies
|
||||||
|
|
||||||
|
|
||||||
Boost
|
Boost
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Download from http://www.boost.org/users/download/
|
Download from http://www.boost.org/users/download/
|
||||||
I'm assuming it ended up in ~/Downloads..
|
I'm assuming it ended up in ~/Downloads..
|
||||||
|
|
||||||
mkdir ~/bitcoin/deps
|
mkdir ~/bitcoin/deps
|
||||||
cd ~/bitcoin/deps
|
cd ~/bitcoin/deps
|
||||||
tar xvjf ~/Downloads/boost_1_42_0.tar.bz2
|
tar xvjf ~/Downloads/boost_1_42_0.tar.bz2
|
||||||
cd boost_1_42_0
|
cd boost_1_42_0
|
||||||
./bootstrap.sh
|
./bootstrap.sh
|
||||||
./bjam architecture=combined address-model=32_64 macosx-version=10.6 macosx-version-min=10.5 link=static runtime-link=static --toolset=darwin --prefix=/Users/macosuser/bitcoin/deps install
|
./bjam architecture=combined address-model=32_64 macosx-version=10.6 macosx-version-min=10.5 link=static runtime-link=static --toolset=darwin --prefix=/Users/macosuser/bitcoin/deps install
|
||||||
|
|
||||||
This part takes a while.. use your judgement and fix it if something doesn't
|
This part takes a while.. use your judgement and fix it if something doesn't
|
||||||
build for some reason.
|
build for some reason.
|
||||||
|
|
||||||
Change the prefix to whatever your directory is (my username in this example
|
Change the prefix to whatever your directory is (my username in this example
|
||||||
is macosuser). I'm also running on 10.6 so i have macosx-version=10.6 change
|
is macosuser). I'm also running on 10.6 so i have macosx-version=10.6 change
|
||||||
to 10.5 if you're using leopard.
|
to 10.5 if you're using leopard.
|
||||||
|
|
||||||
This is what my output looked like at the end:
|
This is what my output looked like at the end:
|
||||||
...failed updating 2 targets...
|
...failed updating 2 targets...
|
||||||
...skipped 144 targets...
|
...skipped 144 targets...
|
||||||
...updated 8074 targets...
|
...updated 8074 targets...
|
||||||
|
|
||||||
|
|
||||||
OpenSSL
|
OpenSSL
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Download from http://www.openssl.org/source/
|
Download from http://www.openssl.org/source/
|
||||||
|
|
||||||
We would like to build this as a 32 bit/64 bit library so we actually build it
|
We would like to build this as a 32 bit/64 bit library so we actually build it
|
||||||
2 times and join it together here.. If you downloaded with safari it already
|
2 times and join it together here.. If you downloaded with safari it already
|
||||||
uncompressed it so it will just be a tar not a tar.gz
|
uncompressed it so it will just be a tar not a tar.gz
|
||||||
|
|
||||||
cd ~/bitcoin/deps
|
cd ~/bitcoin/deps
|
||||||
tar xvf ~/Downloads/openssl-1.0.0.tar
|
tar xvf ~/Downloads/openssl-1.0.0.tar
|
||||||
mv openssl-1.0.0 openssl-1.0.0-i386
|
mv openssl-1.0.0 openssl-1.0.0-i386
|
||||||
tar xvf ~/Downloads/openssl-1.0.0.tar
|
tar xvf ~/Downloads/openssl-1.0.0.tar
|
||||||
mv openssl-1.0.0 openssl-1.0.0-x86_64
|
mv openssl-1.0.0 openssl-1.0.0-x86_64
|
||||||
# build i386 (32 bit intel) binary
|
# build i386 (32 bit intel) binary
|
||||||
cd openssl-1.0.0-i386
|
cd openssl-1.0.0-i386
|
||||||
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin-i386-cc && make
|
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin-i386-cc && make
|
||||||
make install # only do this on one of the architectures, to install the headers
|
make install # only do this on one of the architectures, to install the headers
|
||||||
cd ..
|
cd ..
|
||||||
# build x86_64 (64 bit intel) binary
|
# build x86_64 (64 bit intel) binary
|
||||||
cd openssl-1.0.0-x86_64
|
cd openssl-1.0.0-x86_64
|
||||||
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin64-x86_64-cc && make
|
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin64-x86_64-cc && make
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
# combine the libs
|
# combine the libs
|
||||||
cd ~/bitcoin/deps
|
cd ~/bitcoin/deps
|
||||||
lipo -arch i386 openssl-1.0.0-i386/libcrypto.a -arch x86_64 openssl-1.0.0-x86_64/libcrypto.a -o lib/libcrypto.a -create
|
lipo -arch i386 openssl-1.0.0-i386/libcrypto.a -arch x86_64 openssl-1.0.0-x86_64/libcrypto.a -o lib/libcrypto.a -create
|
||||||
lipo -arch i386 openssl-1.0.0-i386/libssl.a -arch x86_64 openssl-1.0.0-x86_64/libssl.a -o lib/libssl.a -create
|
lipo -arch i386 openssl-1.0.0-i386/libssl.a -arch x86_64 openssl-1.0.0-x86_64/libssl.a -o lib/libssl.a -create
|
||||||
|
|
||||||
Verify your binaries
|
Verify your binaries
|
||||||
|
|
||||||
file lib/libcrypto.a
|
file lib/libcrypto.a
|
||||||
|
|
||||||
output should look like this:
|
output should look like this:
|
||||||
|
|
||||||
ib/libcrypto.a: Mach-O universal binary with 2 architectures
|
ib/libcrypto.a: Mach-O universal binary with 2 architectures
|
||||||
lib/libcrypto.a (for architecture i386): current ar archive random library
|
lib/libcrypto.a (for architecture i386): current ar archive random library
|
||||||
lib/libcrypto.a (for architecture x86_64): current ar archive random library
|
lib/libcrypto.a (for architecture x86_64): current ar archive random library
|
||||||
|
|
||||||
|
|
||||||
Berkeley DB
|
Berkeley DB
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Download from http://freshmeat.net/projects/berkeleydb/
|
Download from http://freshmeat.net/projects/berkeleydb/
|
||||||
|
|
||||||
cd ~/bitcoin/deps
|
cd ~/bitcoin/deps
|
||||||
tar xvf ~/Downloads/db-4.8.26.tar
|
tar xvf ~/Downloads/db-4.8.26.tar
|
||||||
cd db-4.8.26/build_unix
|
cd db-4.8.26/build_unix
|
||||||
../dist/configure --prefix=/Users/macosuser/bitcoin/deps --enable-cxx && make && make install
|
../dist/configure --prefix=/Users/macosuser/bitcoin/deps --enable-cxx && make && make install
|
||||||
|
|
||||||
|
|
||||||
wxWidgets
|
wxWidgets
|
||||||
---------
|
---------
|
||||||
|
|
||||||
This is the big one..
|
This is the big one..
|
||||||
|
|
||||||
Check it out from svn
|
Check it out from svn
|
||||||
|
|
||||||
cd ~/bitcoin/deps
|
cd ~/bitcoin/deps
|
||||||
svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk
|
svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk
|
||||||
|
|
||||||
This will make a wxWidgets-trunk directory in deps.
|
This will make a wxWidgets-trunk directory in deps.
|
||||||
|
|
||||||
Use this script snippet, change your prefix to whatever your dir is:
|
Use this script snippet, change your prefix to whatever your dir is:
|
||||||
|
|
||||||
PREFIX=~/bitcoin/deps
|
PREFIX=~/bitcoin/deps
|
||||||
SRCDIR="$PREFIX/wxWidgets-trunk"
|
SRCDIR="$PREFIX/wxWidgets-trunk"
|
||||||
BUILDDIR="$SRCDIR/macbuild"
|
BUILDDIR="$SRCDIR/macbuild"
|
||||||
|
|
||||||
cd "$PREFIX" &&
|
cd "$PREFIX" &&
|
||||||
#svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk &&
|
#svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk &&
|
||||||
cd "$SRCDIR" &&
|
cd "$SRCDIR" &&
|
||||||
|
|
||||||
[ -f include/wx/hashmap.h.orig ] || cp include/wx/hashmap.h include/wx/hashmap.h.orig &&
|
[ -f include/wx/hashmap.h.orig ] || cp include/wx/hashmap.h include/wx/hashmap.h.orig &&
|
||||||
sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashmap.h.orig > include/wx/hashmap.h &&
|
sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashmap.h.orig > include/wx/hashmap.h &&
|
||||||
|
|
||||||
[ -f include/wx/hashset.h.orig ] || cp include/wx/hashset.h include/wx/hashset.h.orig &&
|
[ -f include/wx/hashset.h.orig ] || cp include/wx/hashset.h include/wx/hashset.h.orig &&
|
||||||
sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashset.h.orig > include/wx/hashset.h &&
|
sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashset.h.orig > include/wx/hashset.h &&
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rm -vrf "$BUILDDIR" &&
|
rm -vrf "$BUILDDIR" &&
|
||||||
mkdir "$BUILDDIR" &&
|
mkdir "$BUILDDIR" &&
|
||||||
cd "$BUILDDIR" &&
|
cd "$BUILDDIR" &&
|
||||||
|
|
||||||
../configure --prefix="$PREFIX" \
|
../configure --prefix="$PREFIX" \
|
||||||
--with-osx_cocoa \
|
--with-osx_cocoa \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--disable-debug_flag \
|
--disable-debug_flag \
|
||||||
--with-macosx-version-min=10.5 \
|
--with-macosx-version-min=10.5 \
|
||||||
--enable-stl \
|
--enable-stl \
|
||||||
--enable-utf8 \
|
--enable-utf8 \
|
||||||
--enable-universal_binary \
|
--enable-universal_binary \
|
||||||
--with-libjpeg=builtin \
|
--with-libjpeg=builtin \
|
||||||
--with-libpng=builtin \
|
--with-libpng=builtin \
|
||||||
--with-regex=builtin \
|
--with-regex=builtin \
|
||||||
--with-libtiff=builtin \
|
--with-libtiff=builtin \
|
||||||
--with-zlib=builtin \
|
--with-zlib=builtin \
|
||||||
--with-expat=builtin \
|
--with-expat=builtin \
|
||||||
--with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk &&
|
--with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk &&
|
||||||
|
|
||||||
|
|
||||||
find . -name Makefile |
|
find . -name Makefile |
|
||||||
while read i; do
|
while read i; do
|
||||||
echo $i;
|
echo $i;
|
||||||
sed 's/-arch i386/-arch i386 -arch x86_64/g' < "$i" > "$i".new &&
|
sed 's/-arch i386/-arch i386 -arch x86_64/g' < "$i" > "$i".new &&
|
||||||
mv "$i" "$i".old &&
|
mv "$i" "$i".old &&
|
||||||
mv "$i".new "$i";
|
mv "$i".new "$i";
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
make &&
|
make &&
|
||||||
make install
|
make install
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Now you should be able to build bitcoin
|
Now you should be able to build bitcoin
|
||||||
|
|
||||||
cd ~/bitcoin/trunk
|
cd ~/bitcoin/trunk
|
||||||
make -f makefile.osx bitcoin
|
make -f makefile.osx bitcoin
|
||||||
|
|
||||||
Before you can run it, you need to create an application bundle for Mac OS.
|
Before you can run it, you need to create an application bundle for Mac OS.
|
||||||
Create the directories in terminal using mkdir and copy the files into place.
|
Create the directories in terminal using mkdir and copy the files into place.
|
||||||
They are available at http://heliacal.net/~solar/bitcoin/mac-build/
|
They are available at http://heliacal.net/~solar/bitcoin/mac-build/
|
||||||
You need the Info.plist and the .ins file. The Contents/MacOS/bitcoin file is
|
You need the Info.plist and the .ins file. The Contents/MacOS/bitcoin file is
|
||||||
the output of the build.
|
the output of the build.
|
||||||
Your directory structure should look like this:
|
Your directory structure should look like this:
|
||||||
|
|
||||||
Bitcoin.app
|
Bitcoin.app
|
||||||
Bitcoin.app/Contents
|
Bitcoin.app/Contents
|
||||||
Bitcoin.app/Contents/Info.plist
|
Bitcoin.app/Contents/Info.plist
|
||||||
Bitcoin.app/Contents/MacOS
|
Bitcoin.app/Contents/MacOS
|
||||||
Bitcoin.app/Contents/MacOS/bitcoin
|
Bitcoin.app/Contents/MacOS/bitcoin
|
||||||
Bitcoin.app/Contents/Resources
|
Bitcoin.app/Contents/Resources
|
||||||
Bitcoin.app/Contents/Resources/BitcoinAppIcon.icns
|
Bitcoin.app/Contents/Resources/BitcoinAppIcon.icns
|
||||||
|
|
||||||
To run it you can just click the Bitcoin.app in Finder, or just do open
|
To run it you can just click the Bitcoin.app in Finder, or just do open
|
||||||
~/bitcoin/Bitcoin.app
|
~/bitcoin/Bitcoin.app
|
||||||
If you want to run it with arguments you can just run it without backgrounding
|
If you want to run it with arguments you can just run it without backgrounding
|
||||||
by specifying the full name in terminal:
|
by specifying the full name in terminal:
|
||||||
~/bitcoin/Bitcoin.app/Contents/MacOS/bitcoin -addnode=192.75.207.66
|
~/bitcoin/Bitcoin.app/Contents/MacOS/bitcoin -addnode=192.75.207.66
|
||||||
|
|||||||
+83
-83
@@ -1,83 +1,83 @@
|
|||||||
Copyright (c) 2009-2010 Satoshi Nakamoto
|
Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
Distributed under the MIT/X11 software license, see the accompanying
|
Distributed under the MIT/X11 software license, see the accompanying
|
||||||
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
This product includes software developed by the OpenSSL Project for use in
|
This product includes software developed by the OpenSSL Project for use in
|
||||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
||||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
||||||
|
|
||||||
|
|
||||||
UNIX BUILD NOTES
|
UNIX BUILD NOTES
|
||||||
================
|
================
|
||||||
|
|
||||||
Dependencies
|
Dependencies
|
||||||
------------
|
------------
|
||||||
sudo apt-get install build-essential
|
sudo apt-get install build-essential
|
||||||
sudo apt-get install libgtk2.0-dev
|
sudo apt-get install libgtk2.0-dev
|
||||||
sudo apt-get install libssl-dev
|
sudo apt-get install libssl-dev
|
||||||
sudo apt-get install libdb4.7-dev
|
sudo apt-get install libdb4.7-dev
|
||||||
sudo apt-get install libdb4.7++-dev
|
sudo apt-get install libdb4.7++-dev
|
||||||
sudo apt-get install libboost-all-dev
|
sudo apt-get install libboost-all-dev
|
||||||
|
|
||||||
We're now using wxWidgets 2.9, which uses UTF-8.
|
We're now using wxWidgets 2.9, which uses UTF-8.
|
||||||
|
|
||||||
There isn't currently a debian package of wxWidgets we can use. The 2.8
|
There isn't currently a debian package of wxWidgets we can use. The 2.8
|
||||||
packages for Karmic are UTF-16 unicode and won't work for us, and we've had
|
packages for Karmic are UTF-16 unicode and won't work for us, and we've had
|
||||||
trouble building 2.8 on 64-bit.
|
trouble building 2.8 on 64-bit.
|
||||||
|
|
||||||
You need to download wxWidgets from http://www.wxwidgets.org/downloads/
|
You need to download wxWidgets from http://www.wxwidgets.org/downloads/
|
||||||
and build it yourself. See the build instructions and configure parameters
|
and build it yourself. See the build instructions and configure parameters
|
||||||
below.
|
below.
|
||||||
|
|
||||||
Licenses of statically linked libraries:
|
Licenses of statically linked libraries:
|
||||||
wxWidgets LGPL 2.1 with very liberal exceptions
|
wxWidgets LGPL 2.1 with very liberal exceptions
|
||||||
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
||||||
Boost MIT-like license
|
Boost MIT-like license
|
||||||
|
|
||||||
Versions used in this release:
|
Versions used in this release:
|
||||||
GCC 4.4.3
|
GCC 4.4.3
|
||||||
OpenSSL 0.9.8k
|
OpenSSL 0.9.8k
|
||||||
wxWidgets 2.9.0
|
wxWidgets 2.9.0
|
||||||
Berkeley DB 4.7.25.NC
|
Berkeley DB 4.7.25.NC
|
||||||
Boost 1.40.0
|
Boost 1.40.0
|
||||||
|
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
The UI layout is edited with wxFormBuilder. The project file is
|
The UI layout is edited with wxFormBuilder. The project file is
|
||||||
uiproject.fbp. It generates uibase.cpp and uibase.h, which define base
|
uiproject.fbp. It generates uibase.cpp and uibase.h, which define base
|
||||||
classes that do the rote work of constructing all the UI elements.
|
classes that do the rote work of constructing all the UI elements.
|
||||||
|
|
||||||
The release is built with GCC and then "strip bitcoin" to strip the debug
|
The release is built with GCC and then "strip bitcoin" to strip the debug
|
||||||
symbols, which reduces the executable size by about 90%.
|
symbols, which reduces the executable size by about 90%.
|
||||||
|
|
||||||
|
|
||||||
wxWidgets
|
wxWidgets
|
||||||
---------
|
---------
|
||||||
cd /usr/local
|
cd /usr/local
|
||||||
tar -xzvf wxWidgets-2.9.0.tar.gz
|
tar -xzvf wxWidgets-2.9.0.tar.gz
|
||||||
cd /usr/local/wxWidgets-2.9.0
|
cd /usr/local/wxWidgets-2.9.0
|
||||||
mkdir buildgtk
|
mkdir buildgtk
|
||||||
cd buildgtk
|
cd buildgtk
|
||||||
../configure --with-gtk --enable-debug --disable-shared --enable-monolithic
|
../configure --with-gtk --enable-debug --disable-shared --enable-monolithic
|
||||||
make
|
make
|
||||||
sudo su
|
sudo su
|
||||||
make install
|
make install
|
||||||
ldconfig
|
ldconfig
|
||||||
su <username>
|
su <username>
|
||||||
cd ..
|
cd ..
|
||||||
mkdir buildbase
|
mkdir buildbase
|
||||||
cd buildbase
|
cd buildbase
|
||||||
../configure --disable-gui --enable-debug --disable-shared --enable-monolithic
|
../configure --disable-gui --enable-debug --disable-shared --enable-monolithic
|
||||||
make
|
make
|
||||||
sudo su
|
sudo su
|
||||||
make install
|
make install
|
||||||
ldconfig
|
ldconfig
|
||||||
|
|
||||||
|
|
||||||
Boost
|
Boost
|
||||||
-----
|
-----
|
||||||
If you want to build Boost yourself,
|
If you want to build Boost yourself,
|
||||||
cd /usr/local/boost_1_40_0
|
cd /usr/local/boost_1_40_0
|
||||||
su
|
su
|
||||||
./bootstrap.sh
|
./bootstrap.sh
|
||||||
./bjam install
|
./bjam install
|
||||||
|
|||||||
@@ -1,404 +1,404 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
class CTransaction;
|
class CTransaction;
|
||||||
class CTxIndex;
|
class CTxIndex;
|
||||||
class CDiskBlockIndex;
|
class CDiskBlockIndex;
|
||||||
class CDiskTxPos;
|
class CDiskTxPos;
|
||||||
class COutPoint;
|
class COutPoint;
|
||||||
class CUser;
|
class CUser;
|
||||||
class CReview;
|
class CReview;
|
||||||
class CAddress;
|
class CAddress;
|
||||||
class CWalletTx;
|
class CWalletTx;
|
||||||
|
|
||||||
extern map<string, string> mapAddressBook;
|
extern map<string, string> mapAddressBook;
|
||||||
extern CCriticalSection cs_mapAddressBook;
|
extern CCriticalSection cs_mapAddressBook;
|
||||||
extern vector<unsigned char> vchDefaultKey;
|
extern vector<unsigned char> vchDefaultKey;
|
||||||
extern bool fClient;
|
extern bool fClient;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern unsigned int nWalletDBUpdated;
|
extern unsigned int nWalletDBUpdated;
|
||||||
extern DbEnv dbenv;
|
extern DbEnv dbenv;
|
||||||
|
|
||||||
|
|
||||||
extern void DBFlush(bool fShutdown);
|
extern void DBFlush(bool fShutdown);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CDB
|
class CDB
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
Db* pdb;
|
Db* pdb;
|
||||||
string strFile;
|
string strFile;
|
||||||
vector<DbTxn*> vTxn;
|
vector<DbTxn*> vTxn;
|
||||||
bool fReadOnly;
|
bool fReadOnly;
|
||||||
|
|
||||||
explicit CDB(const char* pszFile, const char* pszMode="r+");
|
explicit CDB(const char* pszFile, const char* pszMode="r+");
|
||||||
~CDB() { Close(); }
|
~CDB() { Close(); }
|
||||||
public:
|
public:
|
||||||
void Close();
|
void Close();
|
||||||
private:
|
private:
|
||||||
CDB(const CDB&);
|
CDB(const CDB&);
|
||||||
void operator=(const CDB&);
|
void operator=(const CDB&);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
bool Read(const K& key, T& value)
|
bool Read(const K& key, T& value)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Key
|
// Key
|
||||||
CDataStream ssKey(SER_DISK);
|
CDataStream ssKey(SER_DISK);
|
||||||
ssKey.reserve(1000);
|
ssKey.reserve(1000);
|
||||||
ssKey << key;
|
ssKey << key;
|
||||||
Dbt datKey(&ssKey[0], ssKey.size());
|
Dbt datKey(&ssKey[0], ssKey.size());
|
||||||
|
|
||||||
// Read
|
// Read
|
||||||
Dbt datValue;
|
Dbt datValue;
|
||||||
datValue.set_flags(DB_DBT_MALLOC);
|
datValue.set_flags(DB_DBT_MALLOC);
|
||||||
int ret = pdb->get(GetTxn(), &datKey, &datValue, 0);
|
int ret = pdb->get(GetTxn(), &datKey, &datValue, 0);
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
if (datValue.get_data() == NULL)
|
if (datValue.get_data() == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Unserialize value
|
// Unserialize value
|
||||||
CDataStream ssValue((char*)datValue.get_data(), (char*)datValue.get_data() + datValue.get_size(), SER_DISK);
|
CDataStream ssValue((char*)datValue.get_data(), (char*)datValue.get_data() + datValue.get_size(), SER_DISK);
|
||||||
ssValue >> value;
|
ssValue >> value;
|
||||||
|
|
||||||
// Clear and free memory
|
// Clear and free memory
|
||||||
memset(datValue.get_data(), 0, datValue.get_size());
|
memset(datValue.get_data(), 0, datValue.get_size());
|
||||||
free(datValue.get_data());
|
free(datValue.get_data());
|
||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
bool Write(const K& key, const T& value, bool fOverwrite=true)
|
bool Write(const K& key, const T& value, bool fOverwrite=true)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
if (fReadOnly)
|
if (fReadOnly)
|
||||||
assert(("Write called on database in read-only mode", false));
|
assert(("Write called on database in read-only mode", false));
|
||||||
|
|
||||||
// Key
|
// Key
|
||||||
CDataStream ssKey(SER_DISK);
|
CDataStream ssKey(SER_DISK);
|
||||||
ssKey.reserve(1000);
|
ssKey.reserve(1000);
|
||||||
ssKey << key;
|
ssKey << key;
|
||||||
Dbt datKey(&ssKey[0], ssKey.size());
|
Dbt datKey(&ssKey[0], ssKey.size());
|
||||||
|
|
||||||
// Value
|
// Value
|
||||||
CDataStream ssValue(SER_DISK);
|
CDataStream ssValue(SER_DISK);
|
||||||
ssValue.reserve(10000);
|
ssValue.reserve(10000);
|
||||||
ssValue << value;
|
ssValue << value;
|
||||||
Dbt datValue(&ssValue[0], ssValue.size());
|
Dbt datValue(&ssValue[0], ssValue.size());
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
int ret = pdb->put(GetTxn(), &datKey, &datValue, (fOverwrite ? 0 : DB_NOOVERWRITE));
|
int ret = pdb->put(GetTxn(), &datKey, &datValue, (fOverwrite ? 0 : DB_NOOVERWRITE));
|
||||||
|
|
||||||
// Clear memory in case it was a private key
|
// Clear memory in case it was a private key
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
memset(datValue.get_data(), 0, datValue.get_size());
|
memset(datValue.get_data(), 0, datValue.get_size());
|
||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename K>
|
template<typename K>
|
||||||
bool Erase(const K& key)
|
bool Erase(const K& key)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
if (fReadOnly)
|
if (fReadOnly)
|
||||||
assert(("Erase called on database in read-only mode", false));
|
assert(("Erase called on database in read-only mode", false));
|
||||||
|
|
||||||
// Key
|
// Key
|
||||||
CDataStream ssKey(SER_DISK);
|
CDataStream ssKey(SER_DISK);
|
||||||
ssKey.reserve(1000);
|
ssKey.reserve(1000);
|
||||||
ssKey << key;
|
ssKey << key;
|
||||||
Dbt datKey(&ssKey[0], ssKey.size());
|
Dbt datKey(&ssKey[0], ssKey.size());
|
||||||
|
|
||||||
// Erase
|
// Erase
|
||||||
int ret = pdb->del(GetTxn(), &datKey, 0);
|
int ret = pdb->del(GetTxn(), &datKey, 0);
|
||||||
|
|
||||||
// Clear memory
|
// Clear memory
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
return (ret == 0 || ret == DB_NOTFOUND);
|
return (ret == 0 || ret == DB_NOTFOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename K>
|
template<typename K>
|
||||||
bool Exists(const K& key)
|
bool Exists(const K& key)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Key
|
// Key
|
||||||
CDataStream ssKey(SER_DISK);
|
CDataStream ssKey(SER_DISK);
|
||||||
ssKey.reserve(1000);
|
ssKey.reserve(1000);
|
||||||
ssKey << key;
|
ssKey << key;
|
||||||
Dbt datKey(&ssKey[0], ssKey.size());
|
Dbt datKey(&ssKey[0], ssKey.size());
|
||||||
|
|
||||||
// Exists
|
// Exists
|
||||||
int ret = pdb->exists(GetTxn(), &datKey, 0);
|
int ret = pdb->exists(GetTxn(), &datKey, 0);
|
||||||
|
|
||||||
// Clear memory
|
// Clear memory
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dbc* GetCursor()
|
Dbc* GetCursor()
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return NULL;
|
return NULL;
|
||||||
Dbc* pcursor = NULL;
|
Dbc* pcursor = NULL;
|
||||||
int ret = pdb->cursor(NULL, &pcursor, 0);
|
int ret = pdb->cursor(NULL, &pcursor, 0);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
return pcursor;
|
return pcursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ReadAtCursor(Dbc* pcursor, CDataStream& ssKey, CDataStream& ssValue, unsigned int fFlags=DB_NEXT)
|
int ReadAtCursor(Dbc* pcursor, CDataStream& ssKey, CDataStream& ssValue, unsigned int fFlags=DB_NEXT)
|
||||||
{
|
{
|
||||||
// Read at cursor
|
// Read at cursor
|
||||||
Dbt datKey;
|
Dbt datKey;
|
||||||
if (fFlags == DB_SET || fFlags == DB_SET_RANGE || fFlags == DB_GET_BOTH || fFlags == DB_GET_BOTH_RANGE)
|
if (fFlags == DB_SET || fFlags == DB_SET_RANGE || fFlags == DB_GET_BOTH || fFlags == DB_GET_BOTH_RANGE)
|
||||||
{
|
{
|
||||||
datKey.set_data(&ssKey[0]);
|
datKey.set_data(&ssKey[0]);
|
||||||
datKey.set_size(ssKey.size());
|
datKey.set_size(ssKey.size());
|
||||||
}
|
}
|
||||||
Dbt datValue;
|
Dbt datValue;
|
||||||
if (fFlags == DB_GET_BOTH || fFlags == DB_GET_BOTH_RANGE)
|
if (fFlags == DB_GET_BOTH || fFlags == DB_GET_BOTH_RANGE)
|
||||||
{
|
{
|
||||||
datValue.set_data(&ssValue[0]);
|
datValue.set_data(&ssValue[0]);
|
||||||
datValue.set_size(ssValue.size());
|
datValue.set_size(ssValue.size());
|
||||||
}
|
}
|
||||||
datKey.set_flags(DB_DBT_MALLOC);
|
datKey.set_flags(DB_DBT_MALLOC);
|
||||||
datValue.set_flags(DB_DBT_MALLOC);
|
datValue.set_flags(DB_DBT_MALLOC);
|
||||||
int ret = pcursor->get(&datKey, &datValue, fFlags);
|
int ret = pcursor->get(&datKey, &datValue, fFlags);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
else if (datKey.get_data() == NULL || datValue.get_data() == NULL)
|
else if (datKey.get_data() == NULL || datValue.get_data() == NULL)
|
||||||
return 99999;
|
return 99999;
|
||||||
|
|
||||||
// Convert to streams
|
// Convert to streams
|
||||||
ssKey.SetType(SER_DISK);
|
ssKey.SetType(SER_DISK);
|
||||||
ssKey.clear();
|
ssKey.clear();
|
||||||
ssKey.write((char*)datKey.get_data(), datKey.get_size());
|
ssKey.write((char*)datKey.get_data(), datKey.get_size());
|
||||||
ssValue.SetType(SER_DISK);
|
ssValue.SetType(SER_DISK);
|
||||||
ssValue.clear();
|
ssValue.clear();
|
||||||
ssValue.write((char*)datValue.get_data(), datValue.get_size());
|
ssValue.write((char*)datValue.get_data(), datValue.get_size());
|
||||||
|
|
||||||
// Clear and free memory
|
// Clear and free memory
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
memset(datValue.get_data(), 0, datValue.get_size());
|
memset(datValue.get_data(), 0, datValue.get_size());
|
||||||
free(datKey.get_data());
|
free(datKey.get_data());
|
||||||
free(datValue.get_data());
|
free(datValue.get_data());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DbTxn* GetTxn()
|
DbTxn* GetTxn()
|
||||||
{
|
{
|
||||||
if (!vTxn.empty())
|
if (!vTxn.empty())
|
||||||
return vTxn.back();
|
return vTxn.back();
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool TxnBegin()
|
bool TxnBegin()
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
DbTxn* ptxn = NULL;
|
DbTxn* ptxn = NULL;
|
||||||
int ret = dbenv.txn_begin(GetTxn(), &ptxn, 0);
|
int ret = dbenv.txn_begin(GetTxn(), &ptxn, 0);
|
||||||
if (!ptxn || ret != 0)
|
if (!ptxn || ret != 0)
|
||||||
return false;
|
return false;
|
||||||
vTxn.push_back(ptxn);
|
vTxn.push_back(ptxn);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TxnCommit()
|
bool TxnCommit()
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
if (vTxn.empty())
|
if (vTxn.empty())
|
||||||
return false;
|
return false;
|
||||||
int ret = vTxn.back()->commit(0);
|
int ret = vTxn.back()->commit(0);
|
||||||
vTxn.pop_back();
|
vTxn.pop_back();
|
||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TxnAbort()
|
bool TxnAbort()
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
if (vTxn.empty())
|
if (vTxn.empty())
|
||||||
return false;
|
return false;
|
||||||
int ret = vTxn.back()->abort();
|
int ret = vTxn.back()->abort();
|
||||||
vTxn.pop_back();
|
vTxn.pop_back();
|
||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReadVersion(int& nVersion)
|
bool ReadVersion(int& nVersion)
|
||||||
{
|
{
|
||||||
nVersion = 0;
|
nVersion = 0;
|
||||||
return Read(string("version"), nVersion);
|
return Read(string("version"), nVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WriteVersion(int nVersion)
|
bool WriteVersion(int nVersion)
|
||||||
{
|
{
|
||||||
return Write(string("version"), nVersion);
|
return Write(string("version"), nVersion);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CTxDB : public CDB
|
class CTxDB : public CDB
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CTxDB(const char* pszMode="r+") : CDB(!fClient ? "blkindex.dat" : NULL, pszMode) { }
|
CTxDB(const char* pszMode="r+") : CDB(!fClient ? "blkindex.dat" : NULL, pszMode) { }
|
||||||
private:
|
private:
|
||||||
CTxDB(const CTxDB&);
|
CTxDB(const CTxDB&);
|
||||||
void operator=(const CTxDB&);
|
void operator=(const CTxDB&);
|
||||||
public:
|
public:
|
||||||
bool ReadTxIndex(uint256 hash, CTxIndex& txindex);
|
bool ReadTxIndex(uint256 hash, CTxIndex& txindex);
|
||||||
bool UpdateTxIndex(uint256 hash, const CTxIndex& txindex);
|
bool UpdateTxIndex(uint256 hash, const CTxIndex& txindex);
|
||||||
bool AddTxIndex(const CTransaction& tx, const CDiskTxPos& pos, int nHeight);
|
bool AddTxIndex(const CTransaction& tx, const CDiskTxPos& pos, int nHeight);
|
||||||
bool EraseTxIndex(const CTransaction& tx);
|
bool EraseTxIndex(const CTransaction& tx);
|
||||||
bool ContainsTx(uint256 hash);
|
bool ContainsTx(uint256 hash);
|
||||||
bool ReadOwnerTxes(uint160 hash160, int nHeight, vector<CTransaction>& vtx);
|
bool ReadOwnerTxes(uint160 hash160, int nHeight, vector<CTransaction>& vtx);
|
||||||
bool ReadDiskTx(uint256 hash, CTransaction& tx, CTxIndex& txindex);
|
bool ReadDiskTx(uint256 hash, CTransaction& tx, CTxIndex& txindex);
|
||||||
bool ReadDiskTx(uint256 hash, CTransaction& tx);
|
bool ReadDiskTx(uint256 hash, CTransaction& tx);
|
||||||
bool ReadDiskTx(COutPoint outpoint, CTransaction& tx, CTxIndex& txindex);
|
bool ReadDiskTx(COutPoint outpoint, CTransaction& tx, CTxIndex& txindex);
|
||||||
bool ReadDiskTx(COutPoint outpoint, CTransaction& tx);
|
bool ReadDiskTx(COutPoint outpoint, CTransaction& tx);
|
||||||
bool WriteBlockIndex(const CDiskBlockIndex& blockindex);
|
bool WriteBlockIndex(const CDiskBlockIndex& blockindex);
|
||||||
bool EraseBlockIndex(uint256 hash);
|
bool EraseBlockIndex(uint256 hash);
|
||||||
bool ReadHashBestChain(uint256& hashBestChain);
|
bool ReadHashBestChain(uint256& hashBestChain);
|
||||||
bool WriteHashBestChain(uint256 hashBestChain);
|
bool WriteHashBestChain(uint256 hashBestChain);
|
||||||
bool LoadBlockIndex();
|
bool LoadBlockIndex();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CAddrDB : public CDB
|
class CAddrDB : public CDB
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CAddrDB(const char* pszMode="r+") : CDB("addr.dat", pszMode) { }
|
CAddrDB(const char* pszMode="r+") : CDB("addr.dat", pszMode) { }
|
||||||
private:
|
private:
|
||||||
CAddrDB(const CAddrDB&);
|
CAddrDB(const CAddrDB&);
|
||||||
void operator=(const CAddrDB&);
|
void operator=(const CAddrDB&);
|
||||||
public:
|
public:
|
||||||
bool WriteAddress(const CAddress& addr);
|
bool WriteAddress(const CAddress& addr);
|
||||||
bool LoadAddresses();
|
bool LoadAddresses();
|
||||||
};
|
};
|
||||||
|
|
||||||
bool LoadAddresses();
|
bool LoadAddresses();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CWalletDB : public CDB
|
class CWalletDB : public CDB
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CWalletDB(const char* pszMode="r+") : CDB("wallet.dat", pszMode) { }
|
CWalletDB(const char* pszMode="r+") : CDB("wallet.dat", pszMode) { }
|
||||||
private:
|
private:
|
||||||
CWalletDB(const CWalletDB&);
|
CWalletDB(const CWalletDB&);
|
||||||
void operator=(const CWalletDB&);
|
void operator=(const CWalletDB&);
|
||||||
public:
|
public:
|
||||||
bool ReadName(const string& strAddress, string& strName)
|
bool ReadName(const string& strAddress, string& strName)
|
||||||
{
|
{
|
||||||
strName = "";
|
strName = "";
|
||||||
return Read(make_pair(string("name"), strAddress), strName);
|
return Read(make_pair(string("name"), strAddress), strName);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WriteName(const string& strAddress, const string& strName)
|
bool WriteName(const string& strAddress, const string& strName)
|
||||||
{
|
{
|
||||||
CRITICAL_BLOCK(cs_mapAddressBook)
|
CRITICAL_BLOCK(cs_mapAddressBook)
|
||||||
mapAddressBook[strAddress] = strName;
|
mapAddressBook[strAddress] = strName;
|
||||||
nWalletDBUpdated++;
|
nWalletDBUpdated++;
|
||||||
return Write(make_pair(string("name"), strAddress), strName);
|
return Write(make_pair(string("name"), strAddress), strName);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EraseName(const string& strAddress)
|
bool EraseName(const string& strAddress)
|
||||||
{
|
{
|
||||||
// This should only be used for sending addresses, never for receiving addresses,
|
// This should only be used for sending addresses, never for receiving addresses,
|
||||||
// receiving addresses must always have an address book entry if they're not change return.
|
// receiving addresses must always have an address book entry if they're not change return.
|
||||||
CRITICAL_BLOCK(cs_mapAddressBook)
|
CRITICAL_BLOCK(cs_mapAddressBook)
|
||||||
mapAddressBook.erase(strAddress);
|
mapAddressBook.erase(strAddress);
|
||||||
nWalletDBUpdated++;
|
nWalletDBUpdated++;
|
||||||
return Erase(make_pair(string("name"), strAddress));
|
return Erase(make_pair(string("name"), strAddress));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReadTx(uint256 hash, CWalletTx& wtx)
|
bool ReadTx(uint256 hash, CWalletTx& wtx)
|
||||||
{
|
{
|
||||||
return Read(make_pair(string("tx"), hash), wtx);
|
return Read(make_pair(string("tx"), hash), wtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WriteTx(uint256 hash, const CWalletTx& wtx)
|
bool WriteTx(uint256 hash, const CWalletTx& wtx)
|
||||||
{
|
{
|
||||||
nWalletDBUpdated++;
|
nWalletDBUpdated++;
|
||||||
return Write(make_pair(string("tx"), hash), wtx);
|
return Write(make_pair(string("tx"), hash), wtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EraseTx(uint256 hash)
|
bool EraseTx(uint256 hash)
|
||||||
{
|
{
|
||||||
nWalletDBUpdated++;
|
nWalletDBUpdated++;
|
||||||
return Erase(make_pair(string("tx"), hash));
|
return Erase(make_pair(string("tx"), hash));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReadKey(const vector<unsigned char>& vchPubKey, CPrivKey& vchPrivKey)
|
bool ReadKey(const vector<unsigned char>& vchPubKey, CPrivKey& vchPrivKey)
|
||||||
{
|
{
|
||||||
vchPrivKey.clear();
|
vchPrivKey.clear();
|
||||||
return Read(make_pair(string("key"), vchPubKey), vchPrivKey);
|
return Read(make_pair(string("key"), vchPubKey), vchPrivKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WriteKey(const vector<unsigned char>& vchPubKey, const CPrivKey& vchPrivKey)
|
bool WriteKey(const vector<unsigned char>& vchPubKey, const CPrivKey& vchPrivKey)
|
||||||
{
|
{
|
||||||
nWalletDBUpdated++;
|
nWalletDBUpdated++;
|
||||||
return Write(make_pair(string("key"), vchPubKey), vchPrivKey, false);
|
return Write(make_pair(string("key"), vchPubKey), vchPrivKey, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReadDefaultKey(vector<unsigned char>& vchPubKey)
|
bool ReadDefaultKey(vector<unsigned char>& vchPubKey)
|
||||||
{
|
{
|
||||||
vchPubKey.clear();
|
vchPubKey.clear();
|
||||||
return Read(string("defaultkey"), vchPubKey);
|
return Read(string("defaultkey"), vchPubKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WriteDefaultKey(const vector<unsigned char>& vchPubKey)
|
bool WriteDefaultKey(const vector<unsigned char>& vchPubKey)
|
||||||
{
|
{
|
||||||
vchDefaultKey = vchPubKey;
|
vchDefaultKey = vchPubKey;
|
||||||
nWalletDBUpdated++;
|
nWalletDBUpdated++;
|
||||||
return Write(string("defaultkey"), vchPubKey);
|
return Write(string("defaultkey"), vchPubKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool ReadSetting(const string& strKey, T& value)
|
bool ReadSetting(const string& strKey, T& value)
|
||||||
{
|
{
|
||||||
return Read(make_pair(string("setting"), strKey), value);
|
return Read(make_pair(string("setting"), strKey), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool WriteSetting(const string& strKey, const T& value)
|
bool WriteSetting(const string& strKey, const T& value)
|
||||||
{
|
{
|
||||||
nWalletDBUpdated++;
|
nWalletDBUpdated++;
|
||||||
return Write(make_pair(string("setting"), strKey), value);
|
return Write(make_pair(string("setting"), strKey), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LoadWallet();
|
bool LoadWallet();
|
||||||
};
|
};
|
||||||
|
|
||||||
bool LoadWallet(bool& fFirstRunRet);
|
bool LoadWallet(bool& fFirstRunRet);
|
||||||
|
|
||||||
inline bool SetAddressBookName(const string& strAddress, const string& strName)
|
inline bool SetAddressBookName(const string& strAddress, const string& strName)
|
||||||
{
|
{
|
||||||
return CWalletDB().WriteName(strAddress, strName);
|
return CWalletDB().WriteName(strAddress, strName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,127 +1,127 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4786)
|
#pragma warning(disable:4786)
|
||||||
#pragma warning(disable:4804)
|
#pragma warning(disable:4804)
|
||||||
#pragma warning(disable:4805)
|
#pragma warning(disable:4805)
|
||||||
#pragma warning(disable:4717)
|
#pragma warning(disable:4717)
|
||||||
#endif
|
#endif
|
||||||
#ifdef _WIN32_WINNT
|
#ifdef _WIN32_WINNT
|
||||||
#undef _WIN32_WINNT
|
#undef _WIN32_WINNT
|
||||||
#endif
|
#endif
|
||||||
#define _WIN32_WINNT 0x0400
|
#define _WIN32_WINNT 0x0400
|
||||||
#ifdef _WIN32_IE
|
#ifdef _WIN32_IE
|
||||||
#undef _WIN32_IE
|
#undef _WIN32_IE
|
||||||
#endif
|
#endif
|
||||||
#define _WIN32_IE 0x0400
|
#define _WIN32_IE 0x0400
|
||||||
#define WIN32_LEAN_AND_MEAN 1
|
#define WIN32_LEAN_AND_MEAN 1
|
||||||
#define __STDC_LIMIT_MACROS // to enable UINT64_MAX from stdint.h
|
#define __STDC_LIMIT_MACROS // to enable UINT64_MAX from stdint.h
|
||||||
#include <wx/wx.h>
|
#include <wx/wx.h>
|
||||||
#include <wx/stdpaths.h>
|
#include <wx/stdpaths.h>
|
||||||
#include <wx/snglinst.h>
|
#include <wx/snglinst.h>
|
||||||
#if wxUSE_GUI
|
#if wxUSE_GUI
|
||||||
#include <wx/utils.h>
|
#include <wx/utils.h>
|
||||||
#include <wx/clipbrd.h>
|
#include <wx/clipbrd.h>
|
||||||
#include <wx/taskbar.h>
|
#include <wx/taskbar.h>
|
||||||
#endif
|
#endif
|
||||||
#include <openssl/ecdsa.h>
|
#include <openssl/ecdsa.h>
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
#include <openssl/rand.h>
|
#include <openssl/rand.h>
|
||||||
#include <openssl/sha.h>
|
#include <openssl/sha.h>
|
||||||
#include <openssl/ripemd.h>
|
#include <openssl/ripemd.h>
|
||||||
#include <db_cxx.h>
|
#include <db_cxx.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <boost/tuple/tuple.hpp>
|
#include <boost/tuple/tuple.hpp>
|
||||||
#include <boost/tuple/tuple_comparison.hpp>
|
#include <boost/tuple/tuple_comparison.hpp>
|
||||||
#include <boost/tuple/tuple_io.hpp>
|
#include <boost/tuple/tuple_io.hpp>
|
||||||
#include <boost/array.hpp>
|
#include <boost/array.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
#include <boost/function.hpp>
|
#include <boost/function.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
#include <boost/filesystem/fstream.hpp>
|
#include <boost/filesystem/fstream.hpp>
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/interprocess/sync/interprocess_mutex.hpp>
|
#include <boost/interprocess/sync/interprocess_mutex.hpp>
|
||||||
#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
|
#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
|
||||||
#include <boost/date_time/gregorian/gregorian_types.hpp>
|
#include <boost/date_time/gregorian/gregorian_types.hpp>
|
||||||
#include <boost/date_time/posix_time/posix_time_types.hpp>
|
#include <boost/date_time/posix_time/posix_time_types.hpp>
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#include <mswsock.h>
|
#include <mswsock.h>
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#include <shlwapi.h>
|
#include <shlwapi.h>
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#else
|
#else
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <net/if.h>
|
#include <net/if.h>
|
||||||
#include <ifaddrs.h>
|
#include <ifaddrs.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef __BSD__
|
#ifdef __BSD__
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace boost;
|
using namespace boost;
|
||||||
|
|
||||||
#include "strlcpy.h"
|
#include "strlcpy.h"
|
||||||
#include "serialize.h"
|
#include "serialize.h"
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "bignum.h"
|
#include "bignum.h"
|
||||||
#include "base58.h"
|
#include "base58.h"
|
||||||
#include "script.h"
|
#include "script.h"
|
||||||
#include "db.h"
|
#include "db.h"
|
||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "irc.h"
|
#include "irc.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "rpc.h"
|
#include "rpc.h"
|
||||||
#if wxUSE_GUI
|
#if wxUSE_GUI
|
||||||
#include "uibase.h"
|
#include "uibase.h"
|
||||||
#endif
|
#endif
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
#include "init.h"
|
#include "init.h"
|
||||||
|
|
||||||
#include "xpm/addressbook16.xpm"
|
#include "xpm/addressbook16.xpm"
|
||||||
#include "xpm/addressbook20.xpm"
|
#include "xpm/addressbook20.xpm"
|
||||||
#include "xpm/bitcoin16.xpm"
|
#include "xpm/bitcoin16.xpm"
|
||||||
#include "xpm/bitcoin20.xpm"
|
#include "xpm/bitcoin20.xpm"
|
||||||
#include "xpm/bitcoin32.xpm"
|
#include "xpm/bitcoin32.xpm"
|
||||||
#include "xpm/bitcoin48.xpm"
|
#include "xpm/bitcoin48.xpm"
|
||||||
#include "xpm/bitcoin80.xpm"
|
#include "xpm/bitcoin80.xpm"
|
||||||
#include "xpm/check.xpm"
|
#include "xpm/check.xpm"
|
||||||
#include "xpm/send16.xpm"
|
#include "xpm/send16.xpm"
|
||||||
#include "xpm/send16noshadow.xpm"
|
#include "xpm/send16noshadow.xpm"
|
||||||
#include "xpm/send20.xpm"
|
#include "xpm/send20.xpm"
|
||||||
#include "xpm/about.xpm"
|
#include "xpm/about.xpm"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
void Shutdown(void* parg);
|
void Shutdown(void* parg);
|
||||||
bool GetStartOnSystemStartup();
|
bool GetStartOnSystemStartup();
|
||||||
void SetStartOnSystemStartup(bool fAutoStart);
|
void SetStartOnSystemStartup(bool fAutoStart);
|
||||||
|
|||||||
@@ -1,324 +1,324 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#include "headers.h"
|
#include "headers.h"
|
||||||
|
|
||||||
int nGotIRCAddresses = 0;
|
int nGotIRCAddresses = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
struct ircaddr
|
struct ircaddr
|
||||||
{
|
{
|
||||||
int ip;
|
int ip;
|
||||||
short port;
|
short port;
|
||||||
};
|
};
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
string EncodeAddress(const CAddress& addr)
|
string EncodeAddress(const CAddress& addr)
|
||||||
{
|
{
|
||||||
struct ircaddr tmp;
|
struct ircaddr tmp;
|
||||||
tmp.ip = addr.ip;
|
tmp.ip = addr.ip;
|
||||||
tmp.port = addr.port;
|
tmp.port = addr.port;
|
||||||
|
|
||||||
vector<unsigned char> vch(UBEGIN(tmp), UEND(tmp));
|
vector<unsigned char> vch(UBEGIN(tmp), UEND(tmp));
|
||||||
return string("u") + EncodeBase58Check(vch);
|
return string("u") + EncodeBase58Check(vch);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DecodeAddress(string str, CAddress& addr)
|
bool DecodeAddress(string str, CAddress& addr)
|
||||||
{
|
{
|
||||||
vector<unsigned char> vch;
|
vector<unsigned char> vch;
|
||||||
if (!DecodeBase58Check(str.substr(1), vch))
|
if (!DecodeBase58Check(str.substr(1), vch))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
struct ircaddr tmp;
|
struct ircaddr tmp;
|
||||||
if (vch.size() != sizeof(tmp))
|
if (vch.size() != sizeof(tmp))
|
||||||
return false;
|
return false;
|
||||||
memcpy(&tmp, &vch[0], sizeof(tmp));
|
memcpy(&tmp, &vch[0], sizeof(tmp));
|
||||||
|
|
||||||
addr = CAddress(tmp.ip, tmp.port, NODE_NETWORK);
|
addr = CAddress(tmp.ip, tmp.port, NODE_NETWORK);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static bool Send(SOCKET hSocket, const char* pszSend)
|
static bool Send(SOCKET hSocket, const char* pszSend)
|
||||||
{
|
{
|
||||||
if (strstr(pszSend, "PONG") != pszSend)
|
if (strstr(pszSend, "PONG") != pszSend)
|
||||||
printf("IRC SENDING: %s\n", pszSend);
|
printf("IRC SENDING: %s\n", pszSend);
|
||||||
const char* psz = pszSend;
|
const char* psz = pszSend;
|
||||||
const char* pszEnd = psz + strlen(psz);
|
const char* pszEnd = psz + strlen(psz);
|
||||||
while (psz < pszEnd)
|
while (psz < pszEnd)
|
||||||
{
|
{
|
||||||
int ret = send(hSocket, psz, pszEnd - psz, MSG_NOSIGNAL);
|
int ret = send(hSocket, psz, pszEnd - psz, MSG_NOSIGNAL);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return false;
|
return false;
|
||||||
psz += ret;
|
psz += ret;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RecvLine(SOCKET hSocket, string& strLine)
|
bool RecvLine(SOCKET hSocket, string& strLine)
|
||||||
{
|
{
|
||||||
strLine = "";
|
strLine = "";
|
||||||
loop
|
loop
|
||||||
{
|
{
|
||||||
char c;
|
char c;
|
||||||
int nBytes = recv(hSocket, &c, 1, 0);
|
int nBytes = recv(hSocket, &c, 1, 0);
|
||||||
if (nBytes > 0)
|
if (nBytes > 0)
|
||||||
{
|
{
|
||||||
if (c == '\n')
|
if (c == '\n')
|
||||||
continue;
|
continue;
|
||||||
if (c == '\r')
|
if (c == '\r')
|
||||||
return true;
|
return true;
|
||||||
strLine += c;
|
strLine += c;
|
||||||
if (strLine.size() >= 9000)
|
if (strLine.size() >= 9000)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (nBytes <= 0)
|
else if (nBytes <= 0)
|
||||||
{
|
{
|
||||||
if (!strLine.empty())
|
if (!strLine.empty())
|
||||||
return true;
|
return true;
|
||||||
// socket closed
|
// socket closed
|
||||||
printf("IRC socket closed\n");
|
printf("IRC socket closed\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// socket error
|
// socket error
|
||||||
int nErr = WSAGetLastError();
|
int nErr = WSAGetLastError();
|
||||||
if (nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS)
|
if (nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS)
|
||||||
{
|
{
|
||||||
printf("IRC recv failed: %d\n", nErr);
|
printf("IRC recv failed: %d\n", nErr);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RecvLineIRC(SOCKET hSocket, string& strLine)
|
bool RecvLineIRC(SOCKET hSocket, string& strLine)
|
||||||
{
|
{
|
||||||
loop
|
loop
|
||||||
{
|
{
|
||||||
bool fRet = RecvLine(hSocket, strLine);
|
bool fRet = RecvLine(hSocket, strLine);
|
||||||
if (fRet)
|
if (fRet)
|
||||||
{
|
{
|
||||||
if (fShutdown)
|
if (fShutdown)
|
||||||
return false;
|
return false;
|
||||||
vector<string> vWords;
|
vector<string> vWords;
|
||||||
ParseString(strLine, ' ', vWords);
|
ParseString(strLine, ' ', vWords);
|
||||||
if (vWords.size() >= 1 && vWords[0] == "PING")
|
if (vWords.size() >= 1 && vWords[0] == "PING")
|
||||||
{
|
{
|
||||||
strLine[1] = 'O';
|
strLine[1] = 'O';
|
||||||
strLine += '\r';
|
strLine += '\r';
|
||||||
Send(hSocket, strLine.c_str());
|
Send(hSocket, strLine.c_str());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return fRet;
|
return fRet;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int RecvUntil(SOCKET hSocket, const char* psz1, const char* psz2=NULL, const char* psz3=NULL)
|
int RecvUntil(SOCKET hSocket, const char* psz1, const char* psz2=NULL, const char* psz3=NULL)
|
||||||
{
|
{
|
||||||
loop
|
loop
|
||||||
{
|
{
|
||||||
string strLine;
|
string strLine;
|
||||||
if (!RecvLineIRC(hSocket, strLine))
|
if (!RecvLineIRC(hSocket, strLine))
|
||||||
return 0;
|
return 0;
|
||||||
printf("IRC %s\n", strLine.c_str());
|
printf("IRC %s\n", strLine.c_str());
|
||||||
if (psz1 && strLine.find(psz1) != -1)
|
if (psz1 && strLine.find(psz1) != -1)
|
||||||
return 1;
|
return 1;
|
||||||
if (psz2 && strLine.find(psz2) != -1)
|
if (psz2 && strLine.find(psz2) != -1)
|
||||||
return 2;
|
return 2;
|
||||||
if (psz3 && strLine.find(psz3) != -1)
|
if (psz3 && strLine.find(psz3) != -1)
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Wait(int nSeconds)
|
bool Wait(int nSeconds)
|
||||||
{
|
{
|
||||||
if (fShutdown)
|
if (fShutdown)
|
||||||
return false;
|
return false;
|
||||||
printf("IRC waiting %d seconds to reconnect\n", nSeconds);
|
printf("IRC waiting %d seconds to reconnect\n", nSeconds);
|
||||||
for (int i = 0; i < nSeconds; i++)
|
for (int i = 0; i < nSeconds; i++)
|
||||||
{
|
{
|
||||||
if (fShutdown)
|
if (fShutdown)
|
||||||
return false;
|
return false;
|
||||||
Sleep(1000);
|
Sleep(1000);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void ThreadIRCSeed(void* parg)
|
void ThreadIRCSeed(void* parg)
|
||||||
{
|
{
|
||||||
printf("ThreadIRCSeed started\n");
|
printf("ThreadIRCSeed started\n");
|
||||||
int nErrorWait = 10;
|
int nErrorWait = 10;
|
||||||
int nRetryWait = 10;
|
int nRetryWait = 10;
|
||||||
bool fNameInUse = false;
|
bool fNameInUse = false;
|
||||||
bool fTOR = (fUseProxy && addrProxy.port == htons(9050));
|
bool fTOR = (fUseProxy && addrProxy.port == htons(9050));
|
||||||
|
|
||||||
while (!fShutdown)
|
while (!fShutdown)
|
||||||
{
|
{
|
||||||
//CAddress addrConnect("216.155.130.130:6667"); // chat.freenode.net
|
//CAddress addrConnect("216.155.130.130:6667"); // chat.freenode.net
|
||||||
CAddress addrConnect("92.243.23.21:6667"); // irc.lfnet.org
|
CAddress addrConnect("92.243.23.21:6667"); // irc.lfnet.org
|
||||||
if (!fTOR)
|
if (!fTOR)
|
||||||
{
|
{
|
||||||
//struct hostent* phostent = gethostbyname("chat.freenode.net");
|
//struct hostent* phostent = gethostbyname("chat.freenode.net");
|
||||||
struct hostent* phostent = gethostbyname("irc.lfnet.org");
|
struct hostent* phostent = gethostbyname("irc.lfnet.org");
|
||||||
if (phostent && phostent->h_addr_list && phostent->h_addr_list[0])
|
if (phostent && phostent->h_addr_list && phostent->h_addr_list[0])
|
||||||
addrConnect = CAddress(*(u_long*)phostent->h_addr_list[0], htons(6667));
|
addrConnect = CAddress(*(u_long*)phostent->h_addr_list[0], htons(6667));
|
||||||
}
|
}
|
||||||
|
|
||||||
SOCKET hSocket;
|
SOCKET hSocket;
|
||||||
if (!ConnectSocket(addrConnect, hSocket))
|
if (!ConnectSocket(addrConnect, hSocket))
|
||||||
{
|
{
|
||||||
printf("IRC connect failed\n");
|
printf("IRC connect failed\n");
|
||||||
nErrorWait = nErrorWait * 11 / 10;
|
nErrorWait = nErrorWait * 11 / 10;
|
||||||
if (Wait(nErrorWait += 60))
|
if (Wait(nErrorWait += 60))
|
||||||
continue;
|
continue;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!RecvUntil(hSocket, "Found your hostname", "using your IP address instead", "Couldn't look up your hostname"))
|
if (!RecvUntil(hSocket, "Found your hostname", "using your IP address instead", "Couldn't look up your hostname"))
|
||||||
{
|
{
|
||||||
closesocket(hSocket);
|
closesocket(hSocket);
|
||||||
hSocket = INVALID_SOCKET;
|
hSocket = INVALID_SOCKET;
|
||||||
nErrorWait = nErrorWait * 11 / 10;
|
nErrorWait = nErrorWait * 11 / 10;
|
||||||
if (Wait(nErrorWait += 60))
|
if (Wait(nErrorWait += 60))
|
||||||
continue;
|
continue;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string strMyName;
|
string strMyName;
|
||||||
if (addrLocalHost.IsRoutable() && !fUseProxy && !fNameInUse)
|
if (addrLocalHost.IsRoutable() && !fUseProxy && !fNameInUse)
|
||||||
strMyName = EncodeAddress(addrLocalHost);
|
strMyName = EncodeAddress(addrLocalHost);
|
||||||
else
|
else
|
||||||
strMyName = strprintf("x%u", GetRand(1000000000));
|
strMyName = strprintf("x%u", GetRand(1000000000));
|
||||||
|
|
||||||
Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
|
Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
|
||||||
Send(hSocket, strprintf("USER %s 8 * : %s\r", strMyName.c_str(), strMyName.c_str()).c_str());
|
Send(hSocket, strprintf("USER %s 8 * : %s\r", strMyName.c_str(), strMyName.c_str()).c_str());
|
||||||
|
|
||||||
int nRet = RecvUntil(hSocket, " 004 ", " 433 ");
|
int nRet = RecvUntil(hSocket, " 004 ", " 433 ");
|
||||||
if (nRet != 1)
|
if (nRet != 1)
|
||||||
{
|
{
|
||||||
closesocket(hSocket);
|
closesocket(hSocket);
|
||||||
hSocket = INVALID_SOCKET;
|
hSocket = INVALID_SOCKET;
|
||||||
if (nRet == 2)
|
if (nRet == 2)
|
||||||
{
|
{
|
||||||
printf("IRC name already in use\n");
|
printf("IRC name already in use\n");
|
||||||
fNameInUse = true;
|
fNameInUse = true;
|
||||||
Wait(10);
|
Wait(10);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
nErrorWait = nErrorWait * 11 / 10;
|
nErrorWait = nErrorWait * 11 / 10;
|
||||||
if (Wait(nErrorWait += 60))
|
if (Wait(nErrorWait += 60))
|
||||||
continue;
|
continue;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Sleep(500);
|
Sleep(500);
|
||||||
|
|
||||||
Send(hSocket, "JOIN #bitcoin\r");
|
Send(hSocket, "JOIN #bitcoin\r");
|
||||||
Send(hSocket, "WHO #bitcoin\r");
|
Send(hSocket, "WHO #bitcoin\r");
|
||||||
|
|
||||||
int64 nStart = GetTime();
|
int64 nStart = GetTime();
|
||||||
string strLine;
|
string strLine;
|
||||||
while (!fShutdown && RecvLineIRC(hSocket, strLine))
|
while (!fShutdown && RecvLineIRC(hSocket, strLine))
|
||||||
{
|
{
|
||||||
if (strLine.empty() || strLine.size() > 900 || strLine[0] != ':')
|
if (strLine.empty() || strLine.size() > 900 || strLine[0] != ':')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
vector<string> vWords;
|
vector<string> vWords;
|
||||||
ParseString(strLine, ' ', vWords);
|
ParseString(strLine, ' ', vWords);
|
||||||
if (vWords.size() < 2)
|
if (vWords.size() < 2)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
char pszName[10000];
|
char pszName[10000];
|
||||||
pszName[0] = '\0';
|
pszName[0] = '\0';
|
||||||
|
|
||||||
if (vWords[1] == "352" && vWords.size() >= 8)
|
if (vWords[1] == "352" && vWords.size() >= 8)
|
||||||
{
|
{
|
||||||
// index 7 is limited to 16 characters
|
// index 7 is limited to 16 characters
|
||||||
// could get full length name at index 10, but would be different from join messages
|
// could get full length name at index 10, but would be different from join messages
|
||||||
strlcpy(pszName, vWords[7].c_str(), sizeof(pszName));
|
strlcpy(pszName, vWords[7].c_str(), sizeof(pszName));
|
||||||
printf("IRC got who\n");
|
printf("IRC got who\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vWords[1] == "JOIN" && vWords[0].size() > 1)
|
if (vWords[1] == "JOIN" && vWords[0].size() > 1)
|
||||||
{
|
{
|
||||||
// :username!username@50000007.F000000B.90000002.IP JOIN :#channelname
|
// :username!username@50000007.F000000B.90000002.IP JOIN :#channelname
|
||||||
strlcpy(pszName, vWords[0].c_str() + 1, sizeof(pszName));
|
strlcpy(pszName, vWords[0].c_str() + 1, sizeof(pszName));
|
||||||
if (strchr(pszName, '!'))
|
if (strchr(pszName, '!'))
|
||||||
*strchr(pszName, '!') = '\0';
|
*strchr(pszName, '!') = '\0';
|
||||||
printf("IRC got join\n");
|
printf("IRC got join\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pszName[0] == 'u')
|
if (pszName[0] == 'u')
|
||||||
{
|
{
|
||||||
CAddress addr;
|
CAddress addr;
|
||||||
if (DecodeAddress(pszName, addr))
|
if (DecodeAddress(pszName, addr))
|
||||||
{
|
{
|
||||||
addr.nTime = GetAdjustedTime() - 51 * 60;
|
addr.nTime = GetAdjustedTime() - 51 * 60;
|
||||||
if (AddAddress(addr))
|
if (AddAddress(addr))
|
||||||
printf("IRC got new address\n");
|
printf("IRC got new address\n");
|
||||||
nGotIRCAddresses++;
|
nGotIRCAddresses++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("IRC decode failed\n");
|
printf("IRC decode failed\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closesocket(hSocket);
|
closesocket(hSocket);
|
||||||
hSocket = INVALID_SOCKET;
|
hSocket = INVALID_SOCKET;
|
||||||
|
|
||||||
// IRC usually blocks TOR, so only try once
|
// IRC usually blocks TOR, so only try once
|
||||||
if (fTOR)
|
if (fTOR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (GetTime() - nStart > 20 * 60)
|
if (GetTime() - nStart > 20 * 60)
|
||||||
{
|
{
|
||||||
nErrorWait /= 3;
|
nErrorWait /= 3;
|
||||||
nRetryWait /= 3;
|
nRetryWait /= 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
nRetryWait = nRetryWait * 11 / 10;
|
nRetryWait = nRetryWait * 11 / 10;
|
||||||
if (!Wait(nRetryWait += 60))
|
if (!Wait(nRetryWait += 60))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
WSADATA wsadata;
|
WSADATA wsadata;
|
||||||
if (WSAStartup(MAKEWORD(2,2), &wsadata) != NO_ERROR)
|
if (WSAStartup(MAKEWORD(2,2), &wsadata) != NO_ERROR)
|
||||||
{
|
{
|
||||||
printf("Error at WSAStartup()\n");
|
printf("Error at WSAStartup()\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadIRCSeed(NULL);
|
ThreadIRCSeed(NULL);
|
||||||
|
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
bool RecvLine(SOCKET hSocket, string& strLine);
|
bool RecvLine(SOCKET hSocket, string& strLine);
|
||||||
void ThreadIRCSeed(void* parg);
|
void ThreadIRCSeed(void* parg);
|
||||||
|
|
||||||
extern int nGotIRCAddresses;
|
extern int nGotIRCAddresses;
|
||||||
|
|||||||
+24
-24
@@ -1,24 +1,24 @@
|
|||||||
The MIT License
|
The MIT License
|
||||||
|
|
||||||
Copyright (c) 2007 - 2009 John W. Wilkinson
|
Copyright (c) 2007 - 2009 John W. Wilkinson
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
Permission is hereby granted, free of charge, to any person
|
||||||
obtaining a copy of this software and associated documentation
|
obtaining a copy of this software and associated documentation
|
||||||
files (the "Software"), to deal in the Software without
|
files (the "Software"), to deal in the Software without
|
||||||
restriction, including without limitation the rights to use,
|
restriction, including without limitation the rights to use,
|
||||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
copies of the Software, and to permit persons to whom the
|
copies of the Software, and to permit persons to whom the
|
||||||
Software is furnished to do so, subject to the following
|
Software is furnished to do so, subject to the following
|
||||||
conditions:
|
conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
The above copyright notice and this permission notice shall be
|
||||||
included in all copies or substantial portions of the Software.
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|||||||
+18
-18
@@ -1,18 +1,18 @@
|
|||||||
#ifndef JSON_SPIRIT
|
#ifndef JSON_SPIRIT
|
||||||
#define JSON_SPIRIT
|
#define JSON_SPIRIT
|
||||||
|
|
||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "json_spirit_value.h"
|
#include "json_spirit_value.h"
|
||||||
#include "json_spirit_reader.h"
|
#include "json_spirit_reader.h"
|
||||||
#include "json_spirit_writer.h"
|
#include "json_spirit_writer.h"
|
||||||
#include "json_spirit_utils.h"
|
#include "json_spirit_utils.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,54 +1,54 @@
|
|||||||
#ifndef JSON_SPIRIT_ERROR_POSITION
|
#ifndef JSON_SPIRIT_ERROR_POSITION
|
||||||
#define JSON_SPIRIT_ERROR_POSITION
|
#define JSON_SPIRIT_ERROR_POSITION
|
||||||
|
|
||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace json_spirit
|
namespace json_spirit
|
||||||
{
|
{
|
||||||
// An Error_position exception is thrown by the "read_or_throw" functions below on finding an error.
|
// An Error_position exception is thrown by the "read_or_throw" functions below on finding an error.
|
||||||
// Note the "read_or_throw" functions are around 3 times slower than the standard functions "read"
|
// Note the "read_or_throw" functions are around 3 times slower than the standard functions "read"
|
||||||
// functions that return a bool.
|
// functions that return a bool.
|
||||||
//
|
//
|
||||||
struct Error_position
|
struct Error_position
|
||||||
{
|
{
|
||||||
Error_position();
|
Error_position();
|
||||||
Error_position( unsigned int line, unsigned int column, const std::string& reason );
|
Error_position( unsigned int line, unsigned int column, const std::string& reason );
|
||||||
bool operator==( const Error_position& lhs ) const;
|
bool operator==( const Error_position& lhs ) const;
|
||||||
unsigned int line_;
|
unsigned int line_;
|
||||||
unsigned int column_;
|
unsigned int column_;
|
||||||
std::string reason_;
|
std::string reason_;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline Error_position::Error_position()
|
inline Error_position::Error_position()
|
||||||
: line_( 0 )
|
: line_( 0 )
|
||||||
, column_( 0 )
|
, column_( 0 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Error_position::Error_position( unsigned int line, unsigned int column, const std::string& reason )
|
inline Error_position::Error_position( unsigned int line, unsigned int column, const std::string& reason )
|
||||||
: line_( line )
|
: line_( line )
|
||||||
, column_( column )
|
, column_( column )
|
||||||
, reason_( reason )
|
, reason_( reason )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool Error_position::operator==( const Error_position& lhs ) const
|
inline bool Error_position::operator==( const Error_position& lhs ) const
|
||||||
{
|
{
|
||||||
if( this == &lhs ) return true;
|
if( this == &lhs ) return true;
|
||||||
|
|
||||||
return ( reason_ == lhs.reason_ ) &&
|
return ( reason_ == lhs.reason_ ) &&
|
||||||
( line_ == lhs.line_ ) &&
|
( line_ == lhs.line_ ) &&
|
||||||
( column_ == lhs.column_ );
|
( column_ == lhs.column_ );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+137
-137
@@ -1,137 +1,137 @@
|
|||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#include "json_spirit_reader.h"
|
#include "json_spirit_reader.h"
|
||||||
#include "json_spirit_reader_template.h"
|
#include "json_spirit_reader_template.h"
|
||||||
|
|
||||||
using namespace json_spirit;
|
using namespace json_spirit;
|
||||||
|
|
||||||
bool json_spirit::read( const std::string& s, Value& value )
|
bool json_spirit::read( const std::string& s, Value& value )
|
||||||
{
|
{
|
||||||
return read_string( s, value );
|
return read_string( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( const std::string& s, Value& value )
|
void json_spirit::read_or_throw( const std::string& s, Value& value )
|
||||||
{
|
{
|
||||||
read_string_or_throw( s, value );
|
read_string_or_throw( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::istream& is, Value& value )
|
bool json_spirit::read( std::istream& is, Value& value )
|
||||||
{
|
{
|
||||||
return read_stream( is, value );
|
return read_stream( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::istream& is, Value& value )
|
void json_spirit::read_or_throw( std::istream& is, Value& value )
|
||||||
{
|
{
|
||||||
read_stream_or_throw( is, value );
|
read_stream_or_throw( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value )
|
bool json_spirit::read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value )
|
||||||
{
|
{
|
||||||
return read_range( begin, end, value );
|
return read_range( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value )
|
void json_spirit::read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value )
|
||||||
{
|
{
|
||||||
begin = read_range_or_throw( begin, end, value );
|
begin = read_range_or_throw( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
bool json_spirit::read( const std::wstring& s, wValue& value )
|
bool json_spirit::read( const std::wstring& s, wValue& value )
|
||||||
{
|
{
|
||||||
return read_string( s, value );
|
return read_string( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( const std::wstring& s, wValue& value )
|
void json_spirit::read_or_throw( const std::wstring& s, wValue& value )
|
||||||
{
|
{
|
||||||
read_string_or_throw( s, value );
|
read_string_or_throw( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::wistream& is, wValue& value )
|
bool json_spirit::read( std::wistream& is, wValue& value )
|
||||||
{
|
{
|
||||||
return read_stream( is, value );
|
return read_stream( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::wistream& is, wValue& value )
|
void json_spirit::read_or_throw( std::wistream& is, wValue& value )
|
||||||
{
|
{
|
||||||
read_stream_or_throw( is, value );
|
read_stream_or_throw( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value )
|
bool json_spirit::read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value )
|
||||||
{
|
{
|
||||||
return read_range( begin, end, value );
|
return read_range( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value )
|
void json_spirit::read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value )
|
||||||
{
|
{
|
||||||
begin = read_range_or_throw( begin, end, value );
|
begin = read_range_or_throw( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool json_spirit::read( const std::string& s, mValue& value )
|
bool json_spirit::read( const std::string& s, mValue& value )
|
||||||
{
|
{
|
||||||
return read_string( s, value );
|
return read_string( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( const std::string& s, mValue& value )
|
void json_spirit::read_or_throw( const std::string& s, mValue& value )
|
||||||
{
|
{
|
||||||
read_string_or_throw( s, value );
|
read_string_or_throw( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::istream& is, mValue& value )
|
bool json_spirit::read( std::istream& is, mValue& value )
|
||||||
{
|
{
|
||||||
return read_stream( is, value );
|
return read_stream( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::istream& is, mValue& value )
|
void json_spirit::read_or_throw( std::istream& is, mValue& value )
|
||||||
{
|
{
|
||||||
read_stream_or_throw( is, value );
|
read_stream_or_throw( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value )
|
bool json_spirit::read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value )
|
||||||
{
|
{
|
||||||
return read_range( begin, end, value );
|
return read_range( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value )
|
void json_spirit::read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value )
|
||||||
{
|
{
|
||||||
begin = read_range_or_throw( begin, end, value );
|
begin = read_range_or_throw( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
bool json_spirit::read( const std::wstring& s, wmValue& value )
|
bool json_spirit::read( const std::wstring& s, wmValue& value )
|
||||||
{
|
{
|
||||||
return read_string( s, value );
|
return read_string( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( const std::wstring& s, wmValue& value )
|
void json_spirit::read_or_throw( const std::wstring& s, wmValue& value )
|
||||||
{
|
{
|
||||||
read_string_or_throw( s, value );
|
read_string_or_throw( s, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::wistream& is, wmValue& value )
|
bool json_spirit::read( std::wistream& is, wmValue& value )
|
||||||
{
|
{
|
||||||
return read_stream( is, value );
|
return read_stream( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::wistream& is, wmValue& value )
|
void json_spirit::read_or_throw( std::wistream& is, wmValue& value )
|
||||||
{
|
{
|
||||||
read_stream_or_throw( is, value );
|
read_stream_or_throw( is, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool json_spirit::read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value )
|
bool json_spirit::read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value )
|
||||||
{
|
{
|
||||||
return read_range( begin, end, value );
|
return read_range( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value )
|
void json_spirit::read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value )
|
||||||
{
|
{
|
||||||
begin = read_range_or_throw( begin, end, value );
|
begin = read_range_or_throw( begin, end, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+62
-62
@@ -1,62 +1,62 @@
|
|||||||
#ifndef JSON_SPIRIT_READER
|
#ifndef JSON_SPIRIT_READER
|
||||||
#define JSON_SPIRIT_READER
|
#define JSON_SPIRIT_READER
|
||||||
|
|
||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "json_spirit_value.h"
|
#include "json_spirit_value.h"
|
||||||
#include "json_spirit_error_position.h"
|
#include "json_spirit_error_position.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
namespace json_spirit
|
namespace json_spirit
|
||||||
{
|
{
|
||||||
// functions to reads a JSON values
|
// functions to reads a JSON values
|
||||||
|
|
||||||
bool read( const std::string& s, Value& value );
|
bool read( const std::string& s, Value& value );
|
||||||
bool read( std::istream& is, Value& value );
|
bool read( std::istream& is, Value& value );
|
||||||
bool read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
|
bool read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
|
||||||
|
|
||||||
void read_or_throw( const std::string& s, Value& value );
|
void read_or_throw( const std::string& s, Value& value );
|
||||||
void read_or_throw( std::istream& is, Value& value );
|
void read_or_throw( std::istream& is, Value& value );
|
||||||
void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
|
void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
bool read( const std::wstring& s, wValue& value );
|
bool read( const std::wstring& s, wValue& value );
|
||||||
bool read( std::wistream& is, wValue& value );
|
bool read( std::wistream& is, wValue& value );
|
||||||
bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
|
bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
|
||||||
|
|
||||||
void read_or_throw( const std::wstring& s, wValue& value );
|
void read_or_throw( const std::wstring& s, wValue& value );
|
||||||
void read_or_throw( std::wistream& is, wValue& value );
|
void read_or_throw( std::wistream& is, wValue& value );
|
||||||
void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
|
void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool read( const std::string& s, mValue& value );
|
bool read( const std::string& s, mValue& value );
|
||||||
bool read( std::istream& is, mValue& value );
|
bool read( std::istream& is, mValue& value );
|
||||||
bool read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
|
bool read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
|
||||||
|
|
||||||
void read_or_throw( const std::string& s, mValue& value );
|
void read_or_throw( const std::string& s, mValue& value );
|
||||||
void read_or_throw( std::istream& is, mValue& value );
|
void read_or_throw( std::istream& is, mValue& value );
|
||||||
void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
|
void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
bool read( const std::wstring& s, wmValue& value );
|
bool read( const std::wstring& s, wmValue& value );
|
||||||
bool read( std::wistream& is, wmValue& value );
|
bool read( std::wistream& is, wmValue& value );
|
||||||
bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
|
bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
|
||||||
|
|
||||||
void read_or_throw( const std::wstring& s, wmValue& value );
|
void read_or_throw( const std::wstring& s, wmValue& value );
|
||||||
void read_or_throw( std::wistream& is, wmValue& value );
|
void read_or_throw( std::wistream& is, wmValue& value );
|
||||||
void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
|
void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+612
-612
File diff suppressed because it is too large
Load Diff
@@ -1,70 +1,70 @@
|
|||||||
#ifndef JSON_SPIRIT_READ_STREAM
|
#ifndef JSON_SPIRIT_READ_STREAM
|
||||||
#define JSON_SPIRIT_READ_STREAM
|
#define JSON_SPIRIT_READ_STREAM
|
||||||
|
|
||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "json_spirit_reader_template.h"
|
#include "json_spirit_reader_template.h"
|
||||||
|
|
||||||
namespace json_spirit
|
namespace json_spirit
|
||||||
{
|
{
|
||||||
// these classes allows you to read multiple top level contiguous values from a stream,
|
// these classes allows you to read multiple top level contiguous values from a stream,
|
||||||
// the normal stream read functions have a bug that prevent multiple top level values
|
// the normal stream read functions have a bug that prevent multiple top level values
|
||||||
// from being read unless they are separated by spaces
|
// from being read unless they are separated by spaces
|
||||||
|
|
||||||
template< class Istream_type, class Value_type >
|
template< class Istream_type, class Value_type >
|
||||||
class Stream_reader
|
class Stream_reader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Stream_reader( Istream_type& is )
|
Stream_reader( Istream_type& is )
|
||||||
: iters_( is )
|
: iters_( is )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool read_next( Value_type& value )
|
bool read_next( Value_type& value )
|
||||||
{
|
{
|
||||||
return read_range( iters_.begin_, iters_.end_, value );
|
return read_range( iters_.begin_, iters_.end_, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
typedef Multi_pass_iters< Istream_type > Mp_iters;
|
typedef Multi_pass_iters< Istream_type > Mp_iters;
|
||||||
|
|
||||||
Mp_iters iters_;
|
Mp_iters iters_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template< class Istream_type, class Value_type >
|
template< class Istream_type, class Value_type >
|
||||||
class Stream_reader_thrower
|
class Stream_reader_thrower
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Stream_reader_thrower( Istream_type& is )
|
Stream_reader_thrower( Istream_type& is )
|
||||||
: iters_( is )
|
: iters_( is )
|
||||||
, posn_begin_( iters_.begin_, iters_.end_ )
|
, posn_begin_( iters_.begin_, iters_.end_ )
|
||||||
, posn_end_( iters_.end_, iters_.end_ )
|
, posn_end_( iters_.end_, iters_.end_ )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void read_next( Value_type& value )
|
void read_next( Value_type& value )
|
||||||
{
|
{
|
||||||
posn_begin_ = read_range_or_throw( posn_begin_, posn_end_, value );
|
posn_begin_ = read_range_or_throw( posn_begin_, posn_end_, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
typedef Multi_pass_iters< Istream_type > Mp_iters;
|
typedef Multi_pass_iters< Istream_type > Mp_iters;
|
||||||
typedef spirit_namespace::position_iterator< typename Mp_iters::Mp_iter > Posn_iter_t;
|
typedef spirit_namespace::position_iterator< typename Mp_iters::Mp_iter > Posn_iter_t;
|
||||||
|
|
||||||
Mp_iters iters_;
|
Mp_iters iters_;
|
||||||
Posn_iter_t posn_begin_, posn_end_;
|
Posn_iter_t posn_begin_, posn_end_;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+61
-61
@@ -1,61 +1,61 @@
|
|||||||
#ifndef JSON_SPIRIT_UTILS
|
#ifndef JSON_SPIRIT_UTILS
|
||||||
#define JSON_SPIRIT_UTILS
|
#define JSON_SPIRIT_UTILS
|
||||||
|
|
||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "json_spirit_value.h"
|
#include "json_spirit_value.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
namespace json_spirit
|
namespace json_spirit
|
||||||
{
|
{
|
||||||
template< class Obj_t, class Map_t >
|
template< class Obj_t, class Map_t >
|
||||||
void obj_to_map( const Obj_t& obj, Map_t& mp_obj )
|
void obj_to_map( const Obj_t& obj, Map_t& mp_obj )
|
||||||
{
|
{
|
||||||
mp_obj.clear();
|
mp_obj.clear();
|
||||||
|
|
||||||
for( typename Obj_t::const_iterator i = obj.begin(); i != obj.end(); ++i )
|
for( typename Obj_t::const_iterator i = obj.begin(); i != obj.end(); ++i )
|
||||||
{
|
{
|
||||||
mp_obj[ i->name_ ] = i->value_;
|
mp_obj[ i->name_ ] = i->value_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class Obj_t, class Map_t >
|
template< class Obj_t, class Map_t >
|
||||||
void map_to_obj( const Map_t& mp_obj, Obj_t& obj )
|
void map_to_obj( const Map_t& mp_obj, Obj_t& obj )
|
||||||
{
|
{
|
||||||
obj.clear();
|
obj.clear();
|
||||||
|
|
||||||
for( typename Map_t::const_iterator i = mp_obj.begin(); i != mp_obj.end(); ++i )
|
for( typename Map_t::const_iterator i = mp_obj.begin(); i != mp_obj.end(); ++i )
|
||||||
{
|
{
|
||||||
obj.push_back( typename Obj_t::value_type( i->first, i->second ) );
|
obj.push_back( typename Obj_t::value_type( i->first, i->second ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef std::map< std::string, Value > Mapped_obj;
|
typedef std::map< std::string, Value > Mapped_obj;
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
typedef std::map< std::wstring, wValue > wMapped_obj;
|
typedef std::map< std::wstring, wValue > wMapped_obj;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
template< class Object_type, class String_type >
|
template< class Object_type, class String_type >
|
||||||
const typename Object_type::value_type::Value_type& find_value( const Object_type& obj, const String_type& name )
|
const typename Object_type::value_type::Value_type& find_value( const Object_type& obj, const String_type& name )
|
||||||
{
|
{
|
||||||
for( typename Object_type::const_iterator i = obj.begin(); i != obj.end(); ++i )
|
for( typename Object_type::const_iterator i = obj.begin(); i != obj.end(); ++i )
|
||||||
{
|
{
|
||||||
if( i->name_ == name )
|
if( i->name_ == name )
|
||||||
{
|
{
|
||||||
return i->value_;
|
return i->value_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Object_type::value_type::Value_type::null;
|
return Object_type::value_type::Value_type::null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/* Copyright (c) 2007 John W Wilkinson
|
/* Copyright (c) 2007 John W Wilkinson
|
||||||
|
|
||||||
This source code can be used for any purpose as long as
|
This source code can be used for any purpose as long as
|
||||||
this comment is retained. */
|
this comment is retained. */
|
||||||
|
|
||||||
// json spirit version 2.00
|
// json spirit version 2.00
|
||||||
|
|
||||||
#include "json_spirit_value.h"
|
#include "json_spirit_value.h"
|
||||||
|
|||||||
+534
-534
File diff suppressed because it is too large
Load Diff
+95
-95
@@ -1,95 +1,95 @@
|
|||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#include "json_spirit_writer.h"
|
#include "json_spirit_writer.h"
|
||||||
#include "json_spirit_writer_template.h"
|
#include "json_spirit_writer_template.h"
|
||||||
|
|
||||||
void json_spirit::write( const Value& value, std::ostream& os )
|
void json_spirit::write( const Value& value, std::ostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, false );
|
write_stream( value, os, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::write_formatted( const Value& value, std::ostream& os )
|
void json_spirit::write_formatted( const Value& value, std::ostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, true );
|
write_stream( value, os, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string json_spirit::write( const Value& value )
|
std::string json_spirit::write( const Value& value )
|
||||||
{
|
{
|
||||||
return write_string( value, false );
|
return write_string( value, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string json_spirit::write_formatted( const Value& value )
|
std::string json_spirit::write_formatted( const Value& value )
|
||||||
{
|
{
|
||||||
return write_string( value, true );
|
return write_string( value, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
void json_spirit::write( const wValue& value, std::wostream& os )
|
void json_spirit::write( const wValue& value, std::wostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, false );
|
write_stream( value, os, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::write_formatted( const wValue& value, std::wostream& os )
|
void json_spirit::write_formatted( const wValue& value, std::wostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, true );
|
write_stream( value, os, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring json_spirit::write( const wValue& value )
|
std::wstring json_spirit::write( const wValue& value )
|
||||||
{
|
{
|
||||||
return write_string( value, false );
|
return write_string( value, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring json_spirit::write_formatted( const wValue& value )
|
std::wstring json_spirit::write_formatted( const wValue& value )
|
||||||
{
|
{
|
||||||
return write_string( value, true );
|
return write_string( value, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void json_spirit::write( const mValue& value, std::ostream& os )
|
void json_spirit::write( const mValue& value, std::ostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, false );
|
write_stream( value, os, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::write_formatted( const mValue& value, std::ostream& os )
|
void json_spirit::write_formatted( const mValue& value, std::ostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, true );
|
write_stream( value, os, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string json_spirit::write( const mValue& value )
|
std::string json_spirit::write( const mValue& value )
|
||||||
{
|
{
|
||||||
return write_string( value, false );
|
return write_string( value, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string json_spirit::write_formatted( const mValue& value )
|
std::string json_spirit::write_formatted( const mValue& value )
|
||||||
{
|
{
|
||||||
return write_string( value, true );
|
return write_string( value, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
void json_spirit::write( const wmValue& value, std::wostream& os )
|
void json_spirit::write( const wmValue& value, std::wostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, false );
|
write_stream( value, os, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_spirit::write_formatted( const wmValue& value, std::wostream& os )
|
void json_spirit::write_formatted( const wmValue& value, std::wostream& os )
|
||||||
{
|
{
|
||||||
write_stream( value, os, true );
|
write_stream( value, os, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring json_spirit::write( const wmValue& value )
|
std::wstring json_spirit::write( const wmValue& value )
|
||||||
{
|
{
|
||||||
return write_string( value, false );
|
return write_string( value, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring json_spirit::write_formatted( const wmValue& value )
|
std::wstring json_spirit::write_formatted( const wmValue& value )
|
||||||
{
|
{
|
||||||
return write_string( value, true );
|
return write_string( value, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+50
-50
@@ -1,50 +1,50 @@
|
|||||||
#ifndef JSON_SPIRIT_WRITER
|
#ifndef JSON_SPIRIT_WRITER
|
||||||
#define JSON_SPIRIT_WRITER
|
#define JSON_SPIRIT_WRITER
|
||||||
|
|
||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
# pragma once
|
# pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "json_spirit_value.h"
|
#include "json_spirit_value.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
namespace json_spirit
|
namespace json_spirit
|
||||||
{
|
{
|
||||||
// functions to convert JSON Values to text,
|
// functions to convert JSON Values to text,
|
||||||
// the "formatted" versions add whitespace to format the output nicely
|
// the "formatted" versions add whitespace to format the output nicely
|
||||||
|
|
||||||
void write ( const Value& value, std::ostream& os );
|
void write ( const Value& value, std::ostream& os );
|
||||||
void write_formatted( const Value& value, std::ostream& os );
|
void write_formatted( const Value& value, std::ostream& os );
|
||||||
std::string write ( const Value& value );
|
std::string write ( const Value& value );
|
||||||
std::string write_formatted( const Value& value );
|
std::string write_formatted( const Value& value );
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
void write ( const wValue& value, std::wostream& os );
|
void write ( const wValue& value, std::wostream& os );
|
||||||
void write_formatted( const wValue& value, std::wostream& os );
|
void write_formatted( const wValue& value, std::wostream& os );
|
||||||
std::wstring write ( const wValue& value );
|
std::wstring write ( const wValue& value );
|
||||||
std::wstring write_formatted( const wValue& value );
|
std::wstring write_formatted( const wValue& value );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void write ( const mValue& value, std::ostream& os );
|
void write ( const mValue& value, std::ostream& os );
|
||||||
void write_formatted( const mValue& value, std::ostream& os );
|
void write_formatted( const mValue& value, std::ostream& os );
|
||||||
std::string write ( const mValue& value );
|
std::string write ( const mValue& value );
|
||||||
std::string write_formatted( const mValue& value );
|
std::string write_formatted( const mValue& value );
|
||||||
|
|
||||||
#ifndef BOOST_NO_STD_WSTRING
|
#ifndef BOOST_NO_STD_WSTRING
|
||||||
|
|
||||||
void write ( const wmValue& value, std::wostream& os );
|
void write ( const wmValue& value, std::wostream& os );
|
||||||
void write_formatted( const wmValue& value, std::wostream& os );
|
void write_formatted( const wmValue& value, std::wostream& os );
|
||||||
std::wstring write ( const wmValue& value );
|
std::wstring write ( const wmValue& value );
|
||||||
std::wstring write_formatted( const wmValue& value );
|
std::wstring write_formatted( const wmValue& value );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+245
-245
@@ -1,245 +1,245 @@
|
|||||||
#ifndef JSON_SPIRIT_WRITER_TEMPLATE
|
#ifndef JSON_SPIRIT_WRITER_TEMPLATE
|
||||||
#define JSON_SPIRIT_WRITER_TEMPLATE
|
#define JSON_SPIRIT_WRITER_TEMPLATE
|
||||||
|
|
||||||
// Copyright John W. Wilkinson 2007 - 2009.
|
// Copyright John W. Wilkinson 2007 - 2009.
|
||||||
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
// Distributed under the MIT License, see accompanying file LICENSE.txt
|
||||||
|
|
||||||
// json spirit version 4.03
|
// json spirit version 4.03
|
||||||
|
|
||||||
#include "json_spirit_value.h"
|
#include "json_spirit_value.h"
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
namespace json_spirit
|
namespace json_spirit
|
||||||
{
|
{
|
||||||
inline char to_hex_char( unsigned int c )
|
inline char to_hex_char( unsigned int c )
|
||||||
{
|
{
|
||||||
assert( c <= 0xF );
|
assert( c <= 0xF );
|
||||||
|
|
||||||
const char ch = static_cast< char >( c );
|
const char ch = static_cast< char >( c );
|
||||||
|
|
||||||
if( ch < 10 ) return '0' + ch;
|
if( ch < 10 ) return '0' + ch;
|
||||||
|
|
||||||
return 'A' - 10 + ch;
|
return 'A' - 10 + ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class String_type >
|
template< class String_type >
|
||||||
String_type non_printable_to_string( unsigned int c )
|
String_type non_printable_to_string( unsigned int c )
|
||||||
{
|
{
|
||||||
typedef typename String_type::value_type Char_type;
|
typedef typename String_type::value_type Char_type;
|
||||||
|
|
||||||
String_type result( 6, '\\' );
|
String_type result( 6, '\\' );
|
||||||
|
|
||||||
result[1] = 'u';
|
result[1] = 'u';
|
||||||
|
|
||||||
result[ 5 ] = to_hex_char( c & 0x000F ); c >>= 4;
|
result[ 5 ] = to_hex_char( c & 0x000F ); c >>= 4;
|
||||||
result[ 4 ] = to_hex_char( c & 0x000F ); c >>= 4;
|
result[ 4 ] = to_hex_char( c & 0x000F ); c >>= 4;
|
||||||
result[ 3 ] = to_hex_char( c & 0x000F ); c >>= 4;
|
result[ 3 ] = to_hex_char( c & 0x000F ); c >>= 4;
|
||||||
result[ 2 ] = to_hex_char( c & 0x000F );
|
result[ 2 ] = to_hex_char( c & 0x000F );
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename Char_type, class String_type >
|
template< typename Char_type, class String_type >
|
||||||
bool add_esc_char( Char_type c, String_type& s )
|
bool add_esc_char( Char_type c, String_type& s )
|
||||||
{
|
{
|
||||||
switch( c )
|
switch( c )
|
||||||
{
|
{
|
||||||
case '"': s += to_str< String_type >( "\\\"" ); return true;
|
case '"': s += to_str< String_type >( "\\\"" ); return true;
|
||||||
case '\\': s += to_str< String_type >( "\\\\" ); return true;
|
case '\\': s += to_str< String_type >( "\\\\" ); return true;
|
||||||
case '\b': s += to_str< String_type >( "\\b" ); return true;
|
case '\b': s += to_str< String_type >( "\\b" ); return true;
|
||||||
case '\f': s += to_str< String_type >( "\\f" ); return true;
|
case '\f': s += to_str< String_type >( "\\f" ); return true;
|
||||||
case '\n': s += to_str< String_type >( "\\n" ); return true;
|
case '\n': s += to_str< String_type >( "\\n" ); return true;
|
||||||
case '\r': s += to_str< String_type >( "\\r" ); return true;
|
case '\r': s += to_str< String_type >( "\\r" ); return true;
|
||||||
case '\t': s += to_str< String_type >( "\\t" ); return true;
|
case '\t': s += to_str< String_type >( "\\t" ); return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class String_type >
|
template< class String_type >
|
||||||
String_type add_esc_chars( const String_type& s )
|
String_type add_esc_chars( const String_type& s )
|
||||||
{
|
{
|
||||||
typedef typename String_type::const_iterator Iter_type;
|
typedef typename String_type::const_iterator Iter_type;
|
||||||
typedef typename String_type::value_type Char_type;
|
typedef typename String_type::value_type Char_type;
|
||||||
|
|
||||||
String_type result;
|
String_type result;
|
||||||
|
|
||||||
const Iter_type end( s.end() );
|
const Iter_type end( s.end() );
|
||||||
|
|
||||||
for( Iter_type i = s.begin(); i != end; ++i )
|
for( Iter_type i = s.begin(); i != end; ++i )
|
||||||
{
|
{
|
||||||
const Char_type c( *i );
|
const Char_type c( *i );
|
||||||
|
|
||||||
if( add_esc_char( c, result ) ) continue;
|
if( add_esc_char( c, result ) ) continue;
|
||||||
|
|
||||||
const wint_t unsigned_c( ( c >= 0 ) ? c : 256 + c );
|
const wint_t unsigned_c( ( c >= 0 ) ? c : 256 + c );
|
||||||
|
|
||||||
if( iswprint( unsigned_c ) )
|
if( iswprint( unsigned_c ) )
|
||||||
{
|
{
|
||||||
result += c;
|
result += c;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result += non_printable_to_string< String_type >( unsigned_c );
|
result += non_printable_to_string< String_type >( unsigned_c );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// this class generates the JSON text,
|
// this class generates the JSON text,
|
||||||
// it keeps track of the indentation level etc.
|
// it keeps track of the indentation level etc.
|
||||||
//
|
//
|
||||||
template< class Value_type, class Ostream_type >
|
template< class Value_type, class Ostream_type >
|
||||||
class Generator
|
class Generator
|
||||||
{
|
{
|
||||||
typedef typename Value_type::Config_type Config_type;
|
typedef typename Value_type::Config_type Config_type;
|
||||||
typedef typename Config_type::String_type String_type;
|
typedef typename Config_type::String_type String_type;
|
||||||
typedef typename Config_type::Object_type Object_type;
|
typedef typename Config_type::Object_type Object_type;
|
||||||
typedef typename Config_type::Array_type Array_type;
|
typedef typename Config_type::Array_type Array_type;
|
||||||
typedef typename String_type::value_type Char_type;
|
typedef typename String_type::value_type Char_type;
|
||||||
typedef typename Object_type::value_type Obj_member_type;
|
typedef typename Object_type::value_type Obj_member_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Generator( const Value_type& value, Ostream_type& os, bool pretty )
|
Generator( const Value_type& value, Ostream_type& os, bool pretty )
|
||||||
: os_( os )
|
: os_( os )
|
||||||
, indentation_level_( 0 )
|
, indentation_level_( 0 )
|
||||||
, pretty_( pretty )
|
, pretty_( pretty )
|
||||||
{
|
{
|
||||||
output( value );
|
output( value );
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void output( const Value_type& value )
|
void output( const Value_type& value )
|
||||||
{
|
{
|
||||||
switch( value.type() )
|
switch( value.type() )
|
||||||
{
|
{
|
||||||
case obj_type: output( value.get_obj() ); break;
|
case obj_type: output( value.get_obj() ); break;
|
||||||
case array_type: output( value.get_array() ); break;
|
case array_type: output( value.get_array() ); break;
|
||||||
case str_type: output( value.get_str() ); break;
|
case str_type: output( value.get_str() ); break;
|
||||||
case bool_type: output( value.get_bool() ); break;
|
case bool_type: output( value.get_bool() ); break;
|
||||||
case int_type: output_int( value ); break;
|
case int_type: output_int( value ); break;
|
||||||
case real_type: os_ << std::showpoint << std::setprecision( 16 )
|
case real_type: os_ << std::showpoint << std::setprecision( 16 )
|
||||||
<< value.get_real(); break;
|
<< value.get_real(); break;
|
||||||
case null_type: os_ << "null"; break;
|
case null_type: os_ << "null"; break;
|
||||||
default: assert( false );
|
default: assert( false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void output( const Object_type& obj )
|
void output( const Object_type& obj )
|
||||||
{
|
{
|
||||||
output_array_or_obj( obj, '{', '}' );
|
output_array_or_obj( obj, '{', '}' );
|
||||||
}
|
}
|
||||||
|
|
||||||
void output( const Array_type& arr )
|
void output( const Array_type& arr )
|
||||||
{
|
{
|
||||||
output_array_or_obj( arr, '[', ']' );
|
output_array_or_obj( arr, '[', ']' );
|
||||||
}
|
}
|
||||||
|
|
||||||
void output( const Obj_member_type& member )
|
void output( const Obj_member_type& member )
|
||||||
{
|
{
|
||||||
output( Config_type::get_name( member ) ); space();
|
output( Config_type::get_name( member ) ); space();
|
||||||
os_ << ':'; space();
|
os_ << ':'; space();
|
||||||
output( Config_type::get_value( member ) );
|
output( Config_type::get_value( member ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_int( const Value_type& value )
|
void output_int( const Value_type& value )
|
||||||
{
|
{
|
||||||
if( value.is_uint64() )
|
if( value.is_uint64() )
|
||||||
{
|
{
|
||||||
os_ << value.get_uint64();
|
os_ << value.get_uint64();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
os_ << value.get_int64();
|
os_ << value.get_int64();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void output( const String_type& s )
|
void output( const String_type& s )
|
||||||
{
|
{
|
||||||
os_ << '"' << add_esc_chars( s ) << '"';
|
os_ << '"' << add_esc_chars( s ) << '"';
|
||||||
}
|
}
|
||||||
|
|
||||||
void output( bool b )
|
void output( bool b )
|
||||||
{
|
{
|
||||||
os_ << to_str< String_type >( b ? "true" : "false" );
|
os_ << to_str< String_type >( b ? "true" : "false" );
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
void output_array_or_obj( const T& t, Char_type start_char, Char_type end_char )
|
void output_array_or_obj( const T& t, Char_type start_char, Char_type end_char )
|
||||||
{
|
{
|
||||||
os_ << start_char; new_line();
|
os_ << start_char; new_line();
|
||||||
|
|
||||||
++indentation_level_;
|
++indentation_level_;
|
||||||
|
|
||||||
for( typename T::const_iterator i = t.begin(); i != t.end(); ++i )
|
for( typename T::const_iterator i = t.begin(); i != t.end(); ++i )
|
||||||
{
|
{
|
||||||
indent(); output( *i );
|
indent(); output( *i );
|
||||||
|
|
||||||
typename T::const_iterator next = i;
|
typename T::const_iterator next = i;
|
||||||
|
|
||||||
if( ++next != t.end())
|
if( ++next != t.end())
|
||||||
{
|
{
|
||||||
os_ << ',';
|
os_ << ',';
|
||||||
}
|
}
|
||||||
|
|
||||||
new_line();
|
new_line();
|
||||||
}
|
}
|
||||||
|
|
||||||
--indentation_level_;
|
--indentation_level_;
|
||||||
|
|
||||||
indent(); os_ << end_char;
|
indent(); os_ << end_char;
|
||||||
}
|
}
|
||||||
|
|
||||||
void indent()
|
void indent()
|
||||||
{
|
{
|
||||||
if( !pretty_ ) return;
|
if( !pretty_ ) return;
|
||||||
|
|
||||||
for( int i = 0; i < indentation_level_; ++i )
|
for( int i = 0; i < indentation_level_; ++i )
|
||||||
{
|
{
|
||||||
os_ << " ";
|
os_ << " ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void space()
|
void space()
|
||||||
{
|
{
|
||||||
if( pretty_ ) os_ << ' ';
|
if( pretty_ ) os_ << ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
void new_line()
|
void new_line()
|
||||||
{
|
{
|
||||||
if( pretty_ ) os_ << '\n';
|
if( pretty_ ) os_ << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
Generator& operator=( const Generator& ); // to prevent "assignment operator could not be generated" warning
|
Generator& operator=( const Generator& ); // to prevent "assignment operator could not be generated" warning
|
||||||
|
|
||||||
Ostream_type& os_;
|
Ostream_type& os_;
|
||||||
int indentation_level_;
|
int indentation_level_;
|
||||||
bool pretty_;
|
bool pretty_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template< class Value_type, class Ostream_type >
|
template< class Value_type, class Ostream_type >
|
||||||
void write_stream( const Value_type& value, Ostream_type& os, bool pretty )
|
void write_stream( const Value_type& value, Ostream_type& os, bool pretty )
|
||||||
{
|
{
|
||||||
Generator< Value_type, Ostream_type >( value, os, pretty );
|
Generator< Value_type, Ostream_type >( value, os, pretty );
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class Value_type >
|
template< class Value_type >
|
||||||
typename Value_type::String_type write_string( const Value_type& value, bool pretty )
|
typename Value_type::String_type write_string( const Value_type& value, bool pretty )
|
||||||
{
|
{
|
||||||
typedef typename Value_type::String_type::value_type Char_type;
|
typedef typename Value_type::String_type::value_type Char_type;
|
||||||
|
|
||||||
std::basic_ostringstream< Char_type > os;
|
std::basic_ostringstream< Char_type > os;
|
||||||
|
|
||||||
write_stream( value, os, pretty );
|
write_stream( value, os, pretty );
|
||||||
|
|
||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,168 +1,168 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
// secp160k1
|
// secp160k1
|
||||||
// const unsigned int PRIVATE_KEY_SIZE = 192;
|
// const unsigned int PRIVATE_KEY_SIZE = 192;
|
||||||
// const unsigned int PUBLIC_KEY_SIZE = 41;
|
// const unsigned int PUBLIC_KEY_SIZE = 41;
|
||||||
// const unsigned int SIGNATURE_SIZE = 48;
|
// const unsigned int SIGNATURE_SIZE = 48;
|
||||||
//
|
//
|
||||||
// secp192k1
|
// secp192k1
|
||||||
// const unsigned int PRIVATE_KEY_SIZE = 222;
|
// const unsigned int PRIVATE_KEY_SIZE = 222;
|
||||||
// const unsigned int PUBLIC_KEY_SIZE = 49;
|
// const unsigned int PUBLIC_KEY_SIZE = 49;
|
||||||
// const unsigned int SIGNATURE_SIZE = 57;
|
// const unsigned int SIGNATURE_SIZE = 57;
|
||||||
//
|
//
|
||||||
// secp224k1
|
// secp224k1
|
||||||
// const unsigned int PRIVATE_KEY_SIZE = 250;
|
// const unsigned int PRIVATE_KEY_SIZE = 250;
|
||||||
// const unsigned int PUBLIC_KEY_SIZE = 57;
|
// const unsigned int PUBLIC_KEY_SIZE = 57;
|
||||||
// const unsigned int SIGNATURE_SIZE = 66;
|
// const unsigned int SIGNATURE_SIZE = 66;
|
||||||
//
|
//
|
||||||
// secp256k1:
|
// secp256k1:
|
||||||
// const unsigned int PRIVATE_KEY_SIZE = 279;
|
// const unsigned int PRIVATE_KEY_SIZE = 279;
|
||||||
// const unsigned int PUBLIC_KEY_SIZE = 65;
|
// const unsigned int PUBLIC_KEY_SIZE = 65;
|
||||||
// const unsigned int SIGNATURE_SIZE = 72;
|
// const unsigned int SIGNATURE_SIZE = 72;
|
||||||
//
|
//
|
||||||
// see www.keylength.com
|
// see www.keylength.com
|
||||||
// script supports up to 75 for single byte push
|
// script supports up to 75 for single byte push
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class key_error : public std::runtime_error
|
class key_error : public std::runtime_error
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit key_error(const std::string& str) : std::runtime_error(str) {}
|
explicit key_error(const std::string& str) : std::runtime_error(str) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// secure_allocator is defined in serialize.h
|
// secure_allocator is defined in serialize.h
|
||||||
typedef vector<unsigned char, secure_allocator<unsigned char> > CPrivKey;
|
typedef vector<unsigned char, secure_allocator<unsigned char> > CPrivKey;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CKey
|
class CKey
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
EC_KEY* pkey;
|
EC_KEY* pkey;
|
||||||
bool fSet;
|
bool fSet;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CKey()
|
CKey()
|
||||||
{
|
{
|
||||||
pkey = EC_KEY_new_by_curve_name(NID_secp256k1);
|
pkey = EC_KEY_new_by_curve_name(NID_secp256k1);
|
||||||
if (pkey == NULL)
|
if (pkey == NULL)
|
||||||
throw key_error("CKey::CKey() : EC_KEY_new_by_curve_name failed");
|
throw key_error("CKey::CKey() : EC_KEY_new_by_curve_name failed");
|
||||||
fSet = false;
|
fSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CKey(const CKey& b)
|
CKey(const CKey& b)
|
||||||
{
|
{
|
||||||
pkey = EC_KEY_dup(b.pkey);
|
pkey = EC_KEY_dup(b.pkey);
|
||||||
if (pkey == NULL)
|
if (pkey == NULL)
|
||||||
throw key_error("CKey::CKey(const CKey&) : EC_KEY_dup failed");
|
throw key_error("CKey::CKey(const CKey&) : EC_KEY_dup failed");
|
||||||
fSet = b.fSet;
|
fSet = b.fSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
CKey& operator=(const CKey& b)
|
CKey& operator=(const CKey& b)
|
||||||
{
|
{
|
||||||
if (!EC_KEY_copy(pkey, b.pkey))
|
if (!EC_KEY_copy(pkey, b.pkey))
|
||||||
throw key_error("CKey::operator=(const CKey&) : EC_KEY_copy failed");
|
throw key_error("CKey::operator=(const CKey&) : EC_KEY_copy failed");
|
||||||
fSet = b.fSet;
|
fSet = b.fSet;
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
~CKey()
|
~CKey()
|
||||||
{
|
{
|
||||||
EC_KEY_free(pkey);
|
EC_KEY_free(pkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsNull() const
|
bool IsNull() const
|
||||||
{
|
{
|
||||||
return !fSet;
|
return !fSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeNewKey()
|
void MakeNewKey()
|
||||||
{
|
{
|
||||||
if (!EC_KEY_generate_key(pkey))
|
if (!EC_KEY_generate_key(pkey))
|
||||||
throw key_error("CKey::MakeNewKey() : EC_KEY_generate_key failed");
|
throw key_error("CKey::MakeNewKey() : EC_KEY_generate_key failed");
|
||||||
fSet = true;
|
fSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SetPrivKey(const CPrivKey& vchPrivKey)
|
bool SetPrivKey(const CPrivKey& vchPrivKey)
|
||||||
{
|
{
|
||||||
const unsigned char* pbegin = &vchPrivKey[0];
|
const unsigned char* pbegin = &vchPrivKey[0];
|
||||||
if (!d2i_ECPrivateKey(&pkey, &pbegin, vchPrivKey.size()))
|
if (!d2i_ECPrivateKey(&pkey, &pbegin, vchPrivKey.size()))
|
||||||
return false;
|
return false;
|
||||||
fSet = true;
|
fSet = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
CPrivKey GetPrivKey() const
|
CPrivKey GetPrivKey() const
|
||||||
{
|
{
|
||||||
unsigned int nSize = i2d_ECPrivateKey(pkey, NULL);
|
unsigned int nSize = i2d_ECPrivateKey(pkey, NULL);
|
||||||
if (!nSize)
|
if (!nSize)
|
||||||
throw key_error("CKey::GetPrivKey() : i2d_ECPrivateKey failed");
|
throw key_error("CKey::GetPrivKey() : i2d_ECPrivateKey failed");
|
||||||
CPrivKey vchPrivKey(nSize, 0);
|
CPrivKey vchPrivKey(nSize, 0);
|
||||||
unsigned char* pbegin = &vchPrivKey[0];
|
unsigned char* pbegin = &vchPrivKey[0];
|
||||||
if (i2d_ECPrivateKey(pkey, &pbegin) != nSize)
|
if (i2d_ECPrivateKey(pkey, &pbegin) != nSize)
|
||||||
throw key_error("CKey::GetPrivKey() : i2d_ECPrivateKey returned unexpected size");
|
throw key_error("CKey::GetPrivKey() : i2d_ECPrivateKey returned unexpected size");
|
||||||
return vchPrivKey;
|
return vchPrivKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SetPubKey(const vector<unsigned char>& vchPubKey)
|
bool SetPubKey(const vector<unsigned char>& vchPubKey)
|
||||||
{
|
{
|
||||||
const unsigned char* pbegin = &vchPubKey[0];
|
const unsigned char* pbegin = &vchPubKey[0];
|
||||||
if (!o2i_ECPublicKey(&pkey, &pbegin, vchPubKey.size()))
|
if (!o2i_ECPublicKey(&pkey, &pbegin, vchPubKey.size()))
|
||||||
return false;
|
return false;
|
||||||
fSet = true;
|
fSet = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<unsigned char> GetPubKey() const
|
vector<unsigned char> GetPubKey() const
|
||||||
{
|
{
|
||||||
unsigned int nSize = i2o_ECPublicKey(pkey, NULL);
|
unsigned int nSize = i2o_ECPublicKey(pkey, NULL);
|
||||||
if (!nSize)
|
if (!nSize)
|
||||||
throw key_error("CKey::GetPubKey() : i2o_ECPublicKey failed");
|
throw key_error("CKey::GetPubKey() : i2o_ECPublicKey failed");
|
||||||
vector<unsigned char> vchPubKey(nSize, 0);
|
vector<unsigned char> vchPubKey(nSize, 0);
|
||||||
unsigned char* pbegin = &vchPubKey[0];
|
unsigned char* pbegin = &vchPubKey[0];
|
||||||
if (i2o_ECPublicKey(pkey, &pbegin) != nSize)
|
if (i2o_ECPublicKey(pkey, &pbegin) != nSize)
|
||||||
throw key_error("CKey::GetPubKey() : i2o_ECPublicKey returned unexpected size");
|
throw key_error("CKey::GetPubKey() : i2o_ECPublicKey returned unexpected size");
|
||||||
return vchPubKey;
|
return vchPubKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Sign(uint256 hash, vector<unsigned char>& vchSig)
|
bool Sign(uint256 hash, vector<unsigned char>& vchSig)
|
||||||
{
|
{
|
||||||
vchSig.clear();
|
vchSig.clear();
|
||||||
unsigned char pchSig[10000];
|
unsigned char pchSig[10000];
|
||||||
unsigned int nSize = 0;
|
unsigned int nSize = 0;
|
||||||
if (!ECDSA_sign(0, (unsigned char*)&hash, sizeof(hash), pchSig, &nSize, pkey))
|
if (!ECDSA_sign(0, (unsigned char*)&hash, sizeof(hash), pchSig, &nSize, pkey))
|
||||||
return false;
|
return false;
|
||||||
vchSig.resize(nSize);
|
vchSig.resize(nSize);
|
||||||
memcpy(&vchSig[0], pchSig, nSize);
|
memcpy(&vchSig[0], pchSig, nSize);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Verify(uint256 hash, const vector<unsigned char>& vchSig)
|
bool Verify(uint256 hash, const vector<unsigned char>& vchSig)
|
||||||
{
|
{
|
||||||
// -1 = error, 0 = bad sig, 1 = good
|
// -1 = error, 0 = bad sig, 1 = good
|
||||||
if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1)
|
if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1)
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool Sign(const CPrivKey& vchPrivKey, uint256 hash, vector<unsigned char>& vchSig)
|
static bool Sign(const CPrivKey& vchPrivKey, uint256 hash, vector<unsigned char>& vchSig)
|
||||||
{
|
{
|
||||||
CKey key;
|
CKey key;
|
||||||
if (!key.SetPrivKey(vchPrivKey))
|
if (!key.SetPrivKey(vchPrivKey))
|
||||||
return false;
|
return false;
|
||||||
return key.Sign(hash, vchSig);
|
return key.Sign(hash, vchSig);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool Verify(const vector<unsigned char>& vchPubKey, uint256 hash, const vector<unsigned char>& vchSig)
|
static bool Verify(const vector<unsigned char>& vchPubKey, uint256 hash, const vector<unsigned char>& vchSig)
|
||||||
{
|
{
|
||||||
CKey key;
|
CKey key;
|
||||||
if (!key.SetPubKey(vchPubKey))
|
if (!key.SetPubKey(vchPubKey))
|
||||||
return false;
|
return false;
|
||||||
return key.Verify(hash, vchSig);
|
return key.Verify(hash, vchSig);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
+19
-19
@@ -1,19 +1,19 @@
|
|||||||
Copyright (c) 2009-2010 Satoshi Nakamoto
|
Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
in the Software without restriction, including without limitation the rights
|
in the Software without restriction, including without limitation the rights
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
furnished to do so, subject to the following conditions:
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
The above copyright notice and this permission notice shall be included in
|
||||||
all copies or substantial portions of the Software.
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|||||||
+807
-807
File diff suppressed because it is too large
Load Diff
+5
-5
@@ -1,5 +1,5 @@
|
|||||||
put bitcoin.po and bitcoin.mo files at:
|
put bitcoin.po and bitcoin.mo files at:
|
||||||
locale/<langcode>/LC_MESSAGES/bitcoin.mo and .po
|
locale/<langcode>/LC_MESSAGES/bitcoin.mo and .po
|
||||||
|
|
||||||
.po is the sourcefile
|
.po is the sourcefile
|
||||||
.mo is the compiled translation
|
.mo is the compiled translation
|
||||||
|
|||||||
+76
-76
@@ -1,76 +1,76 @@
|
|||||||
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
# Distributed under the MIT/X11 software license, see the accompanying
|
||||||
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
# for wxWidgets-2.8.x, search and replace "mswud"->"mswd" and "29u"->"28"
|
# for wxWidgets-2.8.x, search and replace "mswud"->"mswd" and "29u"->"28"
|
||||||
|
|
||||||
INCLUDEPATHS= \
|
INCLUDEPATHS= \
|
||||||
-I"/boost" \
|
-I"/boost" \
|
||||||
-I"/db/build_unix" \
|
-I"/db/build_unix" \
|
||||||
-I"/openssl/include" \
|
-I"/openssl/include" \
|
||||||
-I"/wxwidgets/lib/gcc_lib/mswud" \
|
-I"/wxwidgets/lib/gcc_lib/mswud" \
|
||||||
-I"/wxwidgets/include"
|
-I"/wxwidgets/include"
|
||||||
|
|
||||||
LIBPATHS= \
|
LIBPATHS= \
|
||||||
-L"/boost/stage/lib" \
|
-L"/boost/stage/lib" \
|
||||||
-L"/db/build_unix" \
|
-L"/db/build_unix" \
|
||||||
-L"/openssl/out" \
|
-L"/openssl/out" \
|
||||||
-L"/wxwidgets/lib/gcc_lib"
|
-L"/wxwidgets/lib/gcc_lib"
|
||||||
|
|
||||||
WXLIBS= \
|
WXLIBS= \
|
||||||
-l wxmsw29ud_html -l wxmsw29ud_core -l wxmsw29ud_adv -l wxbase29ud -l wxtiffd -l wxjpegd -l wxpngd -l wxzlibd
|
-l wxmsw29ud_html -l wxmsw29ud_core -l wxmsw29ud_adv -l wxbase29ud -l wxtiffd -l wxjpegd -l wxpngd -l wxzlibd
|
||||||
|
|
||||||
LIBS= \
|
LIBS= \
|
||||||
-l libboost_system-mgw34-mt-d -l libboost_filesystem-mgw34-mt-d \
|
-l libboost_system-mgw34-mt-d -l libboost_filesystem-mgw34-mt-d \
|
||||||
-l db_cxx \
|
-l db_cxx \
|
||||||
-l eay32 \
|
-l eay32 \
|
||||||
-l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi
|
-l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi
|
||||||
|
|
||||||
WXDEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH
|
WXDEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH
|
||||||
DEBUGFLAGS=-g -D__WXDEBUG__
|
DEBUGFLAGS=-g -D__WXDEBUG__
|
||||||
CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
||||||
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
||||||
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
||||||
|
|
||||||
|
|
||||||
all: bitcoin.exe
|
all: bitcoin.exe
|
||||||
|
|
||||||
|
|
||||||
headers.h.gch: headers.h $(HEADERS)
|
headers.h.gch: headers.h $(HEADERS)
|
||||||
g++ -c $(CFLAGS) -o $@ $<
|
g++ -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
obj/%.o: %.cpp $(HEADERS) headers.h.gch
|
obj/%.o: %.cpp $(HEADERS) headers.h.gch
|
||||||
g++ -c $(CFLAGS) -o $@ $<
|
g++ -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
obj/sha.o: sha.cpp sha.h
|
obj/sha.o: sha.cpp sha.h
|
||||||
g++ -c $(CFLAGS) -O3 -o $@ $<
|
g++ -c $(CFLAGS) -O3 -o $@ $<
|
||||||
|
|
||||||
obj/ui_res.o: ui.rc rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp
|
obj/ui_res.o: ui.rc rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp
|
||||||
windres $(WXDEFS) $(INCLUDEPATHS) -o $@ -i $<
|
windres $(WXDEFS) $(INCLUDEPATHS) -o $@ -i $<
|
||||||
|
|
||||||
OBJS= \
|
OBJS= \
|
||||||
obj/util.o \
|
obj/util.o \
|
||||||
obj/script.o \
|
obj/script.o \
|
||||||
obj/db.o \
|
obj/db.o \
|
||||||
obj/net.o \
|
obj/net.o \
|
||||||
obj/irc.o \
|
obj/irc.o \
|
||||||
obj/main.o \
|
obj/main.o \
|
||||||
obj/rpc.o \
|
obj/rpc.o \
|
||||||
obj/init.o
|
obj/init.o
|
||||||
|
|
||||||
bitcoin.exe: $(OBJS) obj/ui.o obj/uibase.o obj/sha.o obj/ui_res.o
|
bitcoin.exe: $(OBJS) obj/ui.o obj/uibase.o obj/sha.o obj/ui_res.o
|
||||||
g++ $(CFLAGS) -mwindows -Wl,--subsystem,windows -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
g++ $(CFLAGS) -mwindows -Wl,--subsystem,windows -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
obj/nogui/%.o: %.cpp $(HEADERS)
|
obj/nogui/%.o: %.cpp $(HEADERS)
|
||||||
g++ -c $(CFLAGS) -DwxUSE_GUI=0 -o $@ $<
|
g++ -c $(CFLAGS) -DwxUSE_GUI=0 -o $@ $<
|
||||||
|
|
||||||
bitcoind.exe: $(OBJS:obj/%=obj/nogui/%) obj/sha.o obj/ui_res.o
|
bitcoind.exe: $(OBJS:obj/%=obj/nogui/%) obj/sha.o obj/ui_res.o
|
||||||
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ -l wxbase29ud $(LIBS)
|
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ -l wxbase29ud $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-del /Q obj\*
|
-del /Q obj\*
|
||||||
-del /Q obj\nogui\*
|
-del /Q obj\nogui\*
|
||||||
-del /Q headers.h.gch
|
-del /Q headers.h.gch
|
||||||
|
|||||||
+65
-65
@@ -1,65 +1,65 @@
|
|||||||
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
# Distributed under the MIT/X11 software license, see the accompanying
|
||||||
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
# Mac OS X makefile for bitcoin
|
# Mac OS X makefile for bitcoin
|
||||||
# Laszlo Hanyecz (solar@heliacal.net)
|
# Laszlo Hanyecz (solar@heliacal.net)
|
||||||
|
|
||||||
DEPSDIR=/Users/macosuser/bitcoin/deps
|
DEPSDIR=/Users/macosuser/bitcoin/deps
|
||||||
|
|
||||||
INCLUDEPATHS= \
|
INCLUDEPATHS= \
|
||||||
-I"$(DEPSDIR)/include"
|
-I"$(DEPSDIR)/include"
|
||||||
|
|
||||||
LIBPATHS= \
|
LIBPATHS= \
|
||||||
-L"$(DEPSDIR)/lib"
|
-L"$(DEPSDIR)/lib"
|
||||||
|
|
||||||
WXLIBS=$(shell $(DEPSDIR)/bin/wx-config --libs --static)
|
WXLIBS=$(shell $(DEPSDIR)/bin/wx-config --libs --static)
|
||||||
|
|
||||||
LIBS= -dead_strip \
|
LIBS= -dead_strip \
|
||||||
$(DEPSDIR)/lib/libdb_cxx-4.8.a \
|
$(DEPSDIR)/lib/libdb_cxx-4.8.a \
|
||||||
$(DEPSDIR)/lib/libboost_system.a \
|
$(DEPSDIR)/lib/libboost_system.a \
|
||||||
$(DEPSDIR)/lib/libboost_filesystem.a \
|
$(DEPSDIR)/lib/libboost_filesystem.a \
|
||||||
$(DEPSDIR)/lib/libcrypto.a
|
$(DEPSDIR)/lib/libcrypto.a
|
||||||
|
|
||||||
WXDEFS=$(shell $(DEPSDIR)/bin/wx-config --cxxflags) -DNOPCH -DMSG_NOSIGNAL=0
|
WXDEFS=$(shell $(DEPSDIR)/bin/wx-config --cxxflags) -DNOPCH -DMSG_NOSIGNAL=0
|
||||||
|
|
||||||
DEBUGFLAGS=-g -DwxDEBUG_LEVEL=0
|
DEBUGFLAGS=-g -DwxDEBUG_LEVEL=0
|
||||||
# ppc doesn't work because we don't support big-endian
|
# ppc doesn't work because we don't support big-endian
|
||||||
CFLAGS=-mmacosx-version-min=10.5 -arch i386 -arch x86_64 -O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
CFLAGS=-mmacosx-version-min=10.5 -arch i386 -arch x86_64 -O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
||||||
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
||||||
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
||||||
|
|
||||||
|
|
||||||
all: bitcoin
|
all: bitcoin
|
||||||
|
|
||||||
|
|
||||||
obj/%.o: %.cpp $(HEADERS)
|
obj/%.o: %.cpp $(HEADERS)
|
||||||
g++ -c $(CFLAGS) -o $@ $<
|
g++ -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
obj/sha.o: sha.cpp sha.h
|
obj/sha.o: sha.cpp sha.h
|
||||||
g++ -c $(CFLAGS) -O3 -o $@ $<
|
g++ -c $(CFLAGS) -O3 -o $@ $<
|
||||||
|
|
||||||
OBJS= \
|
OBJS= \
|
||||||
obj/util.o \
|
obj/util.o \
|
||||||
obj/script.o \
|
obj/script.o \
|
||||||
obj/db.o \
|
obj/db.o \
|
||||||
obj/net.o \
|
obj/net.o \
|
||||||
obj/irc.o \
|
obj/irc.o \
|
||||||
obj/main.o \
|
obj/main.o \
|
||||||
obj/rpc.o \
|
obj/rpc.o \
|
||||||
obj/init.o
|
obj/init.o
|
||||||
|
|
||||||
bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha.o
|
bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha.o
|
||||||
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
obj/nogui/%.o: %.cpp $(HEADERS)
|
obj/nogui/%.o: %.cpp $(HEADERS)
|
||||||
g++ -c $(CFLAGS) -DwxUSE_GUI=0 -o $@ $<
|
g++ -c $(CFLAGS) -DwxUSE_GUI=0 -o $@ $<
|
||||||
|
|
||||||
bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha.o
|
bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha.o
|
||||||
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -f obj/*.o
|
-rm -f obj/*.o
|
||||||
-rm -f obj/nogui/*.o
|
-rm -f obj/nogui/*.o
|
||||||
|
|||||||
+73
-73
@@ -1,73 +1,73 @@
|
|||||||
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
# Distributed under the MIT/X11 software license, see the accompanying
|
||||||
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDEPATHS= \
|
INCLUDEPATHS= \
|
||||||
-I"/usr/include" \
|
-I"/usr/include" \
|
||||||
-I"/usr/local/include/wx-2.9" \
|
-I"/usr/local/include/wx-2.9" \
|
||||||
-I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9"
|
-I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9"
|
||||||
|
|
||||||
LIBPATHS= \
|
LIBPATHS= \
|
||||||
-L"/usr/lib" \
|
-L"/usr/lib" \
|
||||||
-L"/usr/local/lib"
|
-L"/usr/local/lib"
|
||||||
|
|
||||||
WXLIBS= \
|
WXLIBS= \
|
||||||
-Wl,-Bstatic \
|
-Wl,-Bstatic \
|
||||||
-l wx_gtk2ud-2.9 \
|
-l wx_gtk2ud-2.9 \
|
||||||
-Wl,-Bdynamic \
|
-Wl,-Bdynamic \
|
||||||
-l gtk-x11-2.0 -l SM
|
-l gtk-x11-2.0 -l SM
|
||||||
|
|
||||||
LIBS= \
|
LIBS= \
|
||||||
-Wl,-Bstatic \
|
-Wl,-Bstatic \
|
||||||
-l boost_system -l boost_filesystem \
|
-l boost_system -l boost_filesystem \
|
||||||
-l db_cxx \
|
-l db_cxx \
|
||||||
-Wl,-Bdynamic \
|
-Wl,-Bdynamic \
|
||||||
-l crypto \
|
-l crypto \
|
||||||
-l gthread-2.0
|
-l gthread-2.0
|
||||||
|
|
||||||
WXDEFS=-D__WXGTK__ -DNOPCH
|
WXDEFS=-D__WXGTK__ -DNOPCH
|
||||||
DEBUGFLAGS=-g -D__WXDEBUG__
|
DEBUGFLAGS=-g -D__WXDEBUG__
|
||||||
CFLAGS=-O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
CFLAGS=-O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
||||||
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
||||||
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
||||||
|
|
||||||
|
|
||||||
all: bitcoin
|
all: bitcoin
|
||||||
|
|
||||||
|
|
||||||
headers.h.gch: headers.h $(HEADERS)
|
headers.h.gch: headers.h $(HEADERS)
|
||||||
g++ -c $(CFLAGS) -o $@ $<
|
g++ -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
obj/%.o: %.cpp $(HEADERS) headers.h.gch
|
obj/%.o: %.cpp $(HEADERS) headers.h.gch
|
||||||
g++ -c $(CFLAGS) -o $@ $<
|
g++ -c $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
obj/sha.o: sha.cpp sha.h
|
obj/sha.o: sha.cpp sha.h
|
||||||
g++ -c $(CFLAGS) -O3 -o $@ $<
|
g++ -c $(CFLAGS) -O3 -o $@ $<
|
||||||
|
|
||||||
OBJS= \
|
OBJS= \
|
||||||
obj/util.o \
|
obj/util.o \
|
||||||
obj/script.o \
|
obj/script.o \
|
||||||
obj/db.o \
|
obj/db.o \
|
||||||
obj/net.o \
|
obj/net.o \
|
||||||
obj/irc.o \
|
obj/irc.o \
|
||||||
obj/main.o \
|
obj/main.o \
|
||||||
obj/rpc.o \
|
obj/rpc.o \
|
||||||
obj/init.o
|
obj/init.o
|
||||||
|
|
||||||
bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha.o
|
bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha.o
|
||||||
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
obj/nogui/%.o: %.cpp $(HEADERS)
|
obj/nogui/%.o: %.cpp $(HEADERS)
|
||||||
g++ -c $(CFLAGS) -DwxUSE_GUI=0 -o $@ $<
|
g++ -c $(CFLAGS) -DwxUSE_GUI=0 -o $@ $<
|
||||||
|
|
||||||
bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha.o
|
bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha.o
|
||||||
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ -l wx_baseud-2.9 $(LIBS)
|
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ -l wx_baseud-2.9 $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -f obj/*.o
|
-rm -f obj/*.o
|
||||||
-rm -f obj/nogui/*.o
|
-rm -f obj/nogui/*.o
|
||||||
-rm -f headers.h.gch
|
-rm -f headers.h.gch
|
||||||
|
|||||||
+107
-107
@@ -1,107 +1,107 @@
|
|||||||
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
# Distributed under the MIT/X11 software license, see the accompanying
|
||||||
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
# for wxWidgets-2.8.x, search and replace "mswud"->"mswd" and "29u"->"28"
|
# for wxWidgets-2.8.x, search and replace "mswud"->"mswd" and "29u"->"28"
|
||||||
|
|
||||||
INCLUDEPATHS= \
|
INCLUDEPATHS= \
|
||||||
/I"/boost" \
|
/I"/boost" \
|
||||||
/I"/db/build_windows" \
|
/I"/db/build_windows" \
|
||||||
/I"/openssl/include" \
|
/I"/openssl/include" \
|
||||||
/I"/wxwidgets/lib/vc_lib/mswud" \
|
/I"/wxwidgets/lib/vc_lib/mswud" \
|
||||||
/I"/wxwidgets/include"
|
/I"/wxwidgets/include"
|
||||||
|
|
||||||
LIBPATHS= \
|
LIBPATHS= \
|
||||||
/LIBPATH:"/boost/stage/lib" \
|
/LIBPATH:"/boost/stage/lib" \
|
||||||
/LIBPATH:"/db/build_windows/debug" \
|
/LIBPATH:"/db/build_windows/debug" \
|
||||||
/LIBPATH:"/openssl/out" \
|
/LIBPATH:"/openssl/out" \
|
||||||
/LIBPATH:"/wxwidgets/lib/vc_lib"
|
/LIBPATH:"/wxwidgets/lib/vc_lib"
|
||||||
|
|
||||||
LIBS= \
|
LIBS= \
|
||||||
libboost_system-vc80-mt-gd.lib libboost_filesystem-vc80-mt-gd.lib \
|
libboost_system-vc80-mt-gd.lib libboost_filesystem-vc80-mt-gd.lib \
|
||||||
libdb47sd.lib \
|
libdb47sd.lib \
|
||||||
libeay32.lib \
|
libeay32.lib \
|
||||||
wxmsw29ud_html.lib wxmsw29ud_core.lib wxmsw29ud_adv.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib \
|
wxmsw29ud_html.lib wxmsw29ud_core.lib wxmsw29ud_adv.lib wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib \
|
||||||
kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ws2_32.lib shlwapi.lib
|
kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ws2_32.lib shlwapi.lib
|
||||||
|
|
||||||
WXDEFS=/DWIN32 /D__WXMSW__ /D_WINDOWS /DNOPCH
|
WXDEFS=/DWIN32 /D__WXMSW__ /D_WINDOWS /DNOPCH
|
||||||
DEBUGFLAGS=/Zi /Od /D__WXDEBUG__
|
DEBUGFLAGS=/Zi /Od /D__WXDEBUG__
|
||||||
CFLAGS=/c /nologo /Ob0 /MDd /EHsc /GR /Zm300 $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
CFLAGS=/c /nologo /Ob0 /MDd /EHsc /GR /Zm300 $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
|
||||||
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
||||||
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h init.h sha.h
|
||||||
|
|
||||||
|
|
||||||
all: bitcoin.exe
|
all: bitcoin.exe
|
||||||
|
|
||||||
|
|
||||||
.cpp{obj}.obj:
|
.cpp{obj}.obj:
|
||||||
cl $(CFLAGS) /Fo$@ %s
|
cl $(CFLAGS) /Fo$@ %s
|
||||||
|
|
||||||
obj\util.obj: $(HEADERS)
|
obj\util.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\script.obj: $(HEADERS)
|
obj\script.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\db.obj: $(HEADERS)
|
obj\db.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\net.obj: $(HEADERS)
|
obj\net.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\irc.obj: $(HEADERS)
|
obj\irc.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\main.obj: $(HEADERS)
|
obj\main.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\rpc.obj: $(HEADERS)
|
obj\rpc.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\init.obj: $(HEADERS)
|
obj\init.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\ui.obj: $(HEADERS)
|
obj\ui.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\uibase.obj: $(HEADERS)
|
obj\uibase.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\sha.obj: sha.cpp sha.h
|
obj\sha.obj: sha.cpp sha.h
|
||||||
cl $(CFLAGS) /O2 /Fo$@ %s
|
cl $(CFLAGS) /O2 /Fo$@ %s
|
||||||
|
|
||||||
obj\ui.res: ui.rc rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp
|
obj\ui.res: ui.rc rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp
|
||||||
rc $(INCLUDEPATHS) $(WXDEFS) /Fo$@ %s
|
rc $(INCLUDEPATHS) $(WXDEFS) /Fo$@ %s
|
||||||
|
|
||||||
OBJS= \
|
OBJS= \
|
||||||
obj\util.obj \
|
obj\util.obj \
|
||||||
obj\script.obj \
|
obj\script.obj \
|
||||||
obj\db.obj \
|
obj\db.obj \
|
||||||
obj\net.obj \
|
obj\net.obj \
|
||||||
obj\irc.obj \
|
obj\irc.obj \
|
||||||
obj\main.obj \
|
obj\main.obj \
|
||||||
obj\rpc.obj \
|
obj\rpc.obj \
|
||||||
obj\init.obj
|
obj\init.obj
|
||||||
|
|
||||||
bitcoin.exe: $(OBJS) obj\ui.obj obj\uibase.obj obj\sha.obj obj\ui.res
|
bitcoin.exe: $(OBJS) obj\ui.obj obj\uibase.obj obj\sha.obj obj\ui.res
|
||||||
link /nologo /DEBUG /SUBSYSTEM:WINDOWS /OUT:$@ $(LIBPATHS) $** $(LIBS)
|
link /nologo /DEBUG /SUBSYSTEM:WINDOWS /OUT:$@ $(LIBPATHS) $** $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
.cpp{obj\nogui}.obj:
|
.cpp{obj\nogui}.obj:
|
||||||
cl $(CFLAGS) /DwxUSE_GUI=0 /Fo$@ %s
|
cl $(CFLAGS) /DwxUSE_GUI=0 /Fo$@ %s
|
||||||
|
|
||||||
obj\nogui\util.obj: $(HEADERS)
|
obj\nogui\util.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\nogui\script.obj: $(HEADERS)
|
obj\nogui\script.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\nogui\db.obj: $(HEADERS)
|
obj\nogui\db.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\nogui\net.obj: $(HEADERS)
|
obj\nogui\net.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\nogui\irc.obj: $(HEADERS)
|
obj\nogui\irc.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\nogui\main.obj: $(HEADERS)
|
obj\nogui\main.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\nogui\rpc.obj: $(HEADERS)
|
obj\nogui\rpc.obj: $(HEADERS)
|
||||||
|
|
||||||
obj\nogui\init.obj: $(HEADERS)
|
obj\nogui\init.obj: $(HEADERS)
|
||||||
|
|
||||||
bitcoind.exe: $(OBJS:obj\=obj\nogui\) obj\sha.obj obj\ui.res
|
bitcoind.exe: $(OBJS:obj\=obj\nogui\) obj\sha.obj obj\ui.res
|
||||||
link /nologo /DEBUG /OUT:$@ $(LIBPATHS) $** $(LIBS)
|
link /nologo /DEBUG /OUT:$@ $(LIBPATHS) $** $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-del /Q obj\*
|
-del /Q obj\*
|
||||||
-del *.ilk
|
-del *.ilk
|
||||||
-del *.pdb
|
-del *.pdb
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Copyright (c) 2010 Satoshi Nakamoto
|
// Copyright (c) 2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
void ThreadRPCServer(void* parg);
|
void ThreadRPCServer(void* parg);
|
||||||
int CommandLineRPC(int argc, char *argv[]);
|
int CommandLineRPC(int argc, char *argv[]);
|
||||||
|
|||||||
+1134
-1134
File diff suppressed because it is too large
Load Diff
+1175
-1175
File diff suppressed because it is too large
Load Diff
@@ -1,156 +1,156 @@
|
|||||||
# Auto-generated by EclipseNSIS Script Wizard
|
# Auto-generated by EclipseNSIS Script Wizard
|
||||||
# 3.10.2009 19:00:28
|
# 3.10.2009 19:00:28
|
||||||
|
|
||||||
Name Bitcoin
|
Name Bitcoin
|
||||||
|
|
||||||
RequestExecutionLevel highest
|
RequestExecutionLevel highest
|
||||||
|
|
||||||
# General Symbol Definitions
|
# General Symbol Definitions
|
||||||
!define REGKEY "SOFTWARE\$(^Name)"
|
!define REGKEY "SOFTWARE\$(^Name)"
|
||||||
!define VERSION 0.3.0
|
!define VERSION 0.3.0
|
||||||
!define COMPANY "Bitcoin project"
|
!define COMPANY "Bitcoin project"
|
||||||
!define URL http://www.bitcoin.org/
|
!define URL http://www.bitcoin.org/
|
||||||
|
|
||||||
# MUI Symbol Definitions
|
# MUI Symbol Definitions
|
||||||
!define MUI_ICON "src\rc\bitcoin.ico"
|
!define MUI_ICON "src\rc\bitcoin.ico"
|
||||||
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||||||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
|
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
|
||||||
!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
|
!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
|
||||||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
|
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
|
||||||
!define MUI_STARTMENUPAGE_DEFAULTFOLDER Bitcoin
|
!define MUI_STARTMENUPAGE_DEFAULTFOLDER Bitcoin
|
||||||
!define MUI_FINISHPAGE_RUN $INSTDIR\bitcoin.exe
|
!define MUI_FINISHPAGE_RUN $INSTDIR\bitcoin.exe
|
||||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
|
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
|
||||||
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
|
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
|
||||||
|
|
||||||
# Included files
|
# Included files
|
||||||
!include Sections.nsh
|
!include Sections.nsh
|
||||||
!include MUI2.nsh
|
!include MUI2.nsh
|
||||||
|
|
||||||
# Variables
|
# Variables
|
||||||
Var StartMenuGroup
|
Var StartMenuGroup
|
||||||
|
|
||||||
# Installer pages
|
# Installer pages
|
||||||
!insertmacro MUI_PAGE_WELCOME
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
!insertmacro MUI_PAGE_DIRECTORY
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
|
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
!insertmacro MUI_PAGE_FINISH
|
!insertmacro MUI_PAGE_FINISH
|
||||||
!insertmacro MUI_UNPAGE_CONFIRM
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
!insertmacro MUI_UNPAGE_INSTFILES
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
|
||||||
# Installer languages
|
# Installer languages
|
||||||
!insertmacro MUI_LANGUAGE English
|
!insertmacro MUI_LANGUAGE English
|
||||||
|
|
||||||
# Installer attributes
|
# Installer attributes
|
||||||
OutFile bitcoin-0.3.0-win32-setup.exe
|
OutFile bitcoin-0.3.0-win32-setup.exe
|
||||||
InstallDir $PROGRAMFILES\Bitcoin
|
InstallDir $PROGRAMFILES\Bitcoin
|
||||||
CRCCheck on
|
CRCCheck on
|
||||||
XPStyle on
|
XPStyle on
|
||||||
ShowInstDetails show
|
ShowInstDetails show
|
||||||
VIProductVersion 0.3.0.0
|
VIProductVersion 0.3.0.0
|
||||||
VIAddVersionKey ProductName Bitcoin
|
VIAddVersionKey ProductName Bitcoin
|
||||||
VIAddVersionKey ProductVersion "${VERSION}"
|
VIAddVersionKey ProductVersion "${VERSION}"
|
||||||
VIAddVersionKey CompanyName "${COMPANY}"
|
VIAddVersionKey CompanyName "${COMPANY}"
|
||||||
VIAddVersionKey CompanyWebsite "${URL}"
|
VIAddVersionKey CompanyWebsite "${URL}"
|
||||||
VIAddVersionKey FileVersion "${VERSION}"
|
VIAddVersionKey FileVersion "${VERSION}"
|
||||||
VIAddVersionKey FileDescription ""
|
VIAddVersionKey FileDescription ""
|
||||||
VIAddVersionKey LegalCopyright ""
|
VIAddVersionKey LegalCopyright ""
|
||||||
InstallDirRegKey HKCU "${REGKEY}" Path
|
InstallDirRegKey HKCU "${REGKEY}" Path
|
||||||
ShowUninstDetails show
|
ShowUninstDetails show
|
||||||
|
|
||||||
# Installer sections
|
# Installer sections
|
||||||
Section -Main SEC0000
|
Section -Main SEC0000
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
SetOverwrite on
|
SetOverwrite on
|
||||||
File bitcoin.exe
|
File bitcoin.exe
|
||||||
File libeay32.dll
|
File libeay32.dll
|
||||||
File mingwm10.dll
|
File mingwm10.dll
|
||||||
File license.txt
|
File license.txt
|
||||||
File readme.txt
|
File readme.txt
|
||||||
SetOutPath $INSTDIR\daemon
|
SetOutPath $INSTDIR\daemon
|
||||||
File /r daemon\*.*
|
File /r daemon\*.*
|
||||||
SetOutPath $INSTDIR\locale
|
SetOutPath $INSTDIR\locale
|
||||||
File /r locale\*.*
|
File /r locale\*.*
|
||||||
SetOutPath $INSTDIR\src
|
SetOutPath $INSTDIR\src
|
||||||
File /r src\*.*
|
File /r src\*.*
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
WriteRegStr HKCU "${REGKEY}\Components" Main 1
|
WriteRegStr HKCU "${REGKEY}\Components" Main 1
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section -post SEC0001
|
Section -post SEC0001
|
||||||
WriteRegStr HKCU "${REGKEY}" Path $INSTDIR
|
WriteRegStr HKCU "${REGKEY}" Path $INSTDIR
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
WriteUninstaller $INSTDIR\uninstall.exe
|
WriteUninstaller $INSTDIR\uninstall.exe
|
||||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||||
CreateDirectory $SMPROGRAMS\$StartMenuGroup
|
CreateDirectory $SMPROGRAMS\$StartMenuGroup
|
||||||
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk" $INSTDIR\bitcoin.exe
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk" $INSTDIR\bitcoin.exe
|
||||||
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk" $INSTDIR\uninstall.exe
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk" $INSTDIR\uninstall.exe
|
||||||
!insertmacro MUI_STARTMENU_WRITE_END
|
!insertmacro MUI_STARTMENU_WRITE_END
|
||||||
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
|
||||||
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}"
|
||||||
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
|
||||||
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
|
||||||
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe
|
||||||
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
|
||||||
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
|
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
|
||||||
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
|
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
# Macro for selecting uninstaller sections
|
# Macro for selecting uninstaller sections
|
||||||
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
|
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
|
||||||
Push $R0
|
Push $R0
|
||||||
ReadRegStr $R0 HKCU "${REGKEY}\Components" "${SECTION_NAME}"
|
ReadRegStr $R0 HKCU "${REGKEY}\Components" "${SECTION_NAME}"
|
||||||
StrCmp $R0 1 0 next${UNSECTION_ID}
|
StrCmp $R0 1 0 next${UNSECTION_ID}
|
||||||
!insertmacro SelectSection "${UNSECTION_ID}"
|
!insertmacro SelectSection "${UNSECTION_ID}"
|
||||||
GoTo done${UNSECTION_ID}
|
GoTo done${UNSECTION_ID}
|
||||||
next${UNSECTION_ID}:
|
next${UNSECTION_ID}:
|
||||||
!insertmacro UnselectSection "${UNSECTION_ID}"
|
!insertmacro UnselectSection "${UNSECTION_ID}"
|
||||||
done${UNSECTION_ID}:
|
done${UNSECTION_ID}:
|
||||||
Pop $R0
|
Pop $R0
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
# Uninstaller sections
|
# Uninstaller sections
|
||||||
Section /o -un.Main UNSEC0000
|
Section /o -un.Main UNSEC0000
|
||||||
Delete /REBOOTOK $INSTDIR\bitcoin.exe
|
Delete /REBOOTOK $INSTDIR\bitcoin.exe
|
||||||
Delete /REBOOTOK $INSTDIR\libeay32.dll
|
Delete /REBOOTOK $INSTDIR\libeay32.dll
|
||||||
Delete /REBOOTOK $INSTDIR\mingwm10.dll
|
Delete /REBOOTOK $INSTDIR\mingwm10.dll
|
||||||
Delete /REBOOTOK $INSTDIR\license.txt
|
Delete /REBOOTOK $INSTDIR\license.txt
|
||||||
Delete /REBOOTOK $INSTDIR\readme.txt
|
Delete /REBOOTOK $INSTDIR\readme.txt
|
||||||
RMDir /r /REBOOTOK $INSTDIR\daemon
|
RMDir /r /REBOOTOK $INSTDIR\daemon
|
||||||
RMDir /r /REBOOTOK $INSTDIR\locale
|
RMDir /r /REBOOTOK $INSTDIR\locale
|
||||||
RMDir /r /REBOOTOK $INSTDIR\src
|
RMDir /r /REBOOTOK $INSTDIR\src
|
||||||
DeleteRegValue HKCU "${REGKEY}\Components" Main
|
DeleteRegValue HKCU "${REGKEY}\Components" Main
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section -un.post UNSEC0001
|
Section -un.post UNSEC0001
|
||||||
DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
|
DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
|
||||||
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk"
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall Bitcoin.lnk"
|
||||||
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk"
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Bitcoin.lnk"
|
||||||
Delete /REBOOTOK "$SMSTARTUP\Bitcoin.lnk"
|
Delete /REBOOTOK "$SMSTARTUP\Bitcoin.lnk"
|
||||||
Delete /REBOOTOK $INSTDIR\uninstall.exe
|
Delete /REBOOTOK $INSTDIR\uninstall.exe
|
||||||
Delete /REBOOTOK $INSTDIR\debug.log
|
Delete /REBOOTOK $INSTDIR\debug.log
|
||||||
Delete /REBOOTOK $INSTDIR\db.log
|
Delete /REBOOTOK $INSTDIR\db.log
|
||||||
DeleteRegValue HKCU "${REGKEY}" StartMenuGroup
|
DeleteRegValue HKCU "${REGKEY}" StartMenuGroup
|
||||||
DeleteRegValue HKCU "${REGKEY}" Path
|
DeleteRegValue HKCU "${REGKEY}" Path
|
||||||
DeleteRegKey /IfEmpty HKCU "${REGKEY}\Components"
|
DeleteRegKey /IfEmpty HKCU "${REGKEY}\Components"
|
||||||
DeleteRegKey /IfEmpty HKCU "${REGKEY}"
|
DeleteRegKey /IfEmpty HKCU "${REGKEY}"
|
||||||
RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
|
RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
|
||||||
RmDir /REBOOTOK $INSTDIR
|
RmDir /REBOOTOK $INSTDIR
|
||||||
Push $R0
|
Push $R0
|
||||||
StrCpy $R0 $StartMenuGroup 1
|
StrCpy $R0 $StartMenuGroup 1
|
||||||
StrCmp $R0 ">" no_smgroup
|
StrCmp $R0 ">" no_smgroup
|
||||||
no_smgroup:
|
no_smgroup:
|
||||||
Pop $R0
|
Pop $R0
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
# Installer functions
|
# Installer functions
|
||||||
Function .onInit
|
Function .onInit
|
||||||
InitPluginsDir
|
InitPluginsDir
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
# Uninstaller functions
|
# Uninstaller functions
|
||||||
Function un.onInit
|
Function un.onInit
|
||||||
ReadRegStr $INSTDIR HKCU "${REGKEY}" Path
|
ReadRegStr $INSTDIR HKCU "${REGKEY}" Path
|
||||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
|
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
|
||||||
!insertmacro SELECT_UNSECTION Main ${UNSEC0000}
|
!insertmacro SELECT_UNSECTION Main ${UNSEC0000}
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@@ -1,177 +1,177 @@
|
|||||||
// This file is public domain
|
// This file is public domain
|
||||||
// SHA routines extracted as a standalone file from:
|
// SHA routines extracted as a standalone file from:
|
||||||
// Crypto++: a C++ Class Library of Cryptographic Schemes
|
// Crypto++: a C++ Class Library of Cryptographic Schemes
|
||||||
// Version 5.5.2 (9/24/2007)
|
// Version 5.5.2 (9/24/2007)
|
||||||
// http://www.cryptopp.com
|
// http://www.cryptopp.com
|
||||||
#ifndef CRYPTOPP_SHA_H
|
#ifndef CRYPTOPP_SHA_H
|
||||||
#define CRYPTOPP_SHA_H
|
#define CRYPTOPP_SHA_H
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
namespace CryptoPP
|
namespace CryptoPP
|
||||||
{
|
{
|
||||||
|
|
||||||
//
|
//
|
||||||
// Dependencies
|
// Dependencies
|
||||||
//
|
//
|
||||||
|
|
||||||
typedef unsigned char byte;
|
typedef unsigned char byte;
|
||||||
typedef unsigned short word16;
|
typedef unsigned short word16;
|
||||||
typedef unsigned int word32;
|
typedef unsigned int word32;
|
||||||
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
||||||
typedef unsigned __int64 word64;
|
typedef unsigned __int64 word64;
|
||||||
#else
|
#else
|
||||||
typedef unsigned long long word64;
|
typedef unsigned long long word64;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
template <class T> inline T rotlFixed(T x, unsigned int y)
|
template <class T> inline T rotlFixed(T x, unsigned int y)
|
||||||
{
|
{
|
||||||
assert(y < sizeof(T)*8);
|
assert(y < sizeof(T)*8);
|
||||||
return T((x<<y) | (x>>(sizeof(T)*8-y)));
|
return T((x<<y) | (x>>(sizeof(T)*8-y)));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T> inline T rotrFixed(T x, unsigned int y)
|
template <class T> inline T rotrFixed(T x, unsigned int y)
|
||||||
{
|
{
|
||||||
assert(y < sizeof(T)*8);
|
assert(y < sizeof(T)*8);
|
||||||
return T((x>>y) | (x<<(sizeof(T)*8-y)));
|
return T((x>>y) | (x<<(sizeof(T)*8-y)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************** endian reversal ***************
|
// ************** endian reversal ***************
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#if _MSC_VER >= 1400
|
#if _MSC_VER >= 1400
|
||||||
#define CRYPTOPP_FAST_ROTATE(x) 1
|
#define CRYPTOPP_FAST_ROTATE(x) 1
|
||||||
#elif _MSC_VER >= 1300
|
#elif _MSC_VER >= 1300
|
||||||
#define CRYPTOPP_FAST_ROTATE(x) ((x) == 32 | (x) == 64)
|
#define CRYPTOPP_FAST_ROTATE(x) ((x) == 32 | (x) == 64)
|
||||||
#else
|
#else
|
||||||
#define CRYPTOPP_FAST_ROTATE(x) ((x) == 32)
|
#define CRYPTOPP_FAST_ROTATE(x) ((x) == 32)
|
||||||
#endif
|
#endif
|
||||||
#elif (defined(__MWERKS__) && TARGET_CPU_PPC) || \
|
#elif (defined(__MWERKS__) && TARGET_CPU_PPC) || \
|
||||||
(defined(__GNUC__) && (defined(_ARCH_PWR2) || defined(_ARCH_PWR) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || defined(_ARCH_COM)))
|
(defined(__GNUC__) && (defined(_ARCH_PWR2) || defined(_ARCH_PWR) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || defined(_ARCH_COM)))
|
||||||
#define CRYPTOPP_FAST_ROTATE(x) ((x) == 32)
|
#define CRYPTOPP_FAST_ROTATE(x) ((x) == 32)
|
||||||
#elif defined(__GNUC__) && (CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X86) // depend on GCC's peephole optimization to generate rotate instructions
|
#elif defined(__GNUC__) && (CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X86) // depend on GCC's peephole optimization to generate rotate instructions
|
||||||
#define CRYPTOPP_FAST_ROTATE(x) 1
|
#define CRYPTOPP_FAST_ROTATE(x) 1
|
||||||
#else
|
#else
|
||||||
#define CRYPTOPP_FAST_ROTATE(x) 0
|
#define CRYPTOPP_FAST_ROTATE(x) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline byte ByteReverse(byte value)
|
inline byte ByteReverse(byte value)
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline word16 ByteReverse(word16 value)
|
inline word16 ByteReverse(word16 value)
|
||||||
{
|
{
|
||||||
#ifdef CRYPTOPP_BYTESWAP_AVAILABLE
|
#ifdef CRYPTOPP_BYTESWAP_AVAILABLE
|
||||||
return bswap_16(value);
|
return bswap_16(value);
|
||||||
#elif defined(_MSC_VER) && _MSC_VER >= 1300
|
#elif defined(_MSC_VER) && _MSC_VER >= 1300
|
||||||
return _byteswap_ushort(value);
|
return _byteswap_ushort(value);
|
||||||
#else
|
#else
|
||||||
return rotlFixed(value, 8U);
|
return rotlFixed(value, 8U);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline word32 ByteReverse(word32 value)
|
inline word32 ByteReverse(word32 value)
|
||||||
{
|
{
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
__asm__ ("bswap %0" : "=r" (value) : "0" (value));
|
__asm__ ("bswap %0" : "=r" (value) : "0" (value));
|
||||||
return value;
|
return value;
|
||||||
#elif defined(CRYPTOPP_BYTESWAP_AVAILABLE)
|
#elif defined(CRYPTOPP_BYTESWAP_AVAILABLE)
|
||||||
return bswap_32(value);
|
return bswap_32(value);
|
||||||
#elif defined(__MWERKS__) && TARGET_CPU_PPC
|
#elif defined(__MWERKS__) && TARGET_CPU_PPC
|
||||||
return (word32)__lwbrx(&value,0);
|
return (word32)__lwbrx(&value,0);
|
||||||
#elif _MSC_VER >= 1400 || (_MSC_VER >= 1300 && !defined(_DLL))
|
#elif _MSC_VER >= 1400 || (_MSC_VER >= 1300 && !defined(_DLL))
|
||||||
return _byteswap_ulong(value);
|
return _byteswap_ulong(value);
|
||||||
#elif CRYPTOPP_FAST_ROTATE(32)
|
#elif CRYPTOPP_FAST_ROTATE(32)
|
||||||
// 5 instructions with rotate instruction, 9 without
|
// 5 instructions with rotate instruction, 9 without
|
||||||
return (rotrFixed(value, 8U) & 0xff00ff00) | (rotlFixed(value, 8U) & 0x00ff00ff);
|
return (rotrFixed(value, 8U) & 0xff00ff00) | (rotlFixed(value, 8U) & 0x00ff00ff);
|
||||||
#else
|
#else
|
||||||
// 6 instructions with rotate instruction, 8 without
|
// 6 instructions with rotate instruction, 8 without
|
||||||
value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8);
|
value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8);
|
||||||
return rotlFixed(value, 16U);
|
return rotlFixed(value, 16U);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WORD64_AVAILABLE
|
#ifdef WORD64_AVAILABLE
|
||||||
inline word64 ByteReverse(word64 value)
|
inline word64 ByteReverse(word64 value)
|
||||||
{
|
{
|
||||||
#if defined(__GNUC__) && defined(__x86_64__)
|
#if defined(__GNUC__) && defined(__x86_64__)
|
||||||
__asm__ ("bswap %0" : "=r" (value) : "0" (value));
|
__asm__ ("bswap %0" : "=r" (value) : "0" (value));
|
||||||
return value;
|
return value;
|
||||||
#elif defined(CRYPTOPP_BYTESWAP_AVAILABLE)
|
#elif defined(CRYPTOPP_BYTESWAP_AVAILABLE)
|
||||||
return bswap_64(value);
|
return bswap_64(value);
|
||||||
#elif defined(_MSC_VER) && _MSC_VER >= 1300
|
#elif defined(_MSC_VER) && _MSC_VER >= 1300
|
||||||
return _byteswap_uint64(value);
|
return _byteswap_uint64(value);
|
||||||
#elif defined(CRYPTOPP_SLOW_WORD64)
|
#elif defined(CRYPTOPP_SLOW_WORD64)
|
||||||
return (word64(ByteReverse(word32(value))) << 32) | ByteReverse(word32(value>>32));
|
return (word64(ByteReverse(word32(value))) << 32) | ByteReverse(word32(value>>32));
|
||||||
#else
|
#else
|
||||||
value = ((value & W64LIT(0xFF00FF00FF00FF00)) >> 8) | ((value & W64LIT(0x00FF00FF00FF00FF)) << 8);
|
value = ((value & W64LIT(0xFF00FF00FF00FF00)) >> 8) | ((value & W64LIT(0x00FF00FF00FF00FF)) << 8);
|
||||||
value = ((value & W64LIT(0xFFFF0000FFFF0000)) >> 16) | ((value & W64LIT(0x0000FFFF0000FFFF)) << 16);
|
value = ((value & W64LIT(0xFFFF0000FFFF0000)) >> 16) | ((value & W64LIT(0x0000FFFF0000FFFF)) << 16);
|
||||||
return rotlFixed(value, 32U);
|
return rotlFixed(value, 32U);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// SHA
|
// SHA
|
||||||
//
|
//
|
||||||
|
|
||||||
// http://www.weidai.com/scan-mirror/md.html#SHA-1
|
// http://www.weidai.com/scan-mirror/md.html#SHA-1
|
||||||
class SHA1
|
class SHA1
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef word32 HashWordType;
|
typedef word32 HashWordType;
|
||||||
static void InitState(word32 *state);
|
static void InitState(word32 *state);
|
||||||
static void Transform(word32 *digest, const word32 *data);
|
static void Transform(word32 *digest, const word32 *data);
|
||||||
static const char * StaticAlgorithmName() {return "SHA-1";}
|
static const char * StaticAlgorithmName() {return "SHA-1";}
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef SHA1 SHA; // for backwards compatibility
|
typedef SHA1 SHA; // for backwards compatibility
|
||||||
|
|
||||||
// implements the SHA-256 standard
|
// implements the SHA-256 standard
|
||||||
class SHA256
|
class SHA256
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef word32 HashWordType;
|
typedef word32 HashWordType;
|
||||||
static void InitState(word32 *state);
|
static void InitState(word32 *state);
|
||||||
static void Transform(word32 *digest, const word32 *data);
|
static void Transform(word32 *digest, const word32 *data);
|
||||||
static const char * StaticAlgorithmName() {return "SHA-256";}
|
static const char * StaticAlgorithmName() {return "SHA-256";}
|
||||||
};
|
};
|
||||||
|
|
||||||
// implements the SHA-224 standard
|
// implements the SHA-224 standard
|
||||||
class SHA224
|
class SHA224
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef word32 HashWordType;
|
typedef word32 HashWordType;
|
||||||
static void InitState(word32 *state);
|
static void InitState(word32 *state);
|
||||||
static void Transform(word32 *digest, const word32 *data) {SHA256::Transform(digest, data);}
|
static void Transform(word32 *digest, const word32 *data) {SHA256::Transform(digest, data);}
|
||||||
static const char * StaticAlgorithmName() {return "SHA-224";}
|
static const char * StaticAlgorithmName() {return "SHA-224";}
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef WORD64_AVAILABLE
|
#ifdef WORD64_AVAILABLE
|
||||||
|
|
||||||
// implements the SHA-512 standard
|
// implements the SHA-512 standard
|
||||||
class SHA512
|
class SHA512
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef word64 HashWordType;
|
typedef word64 HashWordType;
|
||||||
static void InitState(word64 *state);
|
static void InitState(word64 *state);
|
||||||
static void Transform(word64 *digest, const word64 *data);
|
static void Transform(word64 *digest, const word64 *data);
|
||||||
static const char * StaticAlgorithmName() {return "SHA-512";}
|
static const char * StaticAlgorithmName() {return "SHA-512";}
|
||||||
};
|
};
|
||||||
|
|
||||||
// implements the SHA-384 standard
|
// implements the SHA-384 standard
|
||||||
class SHA384
|
class SHA384
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef word64 HashWordType;
|
typedef word64 HashWordType;
|
||||||
static void InitState(word64 *state);
|
static void InitState(word64 *state);
|
||||||
static void Transform(word64 *digest, const word64 *data) {SHA512::Transform(digest, data);}
|
static void Transform(word64 *digest, const word64 *data) {SHA512::Transform(digest, data);}
|
||||||
static const char * StaticAlgorithmName() {return "SHA-384";}
|
static const char * StaticAlgorithmName() {return "SHA-384";}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,84 +1,84 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software for any
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
* copyright notice and this permission notice appear in all copies.
|
* copyright notice and this permission notice appear in all copies.
|
||||||
*
|
*
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy src to string dst of size siz. At most siz-1 characters
|
* Copy src to string dst of size siz. At most siz-1 characters
|
||||||
* will be copied. Always NUL terminates (unless siz == 0).
|
* will be copied. Always NUL terminates (unless siz == 0).
|
||||||
* Returns strlen(src); if retval >= siz, truncation occurred.
|
* Returns strlen(src); if retval >= siz, truncation occurred.
|
||||||
*/
|
*/
|
||||||
inline size_t strlcpy(char *dst, const char *src, size_t siz)
|
inline size_t strlcpy(char *dst, const char *src, size_t siz)
|
||||||
{
|
{
|
||||||
char *d = dst;
|
char *d = dst;
|
||||||
const char *s = src;
|
const char *s = src;
|
||||||
size_t n = siz;
|
size_t n = siz;
|
||||||
|
|
||||||
/* Copy as many bytes as will fit */
|
/* Copy as many bytes as will fit */
|
||||||
if (n != 0)
|
if (n != 0)
|
||||||
{
|
{
|
||||||
while (--n != 0)
|
while (--n != 0)
|
||||||
{
|
{
|
||||||
if ((*d++ = *s++) == '\0')
|
if ((*d++ = *s++) == '\0')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not enough room in dst, add NUL and traverse rest of src */
|
/* Not enough room in dst, add NUL and traverse rest of src */
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
{
|
{
|
||||||
if (siz != 0)
|
if (siz != 0)
|
||||||
*d = '\0'; /* NUL-terminate dst */
|
*d = '\0'; /* NUL-terminate dst */
|
||||||
while (*s++)
|
while (*s++)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(s - src - 1); /* count does not include NUL */
|
return(s - src - 1); /* count does not include NUL */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Appends src to string dst of size siz (unlike strncat, siz is the
|
* Appends src to string dst of size siz (unlike strncat, siz is the
|
||||||
* full size of dst, not space left). At most siz-1 characters
|
* full size of dst, not space left). At most siz-1 characters
|
||||||
* will be copied. Always NUL terminates (unless siz <= strlen(dst)).
|
* will be copied. Always NUL terminates (unless siz <= strlen(dst)).
|
||||||
* Returns strlen(src) + MIN(siz, strlen(initial dst)).
|
* Returns strlen(src) + MIN(siz, strlen(initial dst)).
|
||||||
* If retval >= siz, truncation occurred.
|
* If retval >= siz, truncation occurred.
|
||||||
*/
|
*/
|
||||||
inline size_t strlcat(char *dst, const char *src, size_t siz)
|
inline size_t strlcat(char *dst, const char *src, size_t siz)
|
||||||
{
|
{
|
||||||
char *d = dst;
|
char *d = dst;
|
||||||
const char *s = src;
|
const char *s = src;
|
||||||
size_t n = siz;
|
size_t n = siz;
|
||||||
size_t dlen;
|
size_t dlen;
|
||||||
|
|
||||||
/* Find the end of dst and adjust bytes left but don't go past end */
|
/* Find the end of dst and adjust bytes left but don't go past end */
|
||||||
while (n-- != 0 && *d != '\0')
|
while (n-- != 0 && *d != '\0')
|
||||||
d++;
|
d++;
|
||||||
dlen = d - dst;
|
dlen = d - dst;
|
||||||
n = siz - dlen;
|
n = siz - dlen;
|
||||||
|
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
return(dlen + strlen(s));
|
return(dlen + strlen(s));
|
||||||
while (*s != '\0')
|
while (*s != '\0')
|
||||||
{
|
{
|
||||||
if (n != 1)
|
if (n != 1)
|
||||||
{
|
{
|
||||||
*d++ = *s;
|
*d++ = *s;
|
||||||
n--;
|
n--;
|
||||||
}
|
}
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
*d = '\0';
|
*d = '\0';
|
||||||
|
|
||||||
return(dlen + (s - src)); /* count does not include NUL */
|
return(dlen + (s - src)); /* count does not include NUL */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,379 +1,379 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
DECLARE_EVENT_TYPE(wxEVT_UITHREADCALL, -1)
|
DECLARE_EVENT_TYPE(wxEVT_UITHREADCALL, -1)
|
||||||
|
|
||||||
#if wxUSE_GUI
|
#if wxUSE_GUI
|
||||||
static const bool fGUI=true;
|
static const bool fGUI=true;
|
||||||
#else
|
#else
|
||||||
static const bool fGUI=false;
|
static const bool fGUI=false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline int MyMessageBox(const wxString& message, const wxString& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)
|
inline int MyMessageBox(const wxString& message, const wxString& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1)
|
||||||
{
|
{
|
||||||
#if wxUSE_GUI
|
#if wxUSE_GUI
|
||||||
if (!fDaemon)
|
if (!fDaemon)
|
||||||
return wxMessageBox(message, caption, style, parent, x, y);
|
return wxMessageBox(message, caption, style, parent, x, y);
|
||||||
#endif
|
#endif
|
||||||
printf("wxMessageBox %s: %s\n", string(caption).c_str(), string(message).c_str());
|
printf("wxMessageBox %s: %s\n", string(caption).c_str(), string(message).c_str());
|
||||||
fprintf(stderr, "%s: %s\n", string(caption).c_str(), string(message).c_str());
|
fprintf(stderr, "%s: %s\n", string(caption).c_str(), string(message).c_str());
|
||||||
return wxOK;
|
return wxOK;
|
||||||
}
|
}
|
||||||
#define wxMessageBox MyMessageBox
|
#define wxMessageBox MyMessageBox
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void HandleCtrlA(wxKeyEvent& event);
|
void HandleCtrlA(wxKeyEvent& event);
|
||||||
string FormatTxStatus(const CWalletTx& wtx);
|
string FormatTxStatus(const CWalletTx& wtx);
|
||||||
void UIThreadCall(boost::function0<void>);
|
void UIThreadCall(boost::function0<void>);
|
||||||
int ThreadSafeMessageBox(const string& message, const string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1);
|
int ThreadSafeMessageBox(const string& message, const string& caption="Message", int style=wxOK, wxWindow* parent=NULL, int x=-1, int y=-1);
|
||||||
bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent);
|
bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent);
|
||||||
void CalledSetStatusBar(const string& strText, int nField);
|
void CalledSetStatusBar(const string& strText, int nField);
|
||||||
void MainFrameRepaint();
|
void MainFrameRepaint();
|
||||||
void CreateMainWindow();
|
void CreateMainWindow();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if !wxUSE_GUI
|
#if !wxUSE_GUI
|
||||||
inline int ThreadSafeMessageBox(const string& message, const string& caption, int style, wxWindow* parent, int x, int y)
|
inline int ThreadSafeMessageBox(const string& message, const string& caption, int style, wxWindow* parent, int x, int y)
|
||||||
{
|
{
|
||||||
return MyMessageBox(message, caption, style, parent, x, y);
|
return MyMessageBox(message, caption, style, parent, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent)
|
inline bool ThreadSafeAskFee(int64 nFeeRequired, const string& strCaption, wxWindow* parent)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void CalledSetStatusBar(const string& strText, int nField)
|
inline void CalledSetStatusBar(const string& strText, int nField)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void UIThreadCall(boost::function0<void> fn)
|
inline void UIThreadCall(boost::function0<void> fn)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void MainFrameRepaint()
|
inline void MainFrameRepaint()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void CreateMainWindow()
|
inline void CreateMainWindow()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#else // wxUSE_GUI
|
#else // wxUSE_GUI
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CMainFrame : public CMainFrameBase
|
class CMainFrame : public CMainFrameBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnNotebookPageChanged(wxNotebookEvent& event);
|
void OnNotebookPageChanged(wxNotebookEvent& event);
|
||||||
void OnClose(wxCloseEvent& event);
|
void OnClose(wxCloseEvent& event);
|
||||||
void OnIconize(wxIconizeEvent& event);
|
void OnIconize(wxIconizeEvent& event);
|
||||||
void OnMouseEvents(wxMouseEvent& event);
|
void OnMouseEvents(wxMouseEvent& event);
|
||||||
void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
|
void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
|
||||||
void OnIdle(wxIdleEvent& event);
|
void OnIdle(wxIdleEvent& event);
|
||||||
void OnPaint(wxPaintEvent& event);
|
void OnPaint(wxPaintEvent& event);
|
||||||
void OnPaintListCtrl(wxPaintEvent& event);
|
void OnPaintListCtrl(wxPaintEvent& event);
|
||||||
void OnMenuFileExit(wxCommandEvent& event);
|
void OnMenuFileExit(wxCommandEvent& event);
|
||||||
void OnMenuOptionsGenerate(wxCommandEvent& event);
|
void OnMenuOptionsGenerate(wxCommandEvent& event);
|
||||||
void OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event);
|
void OnUpdateUIOptionsGenerate(wxUpdateUIEvent& event);
|
||||||
void OnMenuOptionsChangeYourAddress(wxCommandEvent& event);
|
void OnMenuOptionsChangeYourAddress(wxCommandEvent& event);
|
||||||
void OnMenuOptionsOptions(wxCommandEvent& event);
|
void OnMenuOptionsOptions(wxCommandEvent& event);
|
||||||
void OnMenuHelpAbout(wxCommandEvent& event);
|
void OnMenuHelpAbout(wxCommandEvent& event);
|
||||||
void OnButtonSend(wxCommandEvent& event);
|
void OnButtonSend(wxCommandEvent& event);
|
||||||
void OnButtonAddressBook(wxCommandEvent& event);
|
void OnButtonAddressBook(wxCommandEvent& event);
|
||||||
void OnSetFocusAddress(wxFocusEvent& event);
|
void OnSetFocusAddress(wxFocusEvent& event);
|
||||||
void OnMouseEventsAddress(wxMouseEvent& event);
|
void OnMouseEventsAddress(wxMouseEvent& event);
|
||||||
void OnButtonNew(wxCommandEvent& event);
|
void OnButtonNew(wxCommandEvent& event);
|
||||||
void OnButtonCopy(wxCommandEvent& event);
|
void OnButtonCopy(wxCommandEvent& event);
|
||||||
void OnListColBeginDrag(wxListEvent& event);
|
void OnListColBeginDrag(wxListEvent& event);
|
||||||
void OnListItemActivated(wxListEvent& event);
|
void OnListItemActivated(wxListEvent& event);
|
||||||
void OnListItemActivatedProductsSent(wxListEvent& event);
|
void OnListItemActivatedProductsSent(wxListEvent& event);
|
||||||
void OnListItemActivatedOrdersSent(wxListEvent& event);
|
void OnListItemActivatedOrdersSent(wxListEvent& event);
|
||||||
void OnListItemActivatedOrdersReceived(wxListEvent& event);
|
void OnListItemActivatedOrdersReceived(wxListEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
CMainFrame(wxWindow* parent);
|
CMainFrame(wxWindow* parent);
|
||||||
~CMainFrame();
|
~CMainFrame();
|
||||||
|
|
||||||
// Custom
|
// Custom
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
ALL = 0,
|
ALL = 0,
|
||||||
SENTRECEIVED = 1,
|
SENTRECEIVED = 1,
|
||||||
SENT = 2,
|
SENT = 2,
|
||||||
RECEIVED = 3,
|
RECEIVED = 3,
|
||||||
};
|
};
|
||||||
int nPage;
|
int nPage;
|
||||||
wxListCtrl* m_listCtrl;
|
wxListCtrl* m_listCtrl;
|
||||||
bool fShowGenerated;
|
bool fShowGenerated;
|
||||||
bool fShowSent;
|
bool fShowSent;
|
||||||
bool fShowReceived;
|
bool fShowReceived;
|
||||||
bool fRefreshListCtrl;
|
bool fRefreshListCtrl;
|
||||||
bool fRefreshListCtrlRunning;
|
bool fRefreshListCtrlRunning;
|
||||||
bool fOnSetFocusAddress;
|
bool fOnSetFocusAddress;
|
||||||
unsigned int nListViewUpdated;
|
unsigned int nListViewUpdated;
|
||||||
bool fRefresh;
|
bool fRefresh;
|
||||||
|
|
||||||
void OnUIThreadCall(wxCommandEvent& event);
|
void OnUIThreadCall(wxCommandEvent& event);
|
||||||
int GetSortIndex(const string& strSort);
|
int GetSortIndex(const string& strSort);
|
||||||
void InsertLine(bool fNew, int nIndex, uint256 hashKey, string strSort, const wxString& str1, const wxString& str2, const wxString& str3, const wxString& str4, const wxString& str5);
|
void InsertLine(bool fNew, int nIndex, uint256 hashKey, string strSort, const wxString& str1, const wxString& str2, const wxString& str3, const wxString& str4, const wxString& str5);
|
||||||
bool DeleteLine(uint256 hashKey);
|
bool DeleteLine(uint256 hashKey);
|
||||||
bool InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);
|
bool InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);
|
||||||
void RefreshListCtrl();
|
void RefreshListCtrl();
|
||||||
void RefreshStatusColumn();
|
void RefreshStatusColumn();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CTxDetailsDialog : public CTxDetailsDialogBase
|
class CTxDetailsDialog : public CTxDetailsDialogBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnButtonOK(wxCommandEvent& event);
|
void OnButtonOK(wxCommandEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
CTxDetailsDialog(wxWindow* parent, CWalletTx wtx);
|
CTxDetailsDialog(wxWindow* parent, CWalletTx wtx);
|
||||||
|
|
||||||
// State
|
// State
|
||||||
CWalletTx wtx;
|
CWalletTx wtx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class COptionsDialog : public COptionsDialogBase
|
class COptionsDialog : public COptionsDialogBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnListBox(wxCommandEvent& event);
|
void OnListBox(wxCommandEvent& event);
|
||||||
void OnKillFocusTransactionFee(wxFocusEvent& event);
|
void OnKillFocusTransactionFee(wxFocusEvent& event);
|
||||||
void OnCheckBoxLimitProcessors(wxCommandEvent& event);
|
void OnCheckBoxLimitProcessors(wxCommandEvent& event);
|
||||||
void OnCheckBoxUseProxy(wxCommandEvent& event);
|
void OnCheckBoxUseProxy(wxCommandEvent& event);
|
||||||
void OnKillFocusProxy(wxFocusEvent& event);
|
void OnKillFocusProxy(wxFocusEvent& event);
|
||||||
|
|
||||||
void OnButtonOK(wxCommandEvent& event);
|
void OnButtonOK(wxCommandEvent& event);
|
||||||
void OnButtonCancel(wxCommandEvent& event);
|
void OnButtonCancel(wxCommandEvent& event);
|
||||||
void OnButtonApply(wxCommandEvent& event);
|
void OnButtonApply(wxCommandEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
COptionsDialog(wxWindow* parent);
|
COptionsDialog(wxWindow* parent);
|
||||||
|
|
||||||
// Custom
|
// Custom
|
||||||
bool fTmpStartOnSystemStartup;
|
bool fTmpStartOnSystemStartup;
|
||||||
bool fTmpMinimizeOnClose;
|
bool fTmpMinimizeOnClose;
|
||||||
void SelectPage(int nPage);
|
void SelectPage(int nPage);
|
||||||
CAddress GetProxyAddr();
|
CAddress GetProxyAddr();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CAboutDialog : public CAboutDialogBase
|
class CAboutDialog : public CAboutDialogBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnButtonOK(wxCommandEvent& event);
|
void OnButtonOK(wxCommandEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
CAboutDialog(wxWindow* parent);
|
CAboutDialog(wxWindow* parent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CSendDialog : public CSendDialogBase
|
class CSendDialog : public CSendDialogBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
|
void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
|
||||||
void OnTextAddress(wxCommandEvent& event);
|
void OnTextAddress(wxCommandEvent& event);
|
||||||
void OnKillFocusAmount(wxFocusEvent& event);
|
void OnKillFocusAmount(wxFocusEvent& event);
|
||||||
void OnButtonAddressBook(wxCommandEvent& event);
|
void OnButtonAddressBook(wxCommandEvent& event);
|
||||||
void OnButtonPaste(wxCommandEvent& event);
|
void OnButtonPaste(wxCommandEvent& event);
|
||||||
void OnButtonSend(wxCommandEvent& event);
|
void OnButtonSend(wxCommandEvent& event);
|
||||||
void OnButtonCancel(wxCommandEvent& event);
|
void OnButtonCancel(wxCommandEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
CSendDialog(wxWindow* parent, const wxString& strAddress="");
|
CSendDialog(wxWindow* parent, const wxString& strAddress="");
|
||||||
|
|
||||||
// Custom
|
// Custom
|
||||||
bool fEnabledPrev;
|
bool fEnabledPrev;
|
||||||
string strFromSave;
|
string strFromSave;
|
||||||
string strMessageSave;
|
string strMessageSave;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CSendingDialog : public CSendingDialogBase
|
class CSendingDialog : public CSendingDialogBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnClose(wxCloseEvent& event);
|
void OnClose(wxCloseEvent& event);
|
||||||
void OnButtonOK(wxCommandEvent& event);
|
void OnButtonOK(wxCommandEvent& event);
|
||||||
void OnButtonCancel(wxCommandEvent& event);
|
void OnButtonCancel(wxCommandEvent& event);
|
||||||
void OnPaint(wxPaintEvent& event);
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn);
|
CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn);
|
||||||
~CSendingDialog();
|
~CSendingDialog();
|
||||||
|
|
||||||
// State
|
// State
|
||||||
CAddress addr;
|
CAddress addr;
|
||||||
int64 nPrice;
|
int64 nPrice;
|
||||||
CWalletTx wtx;
|
CWalletTx wtx;
|
||||||
wxDateTime start;
|
wxDateTime start;
|
||||||
char pszStatus[10000];
|
char pszStatus[10000];
|
||||||
bool fCanCancel;
|
bool fCanCancel;
|
||||||
bool fAbort;
|
bool fAbort;
|
||||||
bool fSuccess;
|
bool fSuccess;
|
||||||
bool fUIDone;
|
bool fUIDone;
|
||||||
bool fWorkDone;
|
bool fWorkDone;
|
||||||
|
|
||||||
void Close();
|
void Close();
|
||||||
void Repaint();
|
void Repaint();
|
||||||
bool Status();
|
bool Status();
|
||||||
bool Status(const string& str);
|
bool Status(const string& str);
|
||||||
bool Error(const string& str);
|
bool Error(const string& str);
|
||||||
void StartTransfer();
|
void StartTransfer();
|
||||||
void OnReply2(CDataStream& vRecv);
|
void OnReply2(CDataStream& vRecv);
|
||||||
void OnReply3(CDataStream& vRecv);
|
void OnReply3(CDataStream& vRecv);
|
||||||
};
|
};
|
||||||
|
|
||||||
void SendingDialogStartTransfer(void* parg);
|
void SendingDialogStartTransfer(void* parg);
|
||||||
void SendingDialogOnReply2(void* parg, CDataStream& vRecv);
|
void SendingDialogOnReply2(void* parg, CDataStream& vRecv);
|
||||||
void SendingDialogOnReply3(void* parg, CDataStream& vRecv);
|
void SendingDialogOnReply3(void* parg, CDataStream& vRecv);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CAddressBookDialog : public CAddressBookDialogBase
|
class CAddressBookDialog : public CAddressBookDialogBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnNotebookPageChanged(wxNotebookEvent& event);
|
void OnNotebookPageChanged(wxNotebookEvent& event);
|
||||||
void OnListEndLabelEdit(wxListEvent& event);
|
void OnListEndLabelEdit(wxListEvent& event);
|
||||||
void OnListItemSelected(wxListEvent& event);
|
void OnListItemSelected(wxListEvent& event);
|
||||||
void OnListItemActivated(wxListEvent& event);
|
void OnListItemActivated(wxListEvent& event);
|
||||||
void OnButtonDelete(wxCommandEvent& event);
|
void OnButtonDelete(wxCommandEvent& event);
|
||||||
void OnButtonCopy(wxCommandEvent& event);
|
void OnButtonCopy(wxCommandEvent& event);
|
||||||
void OnButtonEdit(wxCommandEvent& event);
|
void OnButtonEdit(wxCommandEvent& event);
|
||||||
void OnButtonNew(wxCommandEvent& event);
|
void OnButtonNew(wxCommandEvent& event);
|
||||||
void OnButtonOK(wxCommandEvent& event);
|
void OnButtonOK(wxCommandEvent& event);
|
||||||
void OnButtonCancel(wxCommandEvent& event);
|
void OnButtonCancel(wxCommandEvent& event);
|
||||||
void OnClose(wxCloseEvent& event);
|
void OnClose(wxCloseEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, int nPageIn, bool fDuringSendIn);
|
CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, int nPageIn, bool fDuringSendIn);
|
||||||
|
|
||||||
// Custom
|
// Custom
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
SENDING = 0,
|
SENDING = 0,
|
||||||
RECEIVING = 1,
|
RECEIVING = 1,
|
||||||
};
|
};
|
||||||
int nPage;
|
int nPage;
|
||||||
wxListCtrl* m_listCtrl;
|
wxListCtrl* m_listCtrl;
|
||||||
bool fDuringSend;
|
bool fDuringSend;
|
||||||
wxString GetAddress();
|
wxString GetAddress();
|
||||||
wxString GetSelectedAddress();
|
wxString GetSelectedAddress();
|
||||||
wxString GetSelectedSendingAddress();
|
wxString GetSelectedSendingAddress();
|
||||||
wxString GetSelectedReceivingAddress();
|
wxString GetSelectedReceivingAddress();
|
||||||
bool CheckIfMine(const string& strAddress, const string& strTitle);
|
bool CheckIfMine(const string& strAddress, const string& strTitle);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CGetTextFromUserDialog : public CGetTextFromUserDialogBase
|
class CGetTextFromUserDialog : public CGetTextFromUserDialogBase
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnButtonOK(wxCommandEvent& event) { EndModal(true); }
|
void OnButtonOK(wxCommandEvent& event) { EndModal(true); }
|
||||||
void OnButtonCancel(wxCommandEvent& event) { EndModal(false); }
|
void OnButtonCancel(wxCommandEvent& event) { EndModal(false); }
|
||||||
void OnClose(wxCloseEvent& event) { EndModal(false); }
|
void OnClose(wxCloseEvent& event) { EndModal(false); }
|
||||||
|
|
||||||
void OnKeyDown(wxKeyEvent& event)
|
void OnKeyDown(wxKeyEvent& event)
|
||||||
{
|
{
|
||||||
if (event.GetKeyCode() == '\r' || event.GetKeyCode() == WXK_NUMPAD_ENTER)
|
if (event.GetKeyCode() == '\r' || event.GetKeyCode() == WXK_NUMPAD_ENTER)
|
||||||
EndModal(true);
|
EndModal(true);
|
||||||
else
|
else
|
||||||
HandleCtrlA(event);
|
HandleCtrlA(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor */
|
/** Constructor */
|
||||||
CGetTextFromUserDialog(wxWindow* parent,
|
CGetTextFromUserDialog(wxWindow* parent,
|
||||||
const string& strCaption,
|
const string& strCaption,
|
||||||
const string& strMessage1,
|
const string& strMessage1,
|
||||||
const string& strValue1="",
|
const string& strValue1="",
|
||||||
const string& strMessage2="",
|
const string& strMessage2="",
|
||||||
const string& strValue2="") : CGetTextFromUserDialogBase(parent, wxID_ANY, strCaption)
|
const string& strValue2="") : CGetTextFromUserDialogBase(parent, wxID_ANY, strCaption)
|
||||||
{
|
{
|
||||||
int x = GetSize().GetWidth();
|
int x = GetSize().GetWidth();
|
||||||
int y = GetSize().GetHeight();
|
int y = GetSize().GetHeight();
|
||||||
m_staticTextMessage1->SetLabel(strMessage1);
|
m_staticTextMessage1->SetLabel(strMessage1);
|
||||||
m_textCtrl1->SetValue(strValue1);
|
m_textCtrl1->SetValue(strValue1);
|
||||||
y += wxString(strMessage1).Freq('\n') * 14;
|
y += wxString(strMessage1).Freq('\n') * 14;
|
||||||
if (!strMessage2.empty())
|
if (!strMessage2.empty())
|
||||||
{
|
{
|
||||||
m_staticTextMessage2->Show(true);
|
m_staticTextMessage2->Show(true);
|
||||||
m_staticTextMessage2->SetLabel(strMessage2);
|
m_staticTextMessage2->SetLabel(strMessage2);
|
||||||
m_textCtrl2->Show(true);
|
m_textCtrl2->Show(true);
|
||||||
m_textCtrl2->SetValue(strValue2);
|
m_textCtrl2->SetValue(strValue2);
|
||||||
y += 46 + wxString(strMessage2).Freq('\n') * 14;
|
y += 46 + wxString(strMessage2).Freq('\n') * 14;
|
||||||
}
|
}
|
||||||
if (!fWindows)
|
if (!fWindows)
|
||||||
{
|
{
|
||||||
x *= 1.14;
|
x *= 1.14;
|
||||||
y *= 1.14;
|
y *= 1.14;
|
||||||
}
|
}
|
||||||
SetSize(x, y);
|
SetSize(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Custom
|
// Custom
|
||||||
string GetValue() { return (string)m_textCtrl1->GetValue(); }
|
string GetValue() { return (string)m_textCtrl1->GetValue(); }
|
||||||
string GetValue1() { return (string)m_textCtrl1->GetValue(); }
|
string GetValue1() { return (string)m_textCtrl1->GetValue(); }
|
||||||
string GetValue2() { return (string)m_textCtrl2->GetValue(); }
|
string GetValue2() { return (string)m_textCtrl2->GetValue(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CMyTaskBarIcon : public wxTaskBarIcon
|
class CMyTaskBarIcon : public wxTaskBarIcon
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// Event handlers
|
// Event handlers
|
||||||
void OnLeftButtonDClick(wxTaskBarIconEvent& event);
|
void OnLeftButtonDClick(wxTaskBarIconEvent& event);
|
||||||
void OnMenuRestore(wxCommandEvent& event);
|
void OnMenuRestore(wxCommandEvent& event);
|
||||||
void OnMenuOptions(wxCommandEvent& event);
|
void OnMenuOptions(wxCommandEvent& event);
|
||||||
void OnUpdateUIGenerate(wxUpdateUIEvent& event);
|
void OnUpdateUIGenerate(wxUpdateUIEvent& event);
|
||||||
void OnMenuGenerate(wxCommandEvent& event);
|
void OnMenuGenerate(wxCommandEvent& event);
|
||||||
void OnMenuExit(wxCommandEvent& event);
|
void OnMenuExit(wxCommandEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CMyTaskBarIcon() : wxTaskBarIcon()
|
CMyTaskBarIcon() : wxTaskBarIcon()
|
||||||
{
|
{
|
||||||
Show(true);
|
Show(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Show(bool fShow=true);
|
void Show(bool fShow=true);
|
||||||
void Hide();
|
void Hide();
|
||||||
void Restore();
|
void Restore();
|
||||||
void UpdateTooltip();
|
void UpdateTooltip();
|
||||||
virtual wxMenu* CreatePopupMenu();
|
virtual wxMenu* CreatePopupMenu();
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // wxUSE_GUI
|
#endif // wxUSE_GUI
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
bitcoin ICON "rc/bitcoin.ico"
|
bitcoin ICON "rc/bitcoin.ico"
|
||||||
|
|
||||||
#include "wx/msw/wx.rc"
|
#include "wx/msw/wx.rc"
|
||||||
|
|
||||||
check ICON "rc/check.ico"
|
check ICON "rc/check.ico"
|
||||||
send16 BITMAP "rc/send16.bmp"
|
send16 BITMAP "rc/send16.bmp"
|
||||||
send16mask BITMAP "rc/send16mask.bmp"
|
send16mask BITMAP "rc/send16mask.bmp"
|
||||||
send16masknoshadow BITMAP "rc/send16masknoshadow.bmp"
|
send16masknoshadow BITMAP "rc/send16masknoshadow.bmp"
|
||||||
send20 BITMAP "rc/send20.bmp"
|
send20 BITMAP "rc/send20.bmp"
|
||||||
send20mask BITMAP "rc/send20mask.bmp"
|
send20mask BITMAP "rc/send20mask.bmp"
|
||||||
addressbook16 BITMAP "rc/addressbook16.bmp"
|
addressbook16 BITMAP "rc/addressbook16.bmp"
|
||||||
addressbook16mask BITMAP "rc/addressbook16mask.bmp"
|
addressbook16mask BITMAP "rc/addressbook16mask.bmp"
|
||||||
addressbook20 BITMAP "rc/addressbook20.bmp"
|
addressbook20 BITMAP "rc/addressbook20.bmp"
|
||||||
addressbook20mask BITMAP "rc/addressbook20mask.bmp"
|
addressbook20mask BITMAP "rc/addressbook20mask.bmp"
|
||||||
favicon ICON "rc/favicon.ico"
|
favicon ICON "rc/favicon.ico"
|
||||||
|
|||||||
+1073
-1073
File diff suppressed because it is too large
Load Diff
@@ -1,422 +1,422 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef __uibase__
|
#ifndef __uibase__
|
||||||
#define __uibase__
|
#define __uibase__
|
||||||
|
|
||||||
#include <wx/intl.h>
|
#include <wx/intl.h>
|
||||||
|
|
||||||
#include <wx/string.h>
|
#include <wx/string.h>
|
||||||
#include <wx/bitmap.h>
|
#include <wx/bitmap.h>
|
||||||
#include <wx/image.h>
|
#include <wx/image.h>
|
||||||
#include <wx/icon.h>
|
#include <wx/icon.h>
|
||||||
#include <wx/menu.h>
|
#include <wx/menu.h>
|
||||||
#include <wx/gdicmn.h>
|
#include <wx/gdicmn.h>
|
||||||
#include <wx/font.h>
|
#include <wx/font.h>
|
||||||
#include <wx/colour.h>
|
#include <wx/colour.h>
|
||||||
#include <wx/settings.h>
|
#include <wx/settings.h>
|
||||||
#include <wx/toolbar.h>
|
#include <wx/toolbar.h>
|
||||||
#include <wx/statusbr.h>
|
#include <wx/statusbr.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/choice.h>
|
#include <wx/choice.h>
|
||||||
#include <wx/listctrl.h>
|
#include <wx/listctrl.h>
|
||||||
#include <wx/panel.h>
|
#include <wx/panel.h>
|
||||||
#include <wx/notebook.h>
|
#include <wx/notebook.h>
|
||||||
#include <wx/frame.h>
|
#include <wx/frame.h>
|
||||||
#include <wx/html/htmlwin.h>
|
#include <wx/html/htmlwin.h>
|
||||||
#include <wx/dialog.h>
|
#include <wx/dialog.h>
|
||||||
#include <wx/listbox.h>
|
#include <wx/listbox.h>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/spinctrl.h>
|
#include <wx/spinctrl.h>
|
||||||
#include <wx/scrolwin.h>
|
#include <wx/scrolwin.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#define wxID_MAINFRAME 1000
|
#define wxID_MAINFRAME 1000
|
||||||
#define wxID_OPTIONSGENERATEBITCOINS 1001
|
#define wxID_OPTIONSGENERATEBITCOINS 1001
|
||||||
#define wxID_BUTTONSEND 1002
|
#define wxID_BUTTONSEND 1002
|
||||||
#define wxID_BUTTONRECEIVE 1003
|
#define wxID_BUTTONRECEIVE 1003
|
||||||
#define wxID_TEXTCTRLADDRESS 1004
|
#define wxID_TEXTCTRLADDRESS 1004
|
||||||
#define wxID_BUTTONNEW 1005
|
#define wxID_BUTTONNEW 1005
|
||||||
#define wxID_BUTTONCOPY 1006
|
#define wxID_BUTTONCOPY 1006
|
||||||
#define wxID_TRANSACTIONFEE 1007
|
#define wxID_TRANSACTIONFEE 1007
|
||||||
#define wxID_PROXYIP 1008
|
#define wxID_PROXYIP 1008
|
||||||
#define wxID_PROXYPORT 1009
|
#define wxID_PROXYPORT 1009
|
||||||
#define wxID_TEXTCTRLPAYTO 1010
|
#define wxID_TEXTCTRLPAYTO 1010
|
||||||
#define wxID_BUTTONPASTE 1011
|
#define wxID_BUTTONPASTE 1011
|
||||||
#define wxID_BUTTONADDRESSBOOK 1012
|
#define wxID_BUTTONADDRESSBOOK 1012
|
||||||
#define wxID_TEXTCTRLAMOUNT 1013
|
#define wxID_TEXTCTRLAMOUNT 1013
|
||||||
#define wxID_CHOICETRANSFERTYPE 1014
|
#define wxID_CHOICETRANSFERTYPE 1014
|
||||||
#define wxID_LISTCTRL 1015
|
#define wxID_LISTCTRL 1015
|
||||||
#define wxID_BUTTONRENAME 1016
|
#define wxID_BUTTONRENAME 1016
|
||||||
#define wxID_PANELSENDING 1017
|
#define wxID_PANELSENDING 1017
|
||||||
#define wxID_LISTCTRLSENDING 1018
|
#define wxID_LISTCTRLSENDING 1018
|
||||||
#define wxID_PANELRECEIVING 1019
|
#define wxID_PANELRECEIVING 1019
|
||||||
#define wxID_LISTCTRLRECEIVING 1020
|
#define wxID_LISTCTRLRECEIVING 1020
|
||||||
#define wxID_BUTTONDELETE 1021
|
#define wxID_BUTTONDELETE 1021
|
||||||
#define wxID_BUTTONEDIT 1022
|
#define wxID_BUTTONEDIT 1022
|
||||||
#define wxID_TEXTCTRL 1023
|
#define wxID_TEXTCTRL 1023
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CMainFrameBase
|
/// Class CMainFrameBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CMainFrameBase : public wxFrame
|
class CMainFrameBase : public wxFrame
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxMenuBar* m_menubar;
|
wxMenuBar* m_menubar;
|
||||||
wxMenu* m_menuFile;
|
wxMenu* m_menuFile;
|
||||||
wxMenu* m_menuHelp;
|
wxMenu* m_menuHelp;
|
||||||
wxToolBar* m_toolBar;
|
wxToolBar* m_toolBar;
|
||||||
|
|
||||||
wxStaticText* m_staticText32;
|
wxStaticText* m_staticText32;
|
||||||
wxButton* m_buttonNew;
|
wxButton* m_buttonNew;
|
||||||
wxButton* m_buttonCopy;
|
wxButton* m_buttonCopy;
|
||||||
|
|
||||||
wxStaticText* m_staticText41;
|
wxStaticText* m_staticText41;
|
||||||
wxStaticText* m_staticTextBalance;
|
wxStaticText* m_staticTextBalance;
|
||||||
|
|
||||||
wxChoice* m_choiceFilter;
|
wxChoice* m_choiceFilter;
|
||||||
wxNotebook* m_notebook;
|
wxNotebook* m_notebook;
|
||||||
wxPanel* m_panel9;
|
wxPanel* m_panel9;
|
||||||
wxPanel* m_panel91;
|
wxPanel* m_panel91;
|
||||||
wxPanel* m_panel92;
|
wxPanel* m_panel92;
|
||||||
wxPanel* m_panel93;
|
wxPanel* m_panel93;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
||||||
virtual void OnIconize( wxIconizeEvent& event ){ event.Skip(); }
|
virtual void OnIconize( wxIconizeEvent& event ){ event.Skip(); }
|
||||||
virtual void OnIdle( wxIdleEvent& event ){ event.Skip(); }
|
virtual void OnIdle( wxIdleEvent& event ){ event.Skip(); }
|
||||||
virtual void OnMouseEvents( wxMouseEvent& event ){ event.Skip(); }
|
virtual void OnMouseEvents( wxMouseEvent& event ){ event.Skip(); }
|
||||||
virtual void OnPaint( wxPaintEvent& event ){ event.Skip(); }
|
virtual void OnPaint( wxPaintEvent& event ){ event.Skip(); }
|
||||||
virtual void OnMenuFileExit( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnMenuFileExit( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnMenuOptionsGenerate( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnMenuOptionsGenerate( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnUpdateUIOptionsGenerate( wxUpdateUIEvent& event ){ event.Skip(); }
|
virtual void OnUpdateUIOptionsGenerate( wxUpdateUIEvent& event ){ event.Skip(); }
|
||||||
virtual void OnMenuOptionsChangeYourAddress( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnMenuOptionsChangeYourAddress( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnMenuOptionsOptions( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnMenuOptionsOptions( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnMenuHelpAbout( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnMenuHelpAbout( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonSend( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonSend( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonAddressBook( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonAddressBook( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnKeyDown( wxKeyEvent& event ){ event.Skip(); }
|
virtual void OnKeyDown( wxKeyEvent& event ){ event.Skip(); }
|
||||||
virtual void OnMouseEventsAddress( wxMouseEvent& event ){ event.Skip(); }
|
virtual void OnMouseEventsAddress( wxMouseEvent& event ){ event.Skip(); }
|
||||||
virtual void OnSetFocusAddress( wxFocusEvent& event ){ event.Skip(); }
|
virtual void OnSetFocusAddress( wxFocusEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonNew( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonNew( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCopy( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCopy( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnNotebookPageChanged( wxNotebookEvent& event ){ event.Skip(); }
|
virtual void OnNotebookPageChanged( wxNotebookEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListColBeginDrag( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListColBeginDrag( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListItemActivated( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemActivated( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnPaintListCtrl( wxPaintEvent& event ){ event.Skip(); }
|
virtual void OnPaintListCtrl( wxPaintEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxMenu* m_menuOptions;
|
wxMenu* m_menuOptions;
|
||||||
wxStatusBar* m_statusBar;
|
wxStatusBar* m_statusBar;
|
||||||
wxTextCtrl* m_textCtrlAddress;
|
wxTextCtrl* m_textCtrlAddress;
|
||||||
wxListCtrl* m_listCtrlAll;
|
wxListCtrl* m_listCtrlAll;
|
||||||
wxListCtrl* m_listCtrlSentReceived;
|
wxListCtrl* m_listCtrlSentReceived;
|
||||||
wxListCtrl* m_listCtrlSent;
|
wxListCtrl* m_listCtrlSent;
|
||||||
wxListCtrl* m_listCtrlReceived;
|
wxListCtrl* m_listCtrlReceived;
|
||||||
CMainFrameBase( wxWindow* parent, wxWindowID id = wxID_MAINFRAME, const wxString& title = _("Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 723,484 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL );
|
CMainFrameBase( wxWindow* parent, wxWindowID id = wxID_MAINFRAME, const wxString& title = _("Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 723,484 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL );
|
||||||
~CMainFrameBase();
|
~CMainFrameBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CTxDetailsDialogBase
|
/// Class CTxDetailsDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CTxDetailsDialogBase : public wxDialog
|
class CTxDetailsDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxHtmlWindow* m_htmlWin;
|
wxHtmlWindow* m_htmlWin;
|
||||||
wxButton* m_buttonOK;
|
wxButton* m_buttonOK;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CTxDetailsDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Transaction Details"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 620,450 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
CTxDetailsDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Transaction Details"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 620,450 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
~CTxDetailsDialogBase();
|
~CTxDetailsDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class COptionsDialogBase
|
/// Class COptionsDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class COptionsDialogBase : public wxDialog
|
class COptionsDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxListBox* m_listBox;
|
wxListBox* m_listBox;
|
||||||
wxScrolledWindow* m_scrolledWindow;
|
wxScrolledWindow* m_scrolledWindow;
|
||||||
wxPanel* m_panelMain;
|
wxPanel* m_panelMain;
|
||||||
|
|
||||||
wxStaticText* m_staticText32;
|
wxStaticText* m_staticText32;
|
||||||
wxStaticText* m_staticText31;
|
wxStaticText* m_staticText31;
|
||||||
wxTextCtrl* m_textCtrlTransactionFee;
|
wxTextCtrl* m_textCtrlTransactionFee;
|
||||||
wxCheckBox* m_checkBoxLimitProcessors;
|
wxCheckBox* m_checkBoxLimitProcessors;
|
||||||
wxSpinCtrl* m_spinCtrlLimitProcessors;
|
wxSpinCtrl* m_spinCtrlLimitProcessors;
|
||||||
wxStaticText* m_staticText35;
|
wxStaticText* m_staticText35;
|
||||||
wxCheckBox* m_checkBoxStartOnSystemStartup;
|
wxCheckBox* m_checkBoxStartOnSystemStartup;
|
||||||
wxCheckBox* m_checkBoxMinimizeToTray;
|
wxCheckBox* m_checkBoxMinimizeToTray;
|
||||||
wxCheckBox* m_checkBoxMinimizeOnClose;
|
wxCheckBox* m_checkBoxMinimizeOnClose;
|
||||||
wxCheckBox* m_checkBoxUseProxy;
|
wxCheckBox* m_checkBoxUseProxy;
|
||||||
|
|
||||||
wxStaticText* m_staticTextProxyIP;
|
wxStaticText* m_staticTextProxyIP;
|
||||||
wxTextCtrl* m_textCtrlProxyIP;
|
wxTextCtrl* m_textCtrlProxyIP;
|
||||||
wxStaticText* m_staticTextProxyPort;
|
wxStaticText* m_staticTextProxyPort;
|
||||||
wxTextCtrl* m_textCtrlProxyPort;
|
wxTextCtrl* m_textCtrlProxyPort;
|
||||||
wxPanel* m_panelTest2;
|
wxPanel* m_panelTest2;
|
||||||
|
|
||||||
wxStaticText* m_staticText321;
|
wxStaticText* m_staticText321;
|
||||||
wxStaticText* m_staticText69;
|
wxStaticText* m_staticText69;
|
||||||
wxButton* m_buttonOK;
|
wxButton* m_buttonOK;
|
||||||
wxButton* m_buttonCancel;
|
wxButton* m_buttonCancel;
|
||||||
wxButton* m_buttonApply;
|
wxButton* m_buttonApply;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnListBox( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnListBox( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnKillFocusTransactionFee( wxFocusEvent& event ){ event.Skip(); }
|
virtual void OnKillFocusTransactionFee( wxFocusEvent& event ){ event.Skip(); }
|
||||||
virtual void OnCheckBoxLimitProcessors( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnCheckBoxLimitProcessors( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnCheckBoxMinimizeToTray( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnCheckBoxMinimizeToTray( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnCheckBoxUseProxy( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnCheckBoxUseProxy( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnKillFocusProxy( wxFocusEvent& event ){ event.Skip(); }
|
virtual void OnKillFocusProxy( wxFocusEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonApply( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonApply( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
COptionsDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 540,360 ), long style = wxDEFAULT_DIALOG_STYLE );
|
COptionsDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 540,360 ), long style = wxDEFAULT_DIALOG_STYLE );
|
||||||
~COptionsDialogBase();
|
~COptionsDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CAboutDialogBase
|
/// Class CAboutDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CAboutDialogBase : public wxDialog
|
class CAboutDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxStaticBitmap* m_bitmap;
|
wxStaticBitmap* m_bitmap;
|
||||||
|
|
||||||
wxStaticText* m_staticText40;
|
wxStaticText* m_staticText40;
|
||||||
|
|
||||||
wxStaticText* m_staticTextMain;
|
wxStaticText* m_staticTextMain;
|
||||||
|
|
||||||
|
|
||||||
wxButton* m_buttonOK;
|
wxButton* m_buttonOK;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxStaticText* m_staticTextVersion;
|
wxStaticText* m_staticTextVersion;
|
||||||
CAboutDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 532,329 ), long style = wxDEFAULT_DIALOG_STYLE );
|
CAboutDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 532,329 ), long style = wxDEFAULT_DIALOG_STYLE );
|
||||||
~CAboutDialogBase();
|
~CAboutDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CSendDialogBase
|
/// Class CSendDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CSendDialogBase : public wxDialog
|
class CSendDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
||||||
wxStaticText* m_staticTextInstructions;
|
wxStaticText* m_staticTextInstructions;
|
||||||
|
|
||||||
wxStaticBitmap* m_bitmapCheckMark;
|
wxStaticBitmap* m_bitmapCheckMark;
|
||||||
wxStaticText* m_staticText36;
|
wxStaticText* m_staticText36;
|
||||||
wxTextCtrl* m_textCtrlAddress;
|
wxTextCtrl* m_textCtrlAddress;
|
||||||
wxButton* m_buttonPaste;
|
wxButton* m_buttonPaste;
|
||||||
wxButton* m_buttonAddress;
|
wxButton* m_buttonAddress;
|
||||||
wxStaticText* m_staticText19;
|
wxStaticText* m_staticText19;
|
||||||
wxTextCtrl* m_textCtrlAmount;
|
wxTextCtrl* m_textCtrlAmount;
|
||||||
wxStaticText* m_staticText20;
|
wxStaticText* m_staticText20;
|
||||||
wxChoice* m_choiceTransferType;
|
wxChoice* m_choiceTransferType;
|
||||||
|
|
||||||
|
|
||||||
wxStaticText* m_staticTextFrom;
|
wxStaticText* m_staticTextFrom;
|
||||||
wxTextCtrl* m_textCtrlFrom;
|
wxTextCtrl* m_textCtrlFrom;
|
||||||
wxStaticText* m_staticTextMessage;
|
wxStaticText* m_staticTextMessage;
|
||||||
wxTextCtrl* m_textCtrlMessage;
|
wxTextCtrl* m_textCtrlMessage;
|
||||||
|
|
||||||
wxButton* m_buttonSend;
|
wxButton* m_buttonSend;
|
||||||
wxButton* m_buttonCancel;
|
wxButton* m_buttonCancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnKeyDown( wxKeyEvent& event ){ event.Skip(); }
|
virtual void OnKeyDown( wxKeyEvent& event ){ event.Skip(); }
|
||||||
virtual void OnTextAddress( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnTextAddress( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonPaste( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonPaste( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonAddressBook( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonAddressBook( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnKillFocusAmount( wxFocusEvent& event ){ event.Skip(); }
|
virtual void OnKillFocusAmount( wxFocusEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonSend( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonSend( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CSendDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Send Coins"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 675,298 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
CSendDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Send Coins"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 675,298 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
~CSendDialogBase();
|
~CSendDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CSendingDialogBase
|
/// Class CSendingDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CSendingDialogBase : public wxDialog
|
class CSendingDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxStaticText* m_staticTextSending;
|
wxStaticText* m_staticTextSending;
|
||||||
wxTextCtrl* m_textCtrlStatus;
|
wxTextCtrl* m_textCtrlStatus;
|
||||||
|
|
||||||
wxButton* m_buttonOK;
|
wxButton* m_buttonOK;
|
||||||
wxButton* m_buttonCancel;
|
wxButton* m_buttonCancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
||||||
virtual void OnPaint( wxPaintEvent& event ){ event.Skip(); }
|
virtual void OnPaint( wxPaintEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CSendingDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Sending..."), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 442,151 ), long style = wxDEFAULT_DIALOG_STYLE );
|
CSendingDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Sending..."), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 442,151 ), long style = wxDEFAULT_DIALOG_STYLE );
|
||||||
~CSendingDialogBase();
|
~CSendingDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CYourAddressDialogBase
|
/// Class CYourAddressDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CYourAddressDialogBase : public wxDialog
|
class CYourAddressDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
wxStaticText* m_staticText45;
|
wxStaticText* m_staticText45;
|
||||||
wxListCtrl* m_listCtrl;
|
wxListCtrl* m_listCtrl;
|
||||||
|
|
||||||
wxButton* m_buttonRename;
|
wxButton* m_buttonRename;
|
||||||
wxButton* m_buttonNew;
|
wxButton* m_buttonNew;
|
||||||
wxButton* m_buttonCopy;
|
wxButton* m_buttonCopy;
|
||||||
wxButton* m_buttonOK;
|
wxButton* m_buttonOK;
|
||||||
wxButton* m_buttonCancel;
|
wxButton* m_buttonCancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListEndLabelEdit( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListEndLabelEdit( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListItemActivated( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemActivated( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListItemSelected( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemSelected( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonRename( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonRename( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonNew( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonNew( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCopy( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCopy( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CYourAddressDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Your Bitcoin Addresses"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 610,390 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
CYourAddressDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Your Bitcoin Addresses"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 610,390 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
~CYourAddressDialogBase();
|
~CYourAddressDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CAddressBookDialogBase
|
/// Class CAddressBookDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CAddressBookDialogBase : public wxDialog
|
class CAddressBookDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxNotebook* m_notebook;
|
wxNotebook* m_notebook;
|
||||||
wxPanel* m_panelSending;
|
wxPanel* m_panelSending;
|
||||||
|
|
||||||
wxStaticText* m_staticText55;
|
wxStaticText* m_staticText55;
|
||||||
wxListCtrl* m_listCtrlSending;
|
wxListCtrl* m_listCtrlSending;
|
||||||
wxPanel* m_panelReceiving;
|
wxPanel* m_panelReceiving;
|
||||||
|
|
||||||
wxStaticText* m_staticText45;
|
wxStaticText* m_staticText45;
|
||||||
|
|
||||||
wxListCtrl* m_listCtrlReceiving;
|
wxListCtrl* m_listCtrlReceiving;
|
||||||
|
|
||||||
wxButton* m_buttonDelete;
|
wxButton* m_buttonDelete;
|
||||||
wxButton* m_buttonCopy;
|
wxButton* m_buttonCopy;
|
||||||
wxButton* m_buttonEdit;
|
wxButton* m_buttonEdit;
|
||||||
wxButton* m_buttonNew;
|
wxButton* m_buttonNew;
|
||||||
wxButton* m_buttonOK;
|
wxButton* m_buttonOK;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
||||||
virtual void OnNotebookPageChanged( wxNotebookEvent& event ){ event.Skip(); }
|
virtual void OnNotebookPageChanged( wxNotebookEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListEndLabelEdit( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListEndLabelEdit( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListItemActivated( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemActivated( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnListItemSelected( wxListEvent& event ){ event.Skip(); }
|
virtual void OnListItemSelected( wxListEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonDelete( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonDelete( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCopy( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCopy( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonEdit( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonEdit( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonNew( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonNew( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxButton* m_buttonCancel;
|
wxButton* m_buttonCancel;
|
||||||
CAddressBookDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Address Book"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 610,390 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
CAddressBookDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Address Book"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 610,390 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
~CAddressBookDialogBase();
|
~CAddressBookDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class CGetTextFromUserDialogBase
|
/// Class CGetTextFromUserDialogBase
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CGetTextFromUserDialogBase : public wxDialog
|
class CGetTextFromUserDialogBase : public wxDialog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
wxStaticText* m_staticTextMessage1;
|
wxStaticText* m_staticTextMessage1;
|
||||||
wxTextCtrl* m_textCtrl1;
|
wxTextCtrl* m_textCtrl1;
|
||||||
wxStaticText* m_staticTextMessage2;
|
wxStaticText* m_staticTextMessage2;
|
||||||
wxTextCtrl* m_textCtrl2;
|
wxTextCtrl* m_textCtrl2;
|
||||||
|
|
||||||
|
|
||||||
wxButton* m_buttonOK;
|
wxButton* m_buttonOK;
|
||||||
wxButton* m_buttonCancel;
|
wxButton* m_buttonCancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
virtual void OnClose( wxCloseEvent& event ){ event.Skip(); }
|
||||||
virtual void OnKeyDown( wxKeyEvent& event ){ event.Skip(); }
|
virtual void OnKeyDown( wxKeyEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonOK( wxCommandEvent& event ){ event.Skip(); }
|
||||||
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
virtual void OnButtonCancel( wxCommandEvent& event ){ event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CGetTextFromUserDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 440,138 ), long style = wxDEFAULT_DIALOG_STYLE );
|
CGetTextFromUserDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 440,138 ), long style = wxDEFAULT_DIALOG_STYLE );
|
||||||
~CGetTextFromUserDialogBase();
|
~CGetTextFromUserDialogBase();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__uibase__
|
#endif //__uibase__
|
||||||
|
|||||||
+6332
-6332
File diff suppressed because it is too large
Load Diff
+278
-278
@@ -1,278 +1,278 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static const char * addressbook16_xpm[] = {
|
static const char * addressbook16_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"16 16 256 2",
|
"16 16 256 2",
|
||||||
" c #FFFFFF",
|
" c #FFFFFF",
|
||||||
". c #F7FFFF",
|
". c #F7FFFF",
|
||||||
"X c #F7F7FF",
|
"X c #F7F7FF",
|
||||||
"o c #EFF7FF",
|
"o c #EFF7FF",
|
||||||
"O c #E6EFF7",
|
"O c #E6EFF7",
|
||||||
"+ c #E6E6F7",
|
"+ c #E6E6F7",
|
||||||
"@ c #CEE6F7",
|
"@ c #CEE6F7",
|
||||||
"# c #DEDEEF",
|
"# c #DEDEEF",
|
||||||
"$ c #D6DEEF",
|
"$ c #D6DEEF",
|
||||||
"% c #D6DEE6",
|
"% c #D6DEE6",
|
||||||
"& c #CEDEF7",
|
"& c #CEDEF7",
|
||||||
"* c #CEDEEF",
|
"* c #CEDEEF",
|
||||||
"= c #EFF708",
|
"= c #EFF708",
|
||||||
"- c #C5DEF7",
|
"- c #C5DEF7",
|
||||||
"; c #CED6EF",
|
"; c #CED6EF",
|
||||||
": c None",
|
": c None",
|
||||||
"> c #C5D6E6",
|
"> c #C5D6E6",
|
||||||
", c #BDD6F7",
|
", c #BDD6F7",
|
||||||
"< c #BDD6EF",
|
"< c #BDD6EF",
|
||||||
"1 c #D6CECE",
|
"1 c #D6CECE",
|
||||||
"2 c #BDCEE6",
|
"2 c #BDCEE6",
|
||||||
"3 c #BDC5E6",
|
"3 c #BDC5E6",
|
||||||
"4 c #B5C5DE",
|
"4 c #B5C5DE",
|
||||||
"5 c #BDD631",
|
"5 c #BDD631",
|
||||||
"6 c #ADBDDE",
|
"6 c #ADBDDE",
|
||||||
"7 c #B5B5BD",
|
"7 c #B5B5BD",
|
||||||
"8 c #A5B5D6",
|
"8 c #A5B5D6",
|
||||||
"9 c #00FFFF",
|
"9 c #00FFFF",
|
||||||
"0 c #9CB5CE",
|
"0 c #9CB5CE",
|
||||||
"q c #9CADD6",
|
"q c #9CADD6",
|
||||||
"w c #94A5D6",
|
"w c #94A5D6",
|
||||||
"e c #8CA5D6",
|
"e c #8CA5D6",
|
||||||
"r c #8CA5CE",
|
"r c #8CA5CE",
|
||||||
"t c #8CA5C5",
|
"t c #8CA5C5",
|
||||||
"y c #849CC5",
|
"y c #849CC5",
|
||||||
"u c #7B9CD6",
|
"u c #7B9CD6",
|
||||||
"i c #7B9CCE",
|
"i c #7B9CCE",
|
||||||
"p c #31BDCE",
|
"p c #31BDCE",
|
||||||
"a c #6B9CD6",
|
"a c #6B9CD6",
|
||||||
"s c #00F708",
|
"s c #00F708",
|
||||||
"d c #8494AD",
|
"d c #8494AD",
|
||||||
"f c #7B94B5",
|
"f c #7B94B5",
|
||||||
"g c #6B94D6",
|
"g c #6B94D6",
|
||||||
"h c #6B9C84",
|
"h c #6B9C84",
|
||||||
"j c #7B8CAD",
|
"j c #7B8CAD",
|
||||||
"k c #738CAD",
|
"k c #738CAD",
|
||||||
"l c #638CC5",
|
"l c #638CC5",
|
||||||
"z c #10CE42",
|
"z c #10CE42",
|
||||||
"x c #638CBD",
|
"x c #638CBD",
|
||||||
"c c #7B849C",
|
"c c #7B849C",
|
||||||
"v c #73849C",
|
"v c #73849C",
|
||||||
"b c #6B84A5",
|
"b c #6B84A5",
|
||||||
"n c #7B7BA5",
|
"n c #7B7BA5",
|
||||||
"m c #6B849C",
|
"m c #6B849C",
|
||||||
"M c #7B8C42",
|
"M c #7B8C42",
|
||||||
"N c #5A84C5",
|
"N c #5A84C5",
|
||||||
"B c #29AD6B",
|
"B c #29AD6B",
|
||||||
"V c #F74A4A",
|
"V c #F74A4A",
|
||||||
"C c #6384A5",
|
"C c #6384A5",
|
||||||
"Z c #5284C5",
|
"Z c #5284C5",
|
||||||
"A c #637BA5",
|
"A c #637BA5",
|
||||||
"S c #637B9C",
|
"S c #637B9C",
|
||||||
"D c #9C637B",
|
"D c #9C637B",
|
||||||
"F c #6B7B5A",
|
"F c #6B7B5A",
|
||||||
"G c #637394",
|
"G c #637394",
|
||||||
"H c #52739C",
|
"H c #52739C",
|
||||||
"J c #5A7384",
|
"J c #5A7384",
|
||||||
"K c #526B94",
|
"K c #526B94",
|
||||||
"L c #426B94",
|
"L c #426B94",
|
||||||
"P c #52638C",
|
"P c #52638C",
|
||||||
"I c #426B7B",
|
"I c #426B7B",
|
||||||
"U c #5A5A8C",
|
"U c #5A5A8C",
|
||||||
"Y c #524A7B",
|
"Y c #524A7B",
|
||||||
"T c #425273",
|
"T c #425273",
|
||||||
"R c #21636B",
|
"R c #21636B",
|
||||||
"E c #106394",
|
"E c #106394",
|
||||||
"W c #106B52",
|
"W c #106B52",
|
||||||
"Q c #3A4273",
|
"Q c #3A4273",
|
||||||
"! c #31426B",
|
"! c #31426B",
|
||||||
"~ c #523163",
|
"~ c #523163",
|
||||||
"^ c #29426B",
|
"^ c #29426B",
|
||||||
"/ c #293A63",
|
"/ c #293A63",
|
||||||
"( c #213A63",
|
"( c #213A63",
|
||||||
") c #193A63",
|
") c #193A63",
|
||||||
"_ c #193163",
|
"_ c #193163",
|
||||||
"` c #19315A",
|
"` c #19315A",
|
||||||
"' c #212963",
|
"' c #212963",
|
||||||
"] c #10315A",
|
"] c #10315A",
|
||||||
"[ c #082952",
|
"[ c #082952",
|
||||||
"{ c #FFCC33",
|
"{ c #FFCC33",
|
||||||
"} c #33FF33",
|
"} c #33FF33",
|
||||||
"| c #66FF33",
|
"| c #66FF33",
|
||||||
" . c #99FF33",
|
" . c #99FF33",
|
||||||
".. c #CCFF33",
|
".. c #CCFF33",
|
||||||
"X. c #FFFF33",
|
"X. c #FFFF33",
|
||||||
"o. c #000066",
|
"o. c #000066",
|
||||||
"O. c #330066",
|
"O. c #330066",
|
||||||
"+. c #660066",
|
"+. c #660066",
|
||||||
"@. c #990066",
|
"@. c #990066",
|
||||||
"#. c #CC0066",
|
"#. c #CC0066",
|
||||||
"$. c #FF0066",
|
"$. c #FF0066",
|
||||||
"%. c #003366",
|
"%. c #003366",
|
||||||
"&. c #333366",
|
"&. c #333366",
|
||||||
"*. c #663366",
|
"*. c #663366",
|
||||||
"=. c #993366",
|
"=. c #993366",
|
||||||
"-. c #CC3366",
|
"-. c #CC3366",
|
||||||
";. c #FF3366",
|
";. c #FF3366",
|
||||||
":. c #006666",
|
":. c #006666",
|
||||||
">. c #336666",
|
">. c #336666",
|
||||||
",. c #666666",
|
",. c #666666",
|
||||||
"<. c #996666",
|
"<. c #996666",
|
||||||
"1. c #CC6666",
|
"1. c #CC6666",
|
||||||
"2. c #009966",
|
"2. c #009966",
|
||||||
"3. c #339966",
|
"3. c #339966",
|
||||||
"4. c #669966",
|
"4. c #669966",
|
||||||
"5. c #999966",
|
"5. c #999966",
|
||||||
"6. c #CC9966",
|
"6. c #CC9966",
|
||||||
"7. c #FF9966",
|
"7. c #FF9966",
|
||||||
"8. c #00CC66",
|
"8. c #00CC66",
|
||||||
"9. c #33CC66",
|
"9. c #33CC66",
|
||||||
"0. c #99CC66",
|
"0. c #99CC66",
|
||||||
"q. c #CCCC66",
|
"q. c #CCCC66",
|
||||||
"w. c #FFCC66",
|
"w. c #FFCC66",
|
||||||
"e. c #00FF66",
|
"e. c #00FF66",
|
||||||
"r. c #33FF66",
|
"r. c #33FF66",
|
||||||
"t. c #99FF66",
|
"t. c #99FF66",
|
||||||
"y. c #CCFF66",
|
"y. c #CCFF66",
|
||||||
"u. c #FF00CC",
|
"u. c #FF00CC",
|
||||||
"i. c #CC00FF",
|
"i. c #CC00FF",
|
||||||
"p. c #009999",
|
"p. c #009999",
|
||||||
"a. c #993399",
|
"a. c #993399",
|
||||||
"s. c #990099",
|
"s. c #990099",
|
||||||
"d. c #CC0099",
|
"d. c #CC0099",
|
||||||
"f. c #000099",
|
"f. c #000099",
|
||||||
"g. c #333399",
|
"g. c #333399",
|
||||||
"h. c #660099",
|
"h. c #660099",
|
||||||
"j. c #CC3399",
|
"j. c #CC3399",
|
||||||
"k. c #FF0099",
|
"k. c #FF0099",
|
||||||
"l. c #006699",
|
"l. c #006699",
|
||||||
"z. c #336699",
|
"z. c #336699",
|
||||||
"x. c #663399",
|
"x. c #663399",
|
||||||
"c. c #996699",
|
"c. c #996699",
|
||||||
"v. c #CC6699",
|
"v. c #CC6699",
|
||||||
"b. c #FF3399",
|
"b. c #FF3399",
|
||||||
"n. c #339999",
|
"n. c #339999",
|
||||||
"m. c #669999",
|
"m. c #669999",
|
||||||
"M. c #999999",
|
"M. c #999999",
|
||||||
"N. c #CC9999",
|
"N. c #CC9999",
|
||||||
"B. c #FF9999",
|
"B. c #FF9999",
|
||||||
"V. c #00CC99",
|
"V. c #00CC99",
|
||||||
"C. c #33CC99",
|
"C. c #33CC99",
|
||||||
"Z. c #66CC66",
|
"Z. c #66CC66",
|
||||||
"A. c #99CC99",
|
"A. c #99CC99",
|
||||||
"S. c #CCCC99",
|
"S. c #CCCC99",
|
||||||
"D. c #FFCC99",
|
"D. c #FFCC99",
|
||||||
"F. c #00FF99",
|
"F. c #00FF99",
|
||||||
"G. c #33FF99",
|
"G. c #33FF99",
|
||||||
"H. c #66CC99",
|
"H. c #66CC99",
|
||||||
"J. c #99FF99",
|
"J. c #99FF99",
|
||||||
"K. c #CCFF99",
|
"K. c #CCFF99",
|
||||||
"L. c #FFFF99",
|
"L. c #FFFF99",
|
||||||
"P. c #0000CC",
|
"P. c #0000CC",
|
||||||
"I. c #330099",
|
"I. c #330099",
|
||||||
"U. c #6600CC",
|
"U. c #6600CC",
|
||||||
"Y. c #9900CC",
|
"Y. c #9900CC",
|
||||||
"T. c #CC00CC",
|
"T. c #CC00CC",
|
||||||
"R. c #003399",
|
"R. c #003399",
|
||||||
"E. c #3333CC",
|
"E. c #3333CC",
|
||||||
"W. c #6633CC",
|
"W. c #6633CC",
|
||||||
"Q. c #9933CC",
|
"Q. c #9933CC",
|
||||||
"!. c #CC33CC",
|
"!. c #CC33CC",
|
||||||
"~. c #FF33CC",
|
"~. c #FF33CC",
|
||||||
"^. c #0066CC",
|
"^. c #0066CC",
|
||||||
"/. c #3366CC",
|
"/. c #3366CC",
|
||||||
"(. c #666699",
|
"(. c #666699",
|
||||||
"). c #9966CC",
|
"). c #9966CC",
|
||||||
"_. c #CC66CC",
|
"_. c #CC66CC",
|
||||||
"`. c #FF6699",
|
"`. c #FF6699",
|
||||||
"'. c #0099CC",
|
"'. c #0099CC",
|
||||||
"]. c #3399CC",
|
"]. c #3399CC",
|
||||||
"[. c #6699CC",
|
"[. c #6699CC",
|
||||||
"{. c #9999CC",
|
"{. c #9999CC",
|
||||||
"}. c #CC99CC",
|
"}. c #CC99CC",
|
||||||
"|. c #FF99CC",
|
"|. c #FF99CC",
|
||||||
" X c #00CCCC",
|
" X c #00CCCC",
|
||||||
".X c #33CCCC",
|
".X c #33CCCC",
|
||||||
"XX c #66CCCC",
|
"XX c #66CCCC",
|
||||||
"oX c #99CCCC",
|
"oX c #99CCCC",
|
||||||
"OX c #CCCCCC",
|
"OX c #CCCCCC",
|
||||||
"+X c #FFCCCC",
|
"+X c #FFCCCC",
|
||||||
"@X c #00FFCC",
|
"@X c #00FFCC",
|
||||||
"#X c #33FFCC",
|
"#X c #33FFCC",
|
||||||
"$X c #66FF99",
|
"$X c #66FF99",
|
||||||
"%X c #99FFCC",
|
"%X c #99FFCC",
|
||||||
"&X c #CCFFCC",
|
"&X c #CCFFCC",
|
||||||
"*X c #FFFFCC",
|
"*X c #FFFFCC",
|
||||||
"=X c #3300CC",
|
"=X c #3300CC",
|
||||||
"-X c #6600FF",
|
"-X c #6600FF",
|
||||||
";X c #9900FF",
|
";X c #9900FF",
|
||||||
":X c #0033CC",
|
":X c #0033CC",
|
||||||
">X c #3333FF",
|
">X c #3333FF",
|
||||||
",X c #6633FF",
|
",X c #6633FF",
|
||||||
"<X c #9933FF",
|
"<X c #9933FF",
|
||||||
"1X c #CC33FF",
|
"1X c #CC33FF",
|
||||||
"2X c #FF33FF",
|
"2X c #FF33FF",
|
||||||
"3X c #0066FF",
|
"3X c #0066FF",
|
||||||
"4X c #3366FF",
|
"4X c #3366FF",
|
||||||
"5X c #6666CC",
|
"5X c #6666CC",
|
||||||
"6X c #9966FF",
|
"6X c #9966FF",
|
||||||
"7X c #CC66FF",
|
"7X c #CC66FF",
|
||||||
"8X c #FF66CC",
|
"8X c #FF66CC",
|
||||||
"9X c #0099FF",
|
"9X c #0099FF",
|
||||||
"0X c #3399FF",
|
"0X c #3399FF",
|
||||||
"qX c #6699FF",
|
"qX c #6699FF",
|
||||||
"wX c #9999FF",
|
"wX c #9999FF",
|
||||||
"eX c #CC99FF",
|
"eX c #CC99FF",
|
||||||
"rX c #FF99FF",
|
"rX c #FF99FF",
|
||||||
"tX c #00CCFF",
|
"tX c #00CCFF",
|
||||||
"yX c #33CCFF",
|
"yX c #33CCFF",
|
||||||
"uX c #66CCFF",
|
"uX c #66CCFF",
|
||||||
"iX c #99CCFF",
|
"iX c #99CCFF",
|
||||||
"pX c #CCCCFF",
|
"pX c #CCCCFF",
|
||||||
"aX c #FFCCFF",
|
"aX c #FFCCFF",
|
||||||
"sX c #33FFFF",
|
"sX c #33FFFF",
|
||||||
"dX c #66FFCC",
|
"dX c #66FFCC",
|
||||||
"fX c #99FFFF",
|
"fX c #99FFFF",
|
||||||
"gX c #CCFFFF",
|
"gX c #CCFFFF",
|
||||||
"hX c #FF6666",
|
"hX c #FF6666",
|
||||||
"jX c #66FF66",
|
"jX c #66FF66",
|
||||||
"kX c #FFFF66",
|
"kX c #FFFF66",
|
||||||
"lX c #6666FF",
|
"lX c #6666FF",
|
||||||
"zX c #FF66FF",
|
"zX c #FF66FF",
|
||||||
"xX c #66FFFF",
|
"xX c #66FFFF",
|
||||||
"cX c #A50021",
|
"cX c #A50021",
|
||||||
"vX c #5F5F5F",
|
"vX c #5F5F5F",
|
||||||
"bX c #777777",
|
"bX c #777777",
|
||||||
"nX c #868686",
|
"nX c #868686",
|
||||||
"mX c #969696",
|
"mX c #969696",
|
||||||
"MX c #CBCBCB",
|
"MX c #CBCBCB",
|
||||||
"NX c #B2B2B2",
|
"NX c #B2B2B2",
|
||||||
"BX c #D7D7D7",
|
"BX c #D7D7D7",
|
||||||
"VX c #DDDDDD",
|
"VX c #DDDDDD",
|
||||||
"CX c #E3E3E3",
|
"CX c #E3E3E3",
|
||||||
"ZX c #EAEAEA",
|
"ZX c #EAEAEA",
|
||||||
"AX c #F1F1F1",
|
"AX c #F1F1F1",
|
||||||
"SX c #F8F8F8",
|
"SX c #F8F8F8",
|
||||||
"DX c #FFFBF0",
|
"DX c #FFFBF0",
|
||||||
"FX c #A0A0A4",
|
"FX c #A0A0A4",
|
||||||
"GX c #808080",
|
"GX c #808080",
|
||||||
"HX c #FF0000",
|
"HX c #FF0000",
|
||||||
"JX c #00FF00",
|
"JX c #00FF00",
|
||||||
"KX c #FFFF00",
|
"KX c #FFFF00",
|
||||||
"LX c #0000FF",
|
"LX c #0000FF",
|
||||||
"PX c #FF00FF",
|
"PX c #FF00FF",
|
||||||
"IX c #00FFFF",
|
"IX c #00FFFF",
|
||||||
"UX c #FFFFFF",
|
"UX c #FFFFFF",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
": : : : : : : : : : : : : : : : ",
|
": : : : : : : : : : : : : : : : ",
|
||||||
": : H H H A d : 7 G K H H : : : ",
|
": : H H H A d : 7 G K H H : : : ",
|
||||||
"n n c X 4 k j X b n n : ",
|
"n n c X 4 k j X b n n : ",
|
||||||
"n 2 c $ 8 6 4 x < + 4 4 C V ~ : ",
|
"n 2 c $ 8 6 4 x < + 4 4 C V ~ : ",
|
||||||
"n * c X o $ y N u 6 $ + b D Y : ",
|
"n * c X o $ y N u 6 $ + b D Y : ",
|
||||||
"n * c X > g , S z R : ",
|
"n * c X > g , S z R : ",
|
||||||
"n * c * r r y g , 6 r q S s W : ",
|
"n * c * r r y g , 6 r q S s W : ",
|
||||||
"n * c X 4 N u + m B I : ",
|
"n * c X 4 N u + m B I : ",
|
||||||
"n * c X ; a - S 5 F : ",
|
"n * c X ; a - S 5 F : ",
|
||||||
"n * c * r r r g - S = M : ",
|
"n * c * r r r g - S = M : ",
|
||||||
"n * c X 4 N - m h J : ",
|
"n * c X 4 N - m h J : ",
|
||||||
"n * c X ; a - A 9 E : ",
|
"n * c X ; a - A 9 E : ",
|
||||||
"n * ( ] ` ^ P l y T / / ( p L : ",
|
"n * ( ] ` ^ P l y T / / ( p L : ",
|
||||||
"n O > 0 f ) ! t 8 % n : ",
|
"n O > 0 f ) ! t 8 % n : ",
|
||||||
"U U U U U U U ' Q U U U U U U : ",
|
"U U U U U U U ' Q U U U U U U : ",
|
||||||
": : : : : : : : : : : : : : : : "
|
": : : : : : : : : : : : : : : : "
|
||||||
};
|
};
|
||||||
|
|||||||
+282
-282
@@ -1,282 +1,282 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static const char * addressbook20_xpm[] = {
|
static const char * addressbook20_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"20 20 256 2",
|
"20 20 256 2",
|
||||||
" c #FFFFFF",
|
" c #FFFFFF",
|
||||||
". c #F7FFFF",
|
". c #F7FFFF",
|
||||||
"X c #F7F7FF",
|
"X c #F7F7FF",
|
||||||
"o c #EFF7FF",
|
"o c #EFF7FF",
|
||||||
"O c #EFF7F7",
|
"O c #EFF7F7",
|
||||||
"+ c #E6EFFF",
|
"+ c #E6EFFF",
|
||||||
"@ c #E6EFF7",
|
"@ c #E6EFF7",
|
||||||
"# c #DEEFFF",
|
"# c #DEEFFF",
|
||||||
"$ c #DEE6F7",
|
"$ c #DEE6F7",
|
||||||
"% c #DEE6EF",
|
"% c #DEE6EF",
|
||||||
"& c #D6E6F7",
|
"& c #D6E6F7",
|
||||||
"* c #FFFF00",
|
"* c #FFFF00",
|
||||||
"= c #DEDEE6",
|
"= c #DEDEE6",
|
||||||
"- c #D6DEE6",
|
"- c #D6DEE6",
|
||||||
"; c #D6D6DE",
|
"; c #D6D6DE",
|
||||||
": c #CED6E6",
|
": c #CED6E6",
|
||||||
"> c None",
|
"> c None",
|
||||||
", c #C5D6E6",
|
", c #C5D6E6",
|
||||||
"< c #C5CEE6",
|
"< c #C5CEE6",
|
||||||
"1 c #B5CEEF",
|
"1 c #B5CEEF",
|
||||||
"2 c #C5C5C5",
|
"2 c #C5C5C5",
|
||||||
"3 c #C5DE31",
|
"3 c #C5DE31",
|
||||||
"4 c #B5C5DE",
|
"4 c #B5C5DE",
|
||||||
"5 c #BDC5C5",
|
"5 c #BDC5C5",
|
||||||
"6 c #ADC5EF",
|
"6 c #ADC5EF",
|
||||||
"7 c #B5C5CE",
|
"7 c #B5C5CE",
|
||||||
"8 c #BDBDBD",
|
"8 c #BDBDBD",
|
||||||
"9 c #B5BDCE",
|
"9 c #B5BDCE",
|
||||||
"0 c #ADBDDE",
|
"0 c #ADBDDE",
|
||||||
"q c #ADBDD6",
|
"q c #ADBDD6",
|
||||||
"w c #B5CE52",
|
"w c #B5CE52",
|
||||||
"e c #ADB5C5",
|
"e c #ADB5C5",
|
||||||
"r c #00FFFF",
|
"r c #00FFFF",
|
||||||
"t c #A5B5C5",
|
"t c #A5B5C5",
|
||||||
"y c #9CB5CE",
|
"y c #9CB5CE",
|
||||||
"u c #94B5DE",
|
"u c #94B5DE",
|
||||||
"i c #9CADD6",
|
"i c #9CADD6",
|
||||||
"p c #A5ADB5",
|
"p c #A5ADB5",
|
||||||
"a c #94ADDE",
|
"a c #94ADDE",
|
||||||
"s c #94ADD6",
|
"s c #94ADD6",
|
||||||
"d c #9CADBD",
|
"d c #9CADBD",
|
||||||
"f c #8CADDE",
|
"f c #8CADDE",
|
||||||
"g c #BD9CA5",
|
"g c #BD9CA5",
|
||||||
"h c #9CA5BD",
|
"h c #9CA5BD",
|
||||||
"j c #9CA5B5",
|
"j c #9CA5B5",
|
||||||
"k c #29D6E6",
|
"k c #29D6E6",
|
||||||
"l c #8CA5CE",
|
"l c #8CA5CE",
|
||||||
"z c #849CCE",
|
"z c #849CCE",
|
||||||
"x c #6BA5C5",
|
"x c #6BA5C5",
|
||||||
"c c #739CDE",
|
"c c #739CDE",
|
||||||
"v c #00FF00",
|
"v c #00FF00",
|
||||||
"b c #739CD6",
|
"b c #739CD6",
|
||||||
"n c #7B94CE",
|
"n c #7B94CE",
|
||||||
"m c #8494AD",
|
"m c #8494AD",
|
||||||
"M c #7394CE",
|
"M c #7394CE",
|
||||||
"N c #7B94B5",
|
"N c #7B94B5",
|
||||||
"B c #4AB584",
|
"B c #4AB584",
|
||||||
"V c #848CB5",
|
"V c #848CB5",
|
||||||
"C c #6B94CE",
|
"C c #6B94CE",
|
||||||
"Z c #6394D6",
|
"Z c #6394D6",
|
||||||
"A c #6394CE",
|
"A c #6394CE",
|
||||||
"S c #7B8CAD",
|
"S c #7B8CAD",
|
||||||
"D c #6B8CC5",
|
"D c #6B8CC5",
|
||||||
"F c #738CAD",
|
"F c #738CAD",
|
||||||
"G c #5294B5",
|
"G c #5294B5",
|
||||||
"H c #6B84C5",
|
"H c #6B84C5",
|
||||||
"J c #7384A5",
|
"J c #7384A5",
|
||||||
"K c #73849C",
|
"K c #73849C",
|
||||||
"L c #738494",
|
"L c #738494",
|
||||||
"P c #FF4A4A",
|
"P c #FF4A4A",
|
||||||
"I c #FF4A42",
|
"I c #FF4A42",
|
||||||
"U c #737B8C",
|
"U c #737B8C",
|
||||||
"Y c #637BAD",
|
"Y c #637BAD",
|
||||||
"T c #527BBD",
|
"T c #527BBD",
|
||||||
"R c #637394",
|
"R c #637394",
|
||||||
"E c #637352",
|
"E c #637352",
|
||||||
"W c #5A6B8C",
|
"W c #5A6B8C",
|
||||||
"Q c #526B9C",
|
"Q c #526B9C",
|
||||||
"! c #63638C",
|
"! c #63638C",
|
||||||
"~ c #5A734A",
|
"~ c #5A734A",
|
||||||
"^ c #4A6B9C",
|
"^ c #4A6B9C",
|
||||||
"/ c #526B63",
|
"/ c #526B63",
|
||||||
"( c #0884A5",
|
"( c #0884A5",
|
||||||
") c #526384",
|
") c #526384",
|
||||||
"_ c #52637B",
|
"_ c #52637B",
|
||||||
"` c #4A6B5A",
|
"` c #4A6B5A",
|
||||||
"' c #52636B",
|
"' c #52636B",
|
||||||
"] c #525A8C",
|
"] c #525A8C",
|
||||||
"[ c #525A7B",
|
"[ c #525A7B",
|
||||||
"{ c #426363",
|
"{ c #426363",
|
||||||
"} c #4A5A7B",
|
"} c #4A5A7B",
|
||||||
"| c #425A8C",
|
"| c #425A8C",
|
||||||
" . c #196B94",
|
" . c #196B94",
|
||||||
".. c #3A5A8C",
|
".. c #3A5A8C",
|
||||||
"X. c #3A5A84",
|
"X. c #3A5A84",
|
||||||
"o. c #087B4A",
|
"o. c #087B4A",
|
||||||
"O. c #21636B",
|
"O. c #21636B",
|
||||||
"+. c #634263",
|
"+. c #634263",
|
||||||
"@. c #3A527B",
|
"@. c #3A527B",
|
||||||
"#. c #424A84",
|
"#. c #424A84",
|
||||||
"$. c #315284",
|
"$. c #315284",
|
||||||
"%. c #295284",
|
"%. c #295284",
|
||||||
"&. c #3A4A6B",
|
"&. c #3A4A6B",
|
||||||
"*. c #42427B",
|
"*. c #42427B",
|
||||||
"=. c #424273",
|
"=. c #424273",
|
||||||
"-. c #294A84",
|
"-. c #294A84",
|
||||||
";. c #3A3A73",
|
";. c #3A3A73",
|
||||||
":. c #194284",
|
":. c #194284",
|
||||||
">. c #104A63",
|
">. c #104A63",
|
||||||
",. c #213A6B",
|
",. c #213A6B",
|
||||||
"<. c #31316B",
|
"<. c #31316B",
|
||||||
"1. c #21315A",
|
"1. c #21315A",
|
||||||
"2. c #212163",
|
"2. c #212163",
|
||||||
"3. c #08295A",
|
"3. c #08295A",
|
||||||
"4. c #082152",
|
"4. c #082152",
|
||||||
"5. c #101952",
|
"5. c #101952",
|
||||||
"6. c #CC9966",
|
"6. c #CC9966",
|
||||||
"7. c #FF9966",
|
"7. c #FF9966",
|
||||||
"8. c #00CC66",
|
"8. c #00CC66",
|
||||||
"9. c #33CC66",
|
"9. c #33CC66",
|
||||||
"0. c #99CC66",
|
"0. c #99CC66",
|
||||||
"q. c #CCCC66",
|
"q. c #CCCC66",
|
||||||
"w. c #FFCC66",
|
"w. c #FFCC66",
|
||||||
"e. c #00FF66",
|
"e. c #00FF66",
|
||||||
"r. c #33FF66",
|
"r. c #33FF66",
|
||||||
"t. c #99FF66",
|
"t. c #99FF66",
|
||||||
"y. c #CCFF66",
|
"y. c #CCFF66",
|
||||||
"u. c #FF00CC",
|
"u. c #FF00CC",
|
||||||
"i. c #CC00FF",
|
"i. c #CC00FF",
|
||||||
"p. c #009999",
|
"p. c #009999",
|
||||||
"a. c #993399",
|
"a. c #993399",
|
||||||
"s. c #990099",
|
"s. c #990099",
|
||||||
"d. c #CC0099",
|
"d. c #CC0099",
|
||||||
"f. c #000099",
|
"f. c #000099",
|
||||||
"g. c #333399",
|
"g. c #333399",
|
||||||
"h. c #660099",
|
"h. c #660099",
|
||||||
"j. c #CC3399",
|
"j. c #CC3399",
|
||||||
"k. c #FF0099",
|
"k. c #FF0099",
|
||||||
"l. c #006699",
|
"l. c #006699",
|
||||||
"z. c #336699",
|
"z. c #336699",
|
||||||
"x. c #663399",
|
"x. c #663399",
|
||||||
"c. c #996699",
|
"c. c #996699",
|
||||||
"v. c #CC6699",
|
"v. c #CC6699",
|
||||||
"b. c #FF3399",
|
"b. c #FF3399",
|
||||||
"n. c #339999",
|
"n. c #339999",
|
||||||
"m. c #669999",
|
"m. c #669999",
|
||||||
"M. c #999999",
|
"M. c #999999",
|
||||||
"N. c #CC9999",
|
"N. c #CC9999",
|
||||||
"B. c #FF9999",
|
"B. c #FF9999",
|
||||||
"V. c #00CC99",
|
"V. c #00CC99",
|
||||||
"C. c #33CC99",
|
"C. c #33CC99",
|
||||||
"Z. c #66CC66",
|
"Z. c #66CC66",
|
||||||
"A. c #99CC99",
|
"A. c #99CC99",
|
||||||
"S. c #CCCC99",
|
"S. c #CCCC99",
|
||||||
"D. c #FFCC99",
|
"D. c #FFCC99",
|
||||||
"F. c #00FF99",
|
"F. c #00FF99",
|
||||||
"G. c #33FF99",
|
"G. c #33FF99",
|
||||||
"H. c #66CC99",
|
"H. c #66CC99",
|
||||||
"J. c #99FF99",
|
"J. c #99FF99",
|
||||||
"K. c #CCFF99",
|
"K. c #CCFF99",
|
||||||
"L. c #FFFF99",
|
"L. c #FFFF99",
|
||||||
"P. c #0000CC",
|
"P. c #0000CC",
|
||||||
"I. c #330099",
|
"I. c #330099",
|
||||||
"U. c #6600CC",
|
"U. c #6600CC",
|
||||||
"Y. c #9900CC",
|
"Y. c #9900CC",
|
||||||
"T. c #CC00CC",
|
"T. c #CC00CC",
|
||||||
"R. c #003399",
|
"R. c #003399",
|
||||||
"E. c #3333CC",
|
"E. c #3333CC",
|
||||||
"W. c #6633CC",
|
"W. c #6633CC",
|
||||||
"Q. c #9933CC",
|
"Q. c #9933CC",
|
||||||
"!. c #CC33CC",
|
"!. c #CC33CC",
|
||||||
"~. c #FF33CC",
|
"~. c #FF33CC",
|
||||||
"^. c #0066CC",
|
"^. c #0066CC",
|
||||||
"/. c #3366CC",
|
"/. c #3366CC",
|
||||||
"(. c #666699",
|
"(. c #666699",
|
||||||
"). c #9966CC",
|
"). c #9966CC",
|
||||||
"_. c #CC66CC",
|
"_. c #CC66CC",
|
||||||
"`. c #FF6699",
|
"`. c #FF6699",
|
||||||
"'. c #0099CC",
|
"'. c #0099CC",
|
||||||
"]. c #3399CC",
|
"]. c #3399CC",
|
||||||
"[. c #6699CC",
|
"[. c #6699CC",
|
||||||
"{. c #9999CC",
|
"{. c #9999CC",
|
||||||
"}. c #CC99CC",
|
"}. c #CC99CC",
|
||||||
"|. c #FF99CC",
|
"|. c #FF99CC",
|
||||||
" X c #00CCCC",
|
" X c #00CCCC",
|
||||||
".X c #33CCCC",
|
".X c #33CCCC",
|
||||||
"XX c #66CCCC",
|
"XX c #66CCCC",
|
||||||
"oX c #99CCCC",
|
"oX c #99CCCC",
|
||||||
"OX c #CCCCCC",
|
"OX c #CCCCCC",
|
||||||
"+X c #FFCCCC",
|
"+X c #FFCCCC",
|
||||||
"@X c #00FFCC",
|
"@X c #00FFCC",
|
||||||
"#X c #33FFCC",
|
"#X c #33FFCC",
|
||||||
"$X c #66FF99",
|
"$X c #66FF99",
|
||||||
"%X c #99FFCC",
|
"%X c #99FFCC",
|
||||||
"&X c #CCFFCC",
|
"&X c #CCFFCC",
|
||||||
"*X c #FFFFCC",
|
"*X c #FFFFCC",
|
||||||
"=X c #3300CC",
|
"=X c #3300CC",
|
||||||
"-X c #6600FF",
|
"-X c #6600FF",
|
||||||
";X c #9900FF",
|
";X c #9900FF",
|
||||||
":X c #0033CC",
|
":X c #0033CC",
|
||||||
">X c #3333FF",
|
">X c #3333FF",
|
||||||
",X c #6633FF",
|
",X c #6633FF",
|
||||||
"<X c #9933FF",
|
"<X c #9933FF",
|
||||||
"1X c #CC33FF",
|
"1X c #CC33FF",
|
||||||
"2X c #FF33FF",
|
"2X c #FF33FF",
|
||||||
"3X c #0066FF",
|
"3X c #0066FF",
|
||||||
"4X c #3366FF",
|
"4X c #3366FF",
|
||||||
"5X c #6666CC",
|
"5X c #6666CC",
|
||||||
"6X c #9966FF",
|
"6X c #9966FF",
|
||||||
"7X c #CC66FF",
|
"7X c #CC66FF",
|
||||||
"8X c #FF66CC",
|
"8X c #FF66CC",
|
||||||
"9X c #0099FF",
|
"9X c #0099FF",
|
||||||
"0X c #3399FF",
|
"0X c #3399FF",
|
||||||
"qX c #6699FF",
|
"qX c #6699FF",
|
||||||
"wX c #9999FF",
|
"wX c #9999FF",
|
||||||
"eX c #CC99FF",
|
"eX c #CC99FF",
|
||||||
"rX c #FF99FF",
|
"rX c #FF99FF",
|
||||||
"tX c #00CCFF",
|
"tX c #00CCFF",
|
||||||
"yX c #33CCFF",
|
"yX c #33CCFF",
|
||||||
"uX c #66CCFF",
|
"uX c #66CCFF",
|
||||||
"iX c #99CCFF",
|
"iX c #99CCFF",
|
||||||
"pX c #CCCCFF",
|
"pX c #CCCCFF",
|
||||||
"aX c #FFCCFF",
|
"aX c #FFCCFF",
|
||||||
"sX c #33FFFF",
|
"sX c #33FFFF",
|
||||||
"dX c #66FFCC",
|
"dX c #66FFCC",
|
||||||
"fX c #99FFFF",
|
"fX c #99FFFF",
|
||||||
"gX c #CCFFFF",
|
"gX c #CCFFFF",
|
||||||
"hX c #FF6666",
|
"hX c #FF6666",
|
||||||
"jX c #66FF66",
|
"jX c #66FF66",
|
||||||
"kX c #FFFF66",
|
"kX c #FFFF66",
|
||||||
"lX c #6666FF",
|
"lX c #6666FF",
|
||||||
"zX c #FF66FF",
|
"zX c #FF66FF",
|
||||||
"xX c #66FFFF",
|
"xX c #66FFFF",
|
||||||
"cX c #A50021",
|
"cX c #A50021",
|
||||||
"vX c #5F5F5F",
|
"vX c #5F5F5F",
|
||||||
"bX c #777777",
|
"bX c #777777",
|
||||||
"nX c #868686",
|
"nX c #868686",
|
||||||
"mX c #969696",
|
"mX c #969696",
|
||||||
"MX c #CBCBCB",
|
"MX c #CBCBCB",
|
||||||
"NX c #B2B2B2",
|
"NX c #B2B2B2",
|
||||||
"BX c #D7D7D7",
|
"BX c #D7D7D7",
|
||||||
"VX c #DDDDDD",
|
"VX c #DDDDDD",
|
||||||
"CX c #E3E3E3",
|
"CX c #E3E3E3",
|
||||||
"ZX c #EAEAEA",
|
"ZX c #EAEAEA",
|
||||||
"AX c #F1F1F1",
|
"AX c #F1F1F1",
|
||||||
"SX c #F8F8F8",
|
"SX c #F8F8F8",
|
||||||
"DX c #FFFBF0",
|
"DX c #FFFBF0",
|
||||||
"FX c #A0A0A4",
|
"FX c #A0A0A4",
|
||||||
"GX c #808080",
|
"GX c #808080",
|
||||||
"HX c #FF0000",
|
"HX c #FF0000",
|
||||||
"JX c #00FF00",
|
"JX c #00FF00",
|
||||||
"KX c #FFFF00",
|
"KX c #FFFF00",
|
||||||
"LX c #0000FF",
|
"LX c #0000FF",
|
||||||
"PX c #FF00FF",
|
"PX c #FF00FF",
|
||||||
"IX c #00FFFF",
|
"IX c #00FFFF",
|
||||||
"UX c #FFFFFF",
|
"UX c #FFFFFF",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
"> > > > > > > > > > > > > > > > > > > > ",
|
"> > > > > > > > > > > > > > > > > > > > ",
|
||||||
"> > > > > > > > > > > > > > > > > > > > ",
|
"> > > > > > > > > > > > > > > > > > > > ",
|
||||||
"> > U $.| | ^ S 2 > p W | | @.L > > > > ",
|
"> > U $.| | ^ S 2 > p W | | @.L > > > > ",
|
||||||
"8 5 R - < Y j S O - ) g e > > ",
|
"8 5 R - < Y j S O - ) g e > > ",
|
||||||
"! V K - % a Q # - +.P <.> > ",
|
"! V K - % a Q # - +.P <.> > ",
|
||||||
"! & K - 0 z n D C b f n n z q +.P <.> > ",
|
"! & K - 0 z n D C b f n n z q +.P <.> > ",
|
||||||
"! & K - % M A 1 - %.G #.> > ",
|
"! & K - % M A 1 - %.G #.> > ",
|
||||||
"! & K - % u b # - o.v >.> > ",
|
"! & K - % u b # - o.v >.> > ",
|
||||||
"! & K - 0 z n H M b 6 z n z q o.v >.> > ",
|
"! & K - 0 z n H M b 6 z n z q o.v >.> > ",
|
||||||
"! & K - X - M A a - O.B @.> > ",
|
"! & K - X - M A a - O.B @.> > ",
|
||||||
"! & K - X % u b # - ` 3 / > > ",
|
"! & K - X % u b # - ` 3 / > > ",
|
||||||
"! & K - 0 l i 4 u b # - ~ * E > > ",
|
"! & K - 0 l i 4 u b # - ~ * E > > ",
|
||||||
"! & K - X o $ s T b # - { w ' > > ",
|
"! & K - X o $ s T b # - { w ' > > ",
|
||||||
"! & K - % f b # - .k -.> > ",
|
"! & K - % f b # - .k -.> > ",
|
||||||
"! & K m d t 7 , u b # ; 9 9 h ( r :.> > ",
|
"! & K m d t 7 , u b # ; 9 9 h ( r :.> > ",
|
||||||
"! & h _ _ [ &.4.$.A ,.1.} _ _ F x ] > > ",
|
"! & h _ _ [ &.4.$.A ,.1.} _ _ F x ] > > ",
|
||||||
"! @ , y N _ 3._ N y , @ ! > > ",
|
"! @ , y N _ 3._ N y , @ ! > > ",
|
||||||
"*.*.*.*.*.*.*.*.;.5.*.*.*.*.*.*.*.2.> > ",
|
"*.*.*.*.*.*.*.*.;.5.*.*.*.*.*.*.*.2.> > ",
|
||||||
"> > > > > > > > > > > > > > > > > > > > ",
|
"> > > > > > > > > > > > > > > > > > > > ",
|
||||||
"> > > > > > > > > > > > > > > > > > > > "
|
"> > > > > > > > > > > > > > > > > > > > "
|
||||||
};
|
};
|
||||||
|
|||||||
+41
-41
@@ -1,41 +1,41 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static const char * check_xpm[] = {
|
static const char * check_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"32 32 3 1",
|
"32 32 3 1",
|
||||||
" c #008000",
|
" c #008000",
|
||||||
". c #00FF00",
|
". c #00FF00",
|
||||||
"X c None",
|
"X c None",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXX XXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXX XXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXX . XXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXX . XXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXX .. XXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXX .. XXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXX . XXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXX . XXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXX .. XXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXX .. XXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXX XX . XXXXXXXXXXXXX",
|
"XXXXXXXXXXX XX . XXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXX . .. XXXXXXXXXXXXXX",
|
"XXXXXXXXXXX . .. XXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXX .. . XXXXXXXXXXXXXX",
|
"XXXXXXXXXXX .. . XXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXX ... XXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXX ... XXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXX . XXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXX . XXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXX XXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXX XXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
||||||
};
|
};
|
||||||
|
|||||||
+278
-278
@@ -1,278 +1,278 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static const char * send16_xpm[] = {
|
static const char * send16_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"16 16 256 2",
|
"16 16 256 2",
|
||||||
" c #ADF7AD",
|
" c #ADF7AD",
|
||||||
". c #9CFF9C",
|
". c #9CFF9C",
|
||||||
"X c None",
|
"X c None",
|
||||||
"o c #ADEFAD",
|
"o c #ADEFAD",
|
||||||
"O c #94FF94",
|
"O c #94FF94",
|
||||||
"+ c #D6CECE",
|
"+ c #D6CECE",
|
||||||
"@ c #8CFF8C",
|
"@ c #8CFF8C",
|
||||||
"# c #CECECE",
|
"# c #CECECE",
|
||||||
"$ c #CECEC5",
|
"$ c #CECEC5",
|
||||||
"% c #84FF84",
|
"% c #84FF84",
|
||||||
"& c #CEC5C5",
|
"& c #CEC5C5",
|
||||||
"* c #73FF73",
|
"* c #73FF73",
|
||||||
"= c #C5C5C5",
|
"= c #C5C5C5",
|
||||||
"- c #6BFF6B",
|
"- c #6BFF6B",
|
||||||
"; c #73F773",
|
"; c #73F773",
|
||||||
": c #C5BDBD",
|
": c #C5BDBD",
|
||||||
"> c #6BF76B",
|
"> c #6BF76B",
|
||||||
", c #BDBDBD",
|
", c #BDBDBD",
|
||||||
"< c #63F763",
|
"< c #63F763",
|
||||||
"1 c #B5B5B5",
|
"1 c #B5B5B5",
|
||||||
"2 c #52F752",
|
"2 c #52F752",
|
||||||
"3 c #42FF42",
|
"3 c #42FF42",
|
||||||
"4 c #3AFF3A",
|
"4 c #3AFF3A",
|
||||||
"5 c #ADADAD",
|
"5 c #ADADAD",
|
||||||
"6 c #ADADA5",
|
"6 c #ADADA5",
|
||||||
"7 c #4AEF4A",
|
"7 c #4AEF4A",
|
||||||
"8 c #29FF29",
|
"8 c #29FF29",
|
||||||
"9 c #A5A5A5",
|
"9 c #A5A5A5",
|
||||||
"0 c #42E642",
|
"0 c #42E642",
|
||||||
"q c #9CA59C",
|
"q c #9CA59C",
|
||||||
"w c #3AE63A",
|
"w c #3AE63A",
|
||||||
"e c #10FF10",
|
"e c #10FF10",
|
||||||
"r c #08FF08",
|
"r c #08FF08",
|
||||||
"t c #949C94",
|
"t c #949C94",
|
||||||
"y c #00FF00",
|
"y c #00FF00",
|
||||||
"u c #00F700",
|
"u c #00F700",
|
||||||
"i c #8C948C",
|
"i c #8C948C",
|
||||||
"p c #00EF00",
|
"p c #00EF00",
|
||||||
"a c #08E608",
|
"a c #08E608",
|
||||||
"s c #10DE10",
|
"s c #10DE10",
|
||||||
"d c #00E600",
|
"d c #00E600",
|
||||||
"f c #00DE00",
|
"f c #00DE00",
|
||||||
"g c #19C519",
|
"g c #19C519",
|
||||||
"h c #00CE00",
|
"h c #00CE00",
|
||||||
"j c #00C500",
|
"j c #00C500",
|
||||||
"k c #008C00",
|
"k c #008C00",
|
||||||
"l c #008400",
|
"l c #008400",
|
||||||
"z c #669900",
|
"z c #669900",
|
||||||
"x c #999900",
|
"x c #999900",
|
||||||
"c c #CC9900",
|
"c c #CC9900",
|
||||||
"v c #FF9900",
|
"v c #FF9900",
|
||||||
"b c #00CC00",
|
"b c #00CC00",
|
||||||
"n c #33CC00",
|
"n c #33CC00",
|
||||||
"m c #66CC00",
|
"m c #66CC00",
|
||||||
"M c #99CC00",
|
"M c #99CC00",
|
||||||
"N c #CCCC00",
|
"N c #CCCC00",
|
||||||
"B c #FFCC00",
|
"B c #FFCC00",
|
||||||
"V c #66FF00",
|
"V c #66FF00",
|
||||||
"C c #99FF00",
|
"C c #99FF00",
|
||||||
"Z c #CCFF00",
|
"Z c #CCFF00",
|
||||||
"A c #000033",
|
"A c #000033",
|
||||||
"S c #330033",
|
"S c #330033",
|
||||||
"D c #660033",
|
"D c #660033",
|
||||||
"F c #990033",
|
"F c #990033",
|
||||||
"G c #CC0033",
|
"G c #CC0033",
|
||||||
"H c #FF0033",
|
"H c #FF0033",
|
||||||
"J c #003333",
|
"J c #003333",
|
||||||
"K c #333333",
|
"K c #333333",
|
||||||
"L c #663333",
|
"L c #663333",
|
||||||
"P c #993333",
|
"P c #993333",
|
||||||
"I c #CC3333",
|
"I c #CC3333",
|
||||||
"U c #FF3333",
|
"U c #FF3333",
|
||||||
"Y c #006633",
|
"Y c #006633",
|
||||||
"T c #336633",
|
"T c #336633",
|
||||||
"R c #666633",
|
"R c #666633",
|
||||||
"E c #996633",
|
"E c #996633",
|
||||||
"W c #CC6633",
|
"W c #CC6633",
|
||||||
"Q c #FF6633",
|
"Q c #FF6633",
|
||||||
"! c #009933",
|
"! c #009933",
|
||||||
"~ c #339933",
|
"~ c #339933",
|
||||||
"^ c #669933",
|
"^ c #669933",
|
||||||
"/ c #999933",
|
"/ c #999933",
|
||||||
"( c #CC9933",
|
"( c #CC9933",
|
||||||
") c #FF9933",
|
") c #FF9933",
|
||||||
"_ c #00CC33",
|
"_ c #00CC33",
|
||||||
"` c #33CC33",
|
"` c #33CC33",
|
||||||
"' c #66CC33",
|
"' c #66CC33",
|
||||||
"] c #99CC33",
|
"] c #99CC33",
|
||||||
"[ c #CCCC33",
|
"[ c #CCCC33",
|
||||||
"{ c #FFCC33",
|
"{ c #FFCC33",
|
||||||
"} c #33FF33",
|
"} c #33FF33",
|
||||||
"| c #66FF33",
|
"| c #66FF33",
|
||||||
" . c #99FF33",
|
" . c #99FF33",
|
||||||
".. c #CCFF33",
|
".. c #CCFF33",
|
||||||
"X. c #FFFF33",
|
"X. c #FFFF33",
|
||||||
"o. c #000066",
|
"o. c #000066",
|
||||||
"O. c #330066",
|
"O. c #330066",
|
||||||
"+. c #660066",
|
"+. c #660066",
|
||||||
"@. c #990066",
|
"@. c #990066",
|
||||||
"#. c #CC0066",
|
"#. c #CC0066",
|
||||||
"$. c #FF0066",
|
"$. c #FF0066",
|
||||||
"%. c #003366",
|
"%. c #003366",
|
||||||
"&. c #333366",
|
"&. c #333366",
|
||||||
"*. c #663366",
|
"*. c #663366",
|
||||||
"=. c #993366",
|
"=. c #993366",
|
||||||
"-. c #CC3366",
|
"-. c #CC3366",
|
||||||
";. c #FF3366",
|
";. c #FF3366",
|
||||||
":. c #006666",
|
":. c #006666",
|
||||||
">. c #336666",
|
">. c #336666",
|
||||||
",. c #666666",
|
",. c #666666",
|
||||||
"<. c #996666",
|
"<. c #996666",
|
||||||
"1. c #CC6666",
|
"1. c #CC6666",
|
||||||
"2. c #009966",
|
"2. c #009966",
|
||||||
"3. c #339966",
|
"3. c #339966",
|
||||||
"4. c #669966",
|
"4. c #669966",
|
||||||
"5. c #999966",
|
"5. c #999966",
|
||||||
"6. c #CC9966",
|
"6. c #CC9966",
|
||||||
"7. c #FF9966",
|
"7. c #FF9966",
|
||||||
"8. c #00CC66",
|
"8. c #00CC66",
|
||||||
"9. c #33CC66",
|
"9. c #33CC66",
|
||||||
"0. c #99CC66",
|
"0. c #99CC66",
|
||||||
"q. c #CCCC66",
|
"q. c #CCCC66",
|
||||||
"w. c #FFCC66",
|
"w. c #FFCC66",
|
||||||
"e. c #00FF66",
|
"e. c #00FF66",
|
||||||
"r. c #33FF66",
|
"r. c #33FF66",
|
||||||
"t. c #99FF66",
|
"t. c #99FF66",
|
||||||
"y. c #CCFF66",
|
"y. c #CCFF66",
|
||||||
"u. c #FF00CC",
|
"u. c #FF00CC",
|
||||||
"i. c #CC00FF",
|
"i. c #CC00FF",
|
||||||
"p. c #009999",
|
"p. c #009999",
|
||||||
"a. c #993399",
|
"a. c #993399",
|
||||||
"s. c #990099",
|
"s. c #990099",
|
||||||
"d. c #CC0099",
|
"d. c #CC0099",
|
||||||
"f. c #000099",
|
"f. c #000099",
|
||||||
"g. c #333399",
|
"g. c #333399",
|
||||||
"h. c #660099",
|
"h. c #660099",
|
||||||
"j. c #CC3399",
|
"j. c #CC3399",
|
||||||
"k. c #FF0099",
|
"k. c #FF0099",
|
||||||
"l. c #006699",
|
"l. c #006699",
|
||||||
"z. c #336699",
|
"z. c #336699",
|
||||||
"x. c #663399",
|
"x. c #663399",
|
||||||
"c. c #996699",
|
"c. c #996699",
|
||||||
"v. c #CC6699",
|
"v. c #CC6699",
|
||||||
"b. c #FF3399",
|
"b. c #FF3399",
|
||||||
"n. c #339999",
|
"n. c #339999",
|
||||||
"m. c #669999",
|
"m. c #669999",
|
||||||
"M. c #999999",
|
"M. c #999999",
|
||||||
"N. c #CC9999",
|
"N. c #CC9999",
|
||||||
"B. c #FF9999",
|
"B. c #FF9999",
|
||||||
"V. c #00CC99",
|
"V. c #00CC99",
|
||||||
"C. c #33CC99",
|
"C. c #33CC99",
|
||||||
"Z. c #66CC66",
|
"Z. c #66CC66",
|
||||||
"A. c #99CC99",
|
"A. c #99CC99",
|
||||||
"S. c #CCCC99",
|
"S. c #CCCC99",
|
||||||
"D. c #FFCC99",
|
"D. c #FFCC99",
|
||||||
"F. c #00FF99",
|
"F. c #00FF99",
|
||||||
"G. c #33FF99",
|
"G. c #33FF99",
|
||||||
"H. c #66CC99",
|
"H. c #66CC99",
|
||||||
"J. c #99FF99",
|
"J. c #99FF99",
|
||||||
"K. c #CCFF99",
|
"K. c #CCFF99",
|
||||||
"L. c #FFFF99",
|
"L. c #FFFF99",
|
||||||
"P. c #0000CC",
|
"P. c #0000CC",
|
||||||
"I. c #330099",
|
"I. c #330099",
|
||||||
"U. c #6600CC",
|
"U. c #6600CC",
|
||||||
"Y. c #9900CC",
|
"Y. c #9900CC",
|
||||||
"T. c #CC00CC",
|
"T. c #CC00CC",
|
||||||
"R. c #003399",
|
"R. c #003399",
|
||||||
"E. c #3333CC",
|
"E. c #3333CC",
|
||||||
"W. c #6633CC",
|
"W. c #6633CC",
|
||||||
"Q. c #9933CC",
|
"Q. c #9933CC",
|
||||||
"!. c #CC33CC",
|
"!. c #CC33CC",
|
||||||
"~. c #FF33CC",
|
"~. c #FF33CC",
|
||||||
"^. c #0066CC",
|
"^. c #0066CC",
|
||||||
"/. c #3366CC",
|
"/. c #3366CC",
|
||||||
"(. c #666699",
|
"(. c #666699",
|
||||||
"). c #9966CC",
|
"). c #9966CC",
|
||||||
"_. c #CC66CC",
|
"_. c #CC66CC",
|
||||||
"`. c #FF6699",
|
"`. c #FF6699",
|
||||||
"'. c #0099CC",
|
"'. c #0099CC",
|
||||||
"]. c #3399CC",
|
"]. c #3399CC",
|
||||||
"[. c #6699CC",
|
"[. c #6699CC",
|
||||||
"{. c #9999CC",
|
"{. c #9999CC",
|
||||||
"}. c #CC99CC",
|
"}. c #CC99CC",
|
||||||
"|. c #FF99CC",
|
"|. c #FF99CC",
|
||||||
" X c #00CCCC",
|
" X c #00CCCC",
|
||||||
".X c #33CCCC",
|
".X c #33CCCC",
|
||||||
"XX c #66CCCC",
|
"XX c #66CCCC",
|
||||||
"oX c #99CCCC",
|
"oX c #99CCCC",
|
||||||
"OX c #CCCCCC",
|
"OX c #CCCCCC",
|
||||||
"+X c #FFCCCC",
|
"+X c #FFCCCC",
|
||||||
"@X c #00FFCC",
|
"@X c #00FFCC",
|
||||||
"#X c #33FFCC",
|
"#X c #33FFCC",
|
||||||
"$X c #66FF99",
|
"$X c #66FF99",
|
||||||
"%X c #99FFCC",
|
"%X c #99FFCC",
|
||||||
"&X c #CCFFCC",
|
"&X c #CCFFCC",
|
||||||
"*X c #FFFFCC",
|
"*X c #FFFFCC",
|
||||||
"=X c #3300CC",
|
"=X c #3300CC",
|
||||||
"-X c #6600FF",
|
"-X c #6600FF",
|
||||||
";X c #9900FF",
|
";X c #9900FF",
|
||||||
":X c #0033CC",
|
":X c #0033CC",
|
||||||
">X c #3333FF",
|
">X c #3333FF",
|
||||||
",X c #6633FF",
|
",X c #6633FF",
|
||||||
"<X c #9933FF",
|
"<X c #9933FF",
|
||||||
"1X c #CC33FF",
|
"1X c #CC33FF",
|
||||||
"2X c #FF33FF",
|
"2X c #FF33FF",
|
||||||
"3X c #0066FF",
|
"3X c #0066FF",
|
||||||
"4X c #3366FF",
|
"4X c #3366FF",
|
||||||
"5X c #6666CC",
|
"5X c #6666CC",
|
||||||
"6X c #9966FF",
|
"6X c #9966FF",
|
||||||
"7X c #CC66FF",
|
"7X c #CC66FF",
|
||||||
"8X c #FF66CC",
|
"8X c #FF66CC",
|
||||||
"9X c #0099FF",
|
"9X c #0099FF",
|
||||||
"0X c #3399FF",
|
"0X c #3399FF",
|
||||||
"qX c #6699FF",
|
"qX c #6699FF",
|
||||||
"wX c #9999FF",
|
"wX c #9999FF",
|
||||||
"eX c #CC99FF",
|
"eX c #CC99FF",
|
||||||
"rX c #FF99FF",
|
"rX c #FF99FF",
|
||||||
"tX c #00CCFF",
|
"tX c #00CCFF",
|
||||||
"yX c #33CCFF",
|
"yX c #33CCFF",
|
||||||
"uX c #66CCFF",
|
"uX c #66CCFF",
|
||||||
"iX c #99CCFF",
|
"iX c #99CCFF",
|
||||||
"pX c #CCCCFF",
|
"pX c #CCCCFF",
|
||||||
"aX c #FFCCFF",
|
"aX c #FFCCFF",
|
||||||
"sX c #33FFFF",
|
"sX c #33FFFF",
|
||||||
"dX c #66FFCC",
|
"dX c #66FFCC",
|
||||||
"fX c #99FFFF",
|
"fX c #99FFFF",
|
||||||
"gX c #CCFFFF",
|
"gX c #CCFFFF",
|
||||||
"hX c #FF6666",
|
"hX c #FF6666",
|
||||||
"jX c #66FF66",
|
"jX c #66FF66",
|
||||||
"kX c #FFFF66",
|
"kX c #FFFF66",
|
||||||
"lX c #6666FF",
|
"lX c #6666FF",
|
||||||
"zX c #FF66FF",
|
"zX c #FF66FF",
|
||||||
"xX c #66FFFF",
|
"xX c #66FFFF",
|
||||||
"cX c #A50021",
|
"cX c #A50021",
|
||||||
"vX c #5F5F5F",
|
"vX c #5F5F5F",
|
||||||
"bX c #777777",
|
"bX c #777777",
|
||||||
"nX c #868686",
|
"nX c #868686",
|
||||||
"mX c #969696",
|
"mX c #969696",
|
||||||
"MX c #CBCBCB",
|
"MX c #CBCBCB",
|
||||||
"NX c #B2B2B2",
|
"NX c #B2B2B2",
|
||||||
"BX c #D7D7D7",
|
"BX c #D7D7D7",
|
||||||
"VX c #DDDDDD",
|
"VX c #DDDDDD",
|
||||||
"CX c #E3E3E3",
|
"CX c #E3E3E3",
|
||||||
"ZX c #EAEAEA",
|
"ZX c #EAEAEA",
|
||||||
"AX c #F1F1F1",
|
"AX c #F1F1F1",
|
||||||
"SX c #F8F8F8",
|
"SX c #F8F8F8",
|
||||||
"DX c #FFFBF0",
|
"DX c #FFFBF0",
|
||||||
"FX c #A0A0A4",
|
"FX c #A0A0A4",
|
||||||
"GX c #808080",
|
"GX c #808080",
|
||||||
"HX c #FF0000",
|
"HX c #FF0000",
|
||||||
"JX c #00FF00",
|
"JX c #00FF00",
|
||||||
"KX c #FFFF00",
|
"KX c #FFFF00",
|
||||||
"LX c #0000FF",
|
"LX c #0000FF",
|
||||||
"PX c #FF00FF",
|
"PX c #FF00FF",
|
||||||
"IX c #00FFFF",
|
"IX c #00FFFF",
|
||||||
"UX c #FFFFFF",
|
"UX c #FFFFFF",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
"X X X X X X X k k X X X X X X X ",
|
"X X X X X X X k k X X X X X X X ",
|
||||||
"X X X X X X X k j k X X X X X X ",
|
"X X X X X X X k j k X X X X X X ",
|
||||||
"X X X X X X X k o j k X X X X X ",
|
"X X X X X X X k o j k X X X X X ",
|
||||||
"X X X X X X X k * o j k X X X X ",
|
"X X X X X X X k * o j k X X X X ",
|
||||||
"l k k k k k k k * * . j k X X X ",
|
"l k k k k k k k * * . j k X X X ",
|
||||||
"l @ @ @ @ @ @ @ 4 e e % j k X X ",
|
"l @ @ @ @ @ @ @ 4 e e % j k X X ",
|
||||||
"l O 3 8 e r r r r r r e ; j k X ",
|
"l O 3 8 e r r r r r r e ; j k X ",
|
||||||
"l @ e e r r r r r u p a f < j k ",
|
"l @ e e r r r r r u p a f < j k ",
|
||||||
"l @ r u p a a a a a f f w j k i ",
|
"l @ r u p a a a a a f f w j k i ",
|
||||||
"l O ; ; ; ; ; < a f b 0 j k t : ",
|
"l O ; ; ; ; ; < a f b 0 j k t : ",
|
||||||
"l k k k k k k k s j 7 j k q = X ",
|
"l k k k k k k k s j 7 j k q = X ",
|
||||||
"X $ = = = = = k g 7 j k 9 & X X ",
|
"X $ = = = = = k g 7 j k 9 & X X ",
|
||||||
"X X X X X X X k 2 j k 6 $ X X X ",
|
"X X X X X X X k 2 j k 6 $ X X X ",
|
||||||
"X X X X X X X k j k 5 + X X X X ",
|
"X X X X X X X k j k 5 + X X X X ",
|
||||||
"X X X X X X X k k 1 + X X X X X ",
|
"X X X X X X X k k 1 + X X X X X ",
|
||||||
"X X X X X X X = , X X X X X X X "
|
"X X X X X X X = , X X X X X X X "
|
||||||
};
|
};
|
||||||
|
|||||||
+278
-278
@@ -1,278 +1,278 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static const char * send16noshadow_xpm[] = {
|
static const char * send16noshadow_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"16 16 256 2",
|
"16 16 256 2",
|
||||||
" c #ADF7AD",
|
" c #ADF7AD",
|
||||||
". c #9CFF9C",
|
". c #9CFF9C",
|
||||||
"X c None",
|
"X c None",
|
||||||
"o c #ADEFAD",
|
"o c #ADEFAD",
|
||||||
"O c #94FF94",
|
"O c #94FF94",
|
||||||
"+ c #D6CECE",
|
"+ c #D6CECE",
|
||||||
"@ c #8CFF8C",
|
"@ c #8CFF8C",
|
||||||
"# c #CECECE",
|
"# c #CECECE",
|
||||||
"$ c #CECEC5",
|
"$ c #CECEC5",
|
||||||
"% c #84FF84",
|
"% c #84FF84",
|
||||||
"& c #CEC5C5",
|
"& c #CEC5C5",
|
||||||
"* c #73FF73",
|
"* c #73FF73",
|
||||||
"= c #C5C5C5",
|
"= c #C5C5C5",
|
||||||
"- c #6BFF6B",
|
"- c #6BFF6B",
|
||||||
"; c #73F773",
|
"; c #73F773",
|
||||||
": c #C5BDBD",
|
": c #C5BDBD",
|
||||||
"> c #6BF76B",
|
"> c #6BF76B",
|
||||||
", c #BDBDBD",
|
", c #BDBDBD",
|
||||||
"< c #63F763",
|
"< c #63F763",
|
||||||
"1 c #B5B5B5",
|
"1 c #B5B5B5",
|
||||||
"2 c #52F752",
|
"2 c #52F752",
|
||||||
"3 c #42FF42",
|
"3 c #42FF42",
|
||||||
"4 c #3AFF3A",
|
"4 c #3AFF3A",
|
||||||
"5 c #ADADAD",
|
"5 c #ADADAD",
|
||||||
"6 c #ADADA5",
|
"6 c #ADADA5",
|
||||||
"7 c #4AEF4A",
|
"7 c #4AEF4A",
|
||||||
"8 c #29FF29",
|
"8 c #29FF29",
|
||||||
"9 c #A5A5A5",
|
"9 c #A5A5A5",
|
||||||
"0 c #42E642",
|
"0 c #42E642",
|
||||||
"q c #9CA59C",
|
"q c #9CA59C",
|
||||||
"w c #3AE63A",
|
"w c #3AE63A",
|
||||||
"e c #10FF10",
|
"e c #10FF10",
|
||||||
"r c #08FF08",
|
"r c #08FF08",
|
||||||
"t c #949C94",
|
"t c #949C94",
|
||||||
"y c #00FF00",
|
"y c #00FF00",
|
||||||
"u c #00F700",
|
"u c #00F700",
|
||||||
"i c #8C948C",
|
"i c #8C948C",
|
||||||
"p c #00EF00",
|
"p c #00EF00",
|
||||||
"a c #08E608",
|
"a c #08E608",
|
||||||
"s c #10DE10",
|
"s c #10DE10",
|
||||||
"d c #00E600",
|
"d c #00E600",
|
||||||
"f c #00DE00",
|
"f c #00DE00",
|
||||||
"g c #19C519",
|
"g c #19C519",
|
||||||
"h c #00CE00",
|
"h c #00CE00",
|
||||||
"j c #00C500",
|
"j c #00C500",
|
||||||
"k c #008C00",
|
"k c #008C00",
|
||||||
"l c #008400",
|
"l c #008400",
|
||||||
"z c #669900",
|
"z c #669900",
|
||||||
"x c #999900",
|
"x c #999900",
|
||||||
"c c #CC9900",
|
"c c #CC9900",
|
||||||
"v c #FF9900",
|
"v c #FF9900",
|
||||||
"b c #00CC00",
|
"b c #00CC00",
|
||||||
"n c #33CC00",
|
"n c #33CC00",
|
||||||
"m c #66CC00",
|
"m c #66CC00",
|
||||||
"M c #99CC00",
|
"M c #99CC00",
|
||||||
"N c #CCCC00",
|
"N c #CCCC00",
|
||||||
"B c #FFCC00",
|
"B c #FFCC00",
|
||||||
"V c #66FF00",
|
"V c #66FF00",
|
||||||
"C c #99FF00",
|
"C c #99FF00",
|
||||||
"Z c #CCFF00",
|
"Z c #CCFF00",
|
||||||
"A c #000033",
|
"A c #000033",
|
||||||
"S c #330033",
|
"S c #330033",
|
||||||
"D c #660033",
|
"D c #660033",
|
||||||
"F c #990033",
|
"F c #990033",
|
||||||
"G c #CC0033",
|
"G c #CC0033",
|
||||||
"H c #FF0033",
|
"H c #FF0033",
|
||||||
"J c #003333",
|
"J c #003333",
|
||||||
"K c #333333",
|
"K c #333333",
|
||||||
"L c #663333",
|
"L c #663333",
|
||||||
"P c #993333",
|
"P c #993333",
|
||||||
"I c #CC3333",
|
"I c #CC3333",
|
||||||
"U c #FF3333",
|
"U c #FF3333",
|
||||||
"Y c #006633",
|
"Y c #006633",
|
||||||
"T c #336633",
|
"T c #336633",
|
||||||
"R c #666633",
|
"R c #666633",
|
||||||
"E c #996633",
|
"E c #996633",
|
||||||
"W c #CC6633",
|
"W c #CC6633",
|
||||||
"Q c #FF6633",
|
"Q c #FF6633",
|
||||||
"! c #009933",
|
"! c #009933",
|
||||||
"~ c #339933",
|
"~ c #339933",
|
||||||
"^ c #669933",
|
"^ c #669933",
|
||||||
"/ c #999933",
|
"/ c #999933",
|
||||||
"( c #CC9933",
|
"( c #CC9933",
|
||||||
") c #FF9933",
|
") c #FF9933",
|
||||||
"_ c #00CC33",
|
"_ c #00CC33",
|
||||||
"` c #33CC33",
|
"` c #33CC33",
|
||||||
"' c #66CC33",
|
"' c #66CC33",
|
||||||
"] c #99CC33",
|
"] c #99CC33",
|
||||||
"[ c #CCCC33",
|
"[ c #CCCC33",
|
||||||
"{ c #FFCC33",
|
"{ c #FFCC33",
|
||||||
"} c #33FF33",
|
"} c #33FF33",
|
||||||
"| c #66FF33",
|
"| c #66FF33",
|
||||||
" . c #99FF33",
|
" . c #99FF33",
|
||||||
".. c #CCFF33",
|
".. c #CCFF33",
|
||||||
"X. c #FFFF33",
|
"X. c #FFFF33",
|
||||||
"o. c #000066",
|
"o. c #000066",
|
||||||
"O. c #330066",
|
"O. c #330066",
|
||||||
"+. c #660066",
|
"+. c #660066",
|
||||||
"@. c #990066",
|
"@. c #990066",
|
||||||
"#. c #CC0066",
|
"#. c #CC0066",
|
||||||
"$. c #FF0066",
|
"$. c #FF0066",
|
||||||
"%. c #003366",
|
"%. c #003366",
|
||||||
"&. c #333366",
|
"&. c #333366",
|
||||||
"*. c #663366",
|
"*. c #663366",
|
||||||
"=. c #993366",
|
"=. c #993366",
|
||||||
"-. c #CC3366",
|
"-. c #CC3366",
|
||||||
";. c #FF3366",
|
";. c #FF3366",
|
||||||
":. c #006666",
|
":. c #006666",
|
||||||
">. c #336666",
|
">. c #336666",
|
||||||
",. c #666666",
|
",. c #666666",
|
||||||
"<. c #996666",
|
"<. c #996666",
|
||||||
"1. c #CC6666",
|
"1. c #CC6666",
|
||||||
"2. c #009966",
|
"2. c #009966",
|
||||||
"3. c #339966",
|
"3. c #339966",
|
||||||
"4. c #669966",
|
"4. c #669966",
|
||||||
"5. c #999966",
|
"5. c #999966",
|
||||||
"6. c #CC9966",
|
"6. c #CC9966",
|
||||||
"7. c #FF9966",
|
"7. c #FF9966",
|
||||||
"8. c #00CC66",
|
"8. c #00CC66",
|
||||||
"9. c #33CC66",
|
"9. c #33CC66",
|
||||||
"0. c #99CC66",
|
"0. c #99CC66",
|
||||||
"q. c #CCCC66",
|
"q. c #CCCC66",
|
||||||
"w. c #FFCC66",
|
"w. c #FFCC66",
|
||||||
"e. c #00FF66",
|
"e. c #00FF66",
|
||||||
"r. c #33FF66",
|
"r. c #33FF66",
|
||||||
"t. c #99FF66",
|
"t. c #99FF66",
|
||||||
"y. c #CCFF66",
|
"y. c #CCFF66",
|
||||||
"u. c #FF00CC",
|
"u. c #FF00CC",
|
||||||
"i. c #CC00FF",
|
"i. c #CC00FF",
|
||||||
"p. c #009999",
|
"p. c #009999",
|
||||||
"a. c #993399",
|
"a. c #993399",
|
||||||
"s. c #990099",
|
"s. c #990099",
|
||||||
"d. c #CC0099",
|
"d. c #CC0099",
|
||||||
"f. c #000099",
|
"f. c #000099",
|
||||||
"g. c #333399",
|
"g. c #333399",
|
||||||
"h. c #660099",
|
"h. c #660099",
|
||||||
"j. c #CC3399",
|
"j. c #CC3399",
|
||||||
"k. c #FF0099",
|
"k. c #FF0099",
|
||||||
"l. c #006699",
|
"l. c #006699",
|
||||||
"z. c #336699",
|
"z. c #336699",
|
||||||
"x. c #663399",
|
"x. c #663399",
|
||||||
"c. c #996699",
|
"c. c #996699",
|
||||||
"v. c #CC6699",
|
"v. c #CC6699",
|
||||||
"b. c #FF3399",
|
"b. c #FF3399",
|
||||||
"n. c #339999",
|
"n. c #339999",
|
||||||
"m. c #669999",
|
"m. c #669999",
|
||||||
"M. c #999999",
|
"M. c #999999",
|
||||||
"N. c #CC9999",
|
"N. c #CC9999",
|
||||||
"B. c #FF9999",
|
"B. c #FF9999",
|
||||||
"V. c #00CC99",
|
"V. c #00CC99",
|
||||||
"C. c #33CC99",
|
"C. c #33CC99",
|
||||||
"Z. c #66CC66",
|
"Z. c #66CC66",
|
||||||
"A. c #99CC99",
|
"A. c #99CC99",
|
||||||
"S. c #CCCC99",
|
"S. c #CCCC99",
|
||||||
"D. c #FFCC99",
|
"D. c #FFCC99",
|
||||||
"F. c #00FF99",
|
"F. c #00FF99",
|
||||||
"G. c #33FF99",
|
"G. c #33FF99",
|
||||||
"H. c #66CC99",
|
"H. c #66CC99",
|
||||||
"J. c #99FF99",
|
"J. c #99FF99",
|
||||||
"K. c #CCFF99",
|
"K. c #CCFF99",
|
||||||
"L. c #FFFF99",
|
"L. c #FFFF99",
|
||||||
"P. c #0000CC",
|
"P. c #0000CC",
|
||||||
"I. c #330099",
|
"I. c #330099",
|
||||||
"U. c #6600CC",
|
"U. c #6600CC",
|
||||||
"Y. c #9900CC",
|
"Y. c #9900CC",
|
||||||
"T. c #CC00CC",
|
"T. c #CC00CC",
|
||||||
"R. c #003399",
|
"R. c #003399",
|
||||||
"E. c #3333CC",
|
"E. c #3333CC",
|
||||||
"W. c #6633CC",
|
"W. c #6633CC",
|
||||||
"Q. c #9933CC",
|
"Q. c #9933CC",
|
||||||
"!. c #CC33CC",
|
"!. c #CC33CC",
|
||||||
"~. c #FF33CC",
|
"~. c #FF33CC",
|
||||||
"^. c #0066CC",
|
"^. c #0066CC",
|
||||||
"/. c #3366CC",
|
"/. c #3366CC",
|
||||||
"(. c #666699",
|
"(. c #666699",
|
||||||
"). c #9966CC",
|
"). c #9966CC",
|
||||||
"_. c #CC66CC",
|
"_. c #CC66CC",
|
||||||
"`. c #FF6699",
|
"`. c #FF6699",
|
||||||
"'. c #0099CC",
|
"'. c #0099CC",
|
||||||
"]. c #3399CC",
|
"]. c #3399CC",
|
||||||
"[. c #6699CC",
|
"[. c #6699CC",
|
||||||
"{. c #9999CC",
|
"{. c #9999CC",
|
||||||
"}. c #CC99CC",
|
"}. c #CC99CC",
|
||||||
"|. c #FF99CC",
|
"|. c #FF99CC",
|
||||||
" X c #00CCCC",
|
" X c #00CCCC",
|
||||||
".X c #33CCCC",
|
".X c #33CCCC",
|
||||||
"XX c #66CCCC",
|
"XX c #66CCCC",
|
||||||
"oX c #99CCCC",
|
"oX c #99CCCC",
|
||||||
"OX c #CCCCCC",
|
"OX c #CCCCCC",
|
||||||
"+X c #FFCCCC",
|
"+X c #FFCCCC",
|
||||||
"@X c #00FFCC",
|
"@X c #00FFCC",
|
||||||
"#X c #33FFCC",
|
"#X c #33FFCC",
|
||||||
"$X c #66FF99",
|
"$X c #66FF99",
|
||||||
"%X c #99FFCC",
|
"%X c #99FFCC",
|
||||||
"&X c #CCFFCC",
|
"&X c #CCFFCC",
|
||||||
"*X c #FFFFCC",
|
"*X c #FFFFCC",
|
||||||
"=X c #3300CC",
|
"=X c #3300CC",
|
||||||
"-X c #6600FF",
|
"-X c #6600FF",
|
||||||
";X c #9900FF",
|
";X c #9900FF",
|
||||||
":X c #0033CC",
|
":X c #0033CC",
|
||||||
">X c #3333FF",
|
">X c #3333FF",
|
||||||
",X c #6633FF",
|
",X c #6633FF",
|
||||||
"<X c #9933FF",
|
"<X c #9933FF",
|
||||||
"1X c #CC33FF",
|
"1X c #CC33FF",
|
||||||
"2X c #FF33FF",
|
"2X c #FF33FF",
|
||||||
"3X c #0066FF",
|
"3X c #0066FF",
|
||||||
"4X c #3366FF",
|
"4X c #3366FF",
|
||||||
"5X c #6666CC",
|
"5X c #6666CC",
|
||||||
"6X c #9966FF",
|
"6X c #9966FF",
|
||||||
"7X c #CC66FF",
|
"7X c #CC66FF",
|
||||||
"8X c #FF66CC",
|
"8X c #FF66CC",
|
||||||
"9X c #0099FF",
|
"9X c #0099FF",
|
||||||
"0X c #3399FF",
|
"0X c #3399FF",
|
||||||
"qX c #6699FF",
|
"qX c #6699FF",
|
||||||
"wX c #9999FF",
|
"wX c #9999FF",
|
||||||
"eX c #CC99FF",
|
"eX c #CC99FF",
|
||||||
"rX c #FF99FF",
|
"rX c #FF99FF",
|
||||||
"tX c #00CCFF",
|
"tX c #00CCFF",
|
||||||
"yX c #33CCFF",
|
"yX c #33CCFF",
|
||||||
"uX c #66CCFF",
|
"uX c #66CCFF",
|
||||||
"iX c #99CCFF",
|
"iX c #99CCFF",
|
||||||
"pX c #CCCCFF",
|
"pX c #CCCCFF",
|
||||||
"aX c #FFCCFF",
|
"aX c #FFCCFF",
|
||||||
"sX c #33FFFF",
|
"sX c #33FFFF",
|
||||||
"dX c #66FFCC",
|
"dX c #66FFCC",
|
||||||
"fX c #99FFFF",
|
"fX c #99FFFF",
|
||||||
"gX c #CCFFFF",
|
"gX c #CCFFFF",
|
||||||
"hX c #FF6666",
|
"hX c #FF6666",
|
||||||
"jX c #66FF66",
|
"jX c #66FF66",
|
||||||
"kX c #FFFF66",
|
"kX c #FFFF66",
|
||||||
"lX c #6666FF",
|
"lX c #6666FF",
|
||||||
"zX c #FF66FF",
|
"zX c #FF66FF",
|
||||||
"xX c #66FFFF",
|
"xX c #66FFFF",
|
||||||
"cX c #A50021",
|
"cX c #A50021",
|
||||||
"vX c #5F5F5F",
|
"vX c #5F5F5F",
|
||||||
"bX c #777777",
|
"bX c #777777",
|
||||||
"nX c #868686",
|
"nX c #868686",
|
||||||
"mX c #969696",
|
"mX c #969696",
|
||||||
"MX c #CBCBCB",
|
"MX c #CBCBCB",
|
||||||
"NX c #B2B2B2",
|
"NX c #B2B2B2",
|
||||||
"BX c #D7D7D7",
|
"BX c #D7D7D7",
|
||||||
"VX c #DDDDDD",
|
"VX c #DDDDDD",
|
||||||
"CX c #E3E3E3",
|
"CX c #E3E3E3",
|
||||||
"ZX c #EAEAEA",
|
"ZX c #EAEAEA",
|
||||||
"AX c #F1F1F1",
|
"AX c #F1F1F1",
|
||||||
"SX c #F8F8F8",
|
"SX c #F8F8F8",
|
||||||
"DX c #FFFBF0",
|
"DX c #FFFBF0",
|
||||||
"FX c #A0A0A4",
|
"FX c #A0A0A4",
|
||||||
"GX c #808080",
|
"GX c #808080",
|
||||||
"HX c #FF0000",
|
"HX c #FF0000",
|
||||||
"JX c #00FF00",
|
"JX c #00FF00",
|
||||||
"KX c #FFFF00",
|
"KX c #FFFF00",
|
||||||
"LX c #0000FF",
|
"LX c #0000FF",
|
||||||
"PX c #FF00FF",
|
"PX c #FF00FF",
|
||||||
"IX c #00FFFF",
|
"IX c #00FFFF",
|
||||||
"UX c #FFFFFF",
|
"UX c #FFFFFF",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
"X X X X X X X k k X X X X X X X ",
|
"X X X X X X X k k X X X X X X X ",
|
||||||
"X X X X X X X k j k X X X X X X ",
|
"X X X X X X X k j k X X X X X X ",
|
||||||
"X X X X X X X k o j k X X X X X ",
|
"X X X X X X X k o j k X X X X X ",
|
||||||
"X X X X X X X k * o j k X X X X ",
|
"X X X X X X X k * o j k X X X X ",
|
||||||
"l k k k k k k k * * . j k X X X ",
|
"l k k k k k k k * * . j k X X X ",
|
||||||
"l @ @ @ @ @ @ @ 4 e e % j k X X ",
|
"l @ @ @ @ @ @ @ 4 e e % j k X X ",
|
||||||
"l O 3 8 e r r r r r r e ; j k X ",
|
"l O 3 8 e r r r r r r e ; j k X ",
|
||||||
"l @ e e r r r r r u p a f < j k ",
|
"l @ e e r r r r r u p a f < j k ",
|
||||||
"l @ r u p a a a a a f f w j k X ",
|
"l @ r u p a a a a a f f w j k X ",
|
||||||
"l O ; ; ; ; ; < a f b 0 j k X X ",
|
"l O ; ; ; ; ; < a f b 0 j k X X ",
|
||||||
"l k k k k k k k s j 7 j k X X X ",
|
"l k k k k k k k s j 7 j k X X X ",
|
||||||
"X X X X X X X k g 7 j k X X X X ",
|
"X X X X X X X k g 7 j k X X X X ",
|
||||||
"X X X X X X X k 2 j k X X X X X ",
|
"X X X X X X X k 2 j k X X X X X ",
|
||||||
"X X X X X X X k j k X X X X X X ",
|
"X X X X X X X k j k X X X X X X ",
|
||||||
"X X X X X X X k k X X X X X X X ",
|
"X X X X X X X k k X X X X X X X ",
|
||||||
"X X X X X X X X X X X X X X X X "
|
"X X X X X X X X X X X X X X X X "
|
||||||
};
|
};
|
||||||
|
|||||||
+282
-282
@@ -1,282 +1,282 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static const char * send20_xpm[] = {
|
static const char * send20_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"20 20 256 2",
|
"20 20 256 2",
|
||||||
" c #CEFFCE",
|
" c #CEFFCE",
|
||||||
". c #BDFFBD",
|
". c #BDFFBD",
|
||||||
"X c #C5F7C5",
|
"X c #C5F7C5",
|
||||||
"o c #B5FFB5",
|
"o c #B5FFB5",
|
||||||
"O c #ADFFAD",
|
"O c #ADFFAD",
|
||||||
"+ c #A5FFA5",
|
"+ c #A5FFA5",
|
||||||
"@ c #9CFF9C",
|
"@ c #9CFF9C",
|
||||||
"# c None",
|
"# c None",
|
||||||
"$ c #94FF94",
|
"$ c #94FF94",
|
||||||
"% c #D6CECE",
|
"% c #D6CECE",
|
||||||
"& c #8CFF8C",
|
"& c #8CFF8C",
|
||||||
"* c #CECEC5",
|
"* c #CECEC5",
|
||||||
"= c #84FF84",
|
"= c #84FF84",
|
||||||
"- c #94EF94",
|
"- c #94EF94",
|
||||||
"; c #7BFF7B",
|
"; c #7BFF7B",
|
||||||
": c #CEC5C5",
|
": c #CEC5C5",
|
||||||
"> c #73FF73",
|
"> c #73FF73",
|
||||||
", c #C5C5C5",
|
", c #C5C5C5",
|
||||||
"< c #C5C5BD",
|
"< c #C5C5BD",
|
||||||
"1 c #6BFF6B",
|
"1 c #6BFF6B",
|
||||||
"2 c #BDC5B5",
|
"2 c #BDC5B5",
|
||||||
"3 c #63FF63",
|
"3 c #63FF63",
|
||||||
"4 c #6BF76B",
|
"4 c #6BF76B",
|
||||||
"5 c #BDBDBD",
|
"5 c #BDBDBD",
|
||||||
"6 c #BDBDB5",
|
"6 c #BDBDB5",
|
||||||
"7 c #5AFF5A",
|
"7 c #5AFF5A",
|
||||||
"8 c #63F763",
|
"8 c #63F763",
|
||||||
"9 c #B5BDB5",
|
"9 c #B5BDB5",
|
||||||
"0 c #B5BDAD",
|
"0 c #B5BDAD",
|
||||||
"q c #52FF52",
|
"q c #52FF52",
|
||||||
"w c #BDB5B5",
|
"w c #BDB5B5",
|
||||||
"e c #5AF75A",
|
"e c #5AF75A",
|
||||||
"r c #B5B5B5",
|
"r c #B5B5B5",
|
||||||
"t c #B5B5AD",
|
"t c #B5B5AD",
|
||||||
"y c #52F752",
|
"y c #52F752",
|
||||||
"u c #42FF42",
|
"u c #42FF42",
|
||||||
"i c #52EF52",
|
"i c #52EF52",
|
||||||
"p c #ADADAD",
|
"p c #ADADAD",
|
||||||
"a c #ADADA5",
|
"a c #ADADA5",
|
||||||
"s c #4AEF4A",
|
"s c #4AEF4A",
|
||||||
"d c #31FF31",
|
"d c #31FF31",
|
||||||
"f c #29FF29",
|
"f c #29FF29",
|
||||||
"g c #A5A5A5",
|
"g c #A5A5A5",
|
||||||
"h c #21FF21",
|
"h c #21FF21",
|
||||||
"j c #5AD65A",
|
"j c #5AD65A",
|
||||||
"k c #42E642",
|
"k c #42E642",
|
||||||
"l c #94AD94",
|
"l c #94AD94",
|
||||||
"z c #4ADE4A",
|
"z c #4ADE4A",
|
||||||
"x c #3AE63A",
|
"x c #3AE63A",
|
||||||
"c c #5ACE5A",
|
"c c #5ACE5A",
|
||||||
"v c #10FF10",
|
"v c #10FF10",
|
||||||
"b c #9C9C9C",
|
"b c #9C9C9C",
|
||||||
"n c #31E631",
|
"n c #31E631",
|
||||||
"m c #08FF08",
|
"m c #08FF08",
|
||||||
"M c #949C94",
|
"M c #949C94",
|
||||||
"N c #84A584",
|
"N c #84A584",
|
||||||
"B c #00FF00",
|
"B c #00FF00",
|
||||||
"V c #3AD63A",
|
"V c #3AD63A",
|
||||||
"C c #52C552",
|
"C c #52C552",
|
||||||
"Z c #00F700",
|
"Z c #00F700",
|
||||||
"A c #8C948C",
|
"A c #8C948C",
|
||||||
"S c #849484",
|
"S c #849484",
|
||||||
"D c #00EF00",
|
"D c #00EF00",
|
||||||
"F c #739C73",
|
"F c #739C73",
|
||||||
"G c #08E608",
|
"G c #08E608",
|
||||||
"H c #4AB54A",
|
"H c #4AB54A",
|
||||||
"J c #31C531",
|
"J c #31C531",
|
||||||
"K c #00E600",
|
"K c #00E600",
|
||||||
"L c #739473",
|
"L c #739473",
|
||||||
"P c #00DE00",
|
"P c #00DE00",
|
||||||
"I c #63945A",
|
"I c #63945A",
|
||||||
"U c #6B8C6B",
|
"U c #6B8C6B",
|
||||||
"Y c #00D600",
|
"Y c #00D600",
|
||||||
"T c #42A542",
|
"T c #42A542",
|
||||||
"R c #638C63",
|
"R c #638C63",
|
||||||
"E c #00CE00",
|
"E c #00CE00",
|
||||||
"W c #21B521",
|
"W c #21B521",
|
||||||
"Q c #5A8C5A",
|
"Q c #5A8C5A",
|
||||||
"! c #00C500",
|
"! c #00C500",
|
||||||
"~ c #528C52",
|
"~ c #528C52",
|
||||||
"^ c #3A9C3A",
|
"^ c #3A9C3A",
|
||||||
"/ c #4A8C4A",
|
"/ c #4A8C4A",
|
||||||
"( c #00BD00",
|
"( c #00BD00",
|
||||||
") c #319431",
|
") c #319431",
|
||||||
"_ c #219C21",
|
"_ c #219C21",
|
||||||
"` c #318C31",
|
"` c #318C31",
|
||||||
"' c #3A843A",
|
"' c #3A843A",
|
||||||
"] c #219421",
|
"] c #219421",
|
||||||
"[ c #298C29",
|
"[ c #298C29",
|
||||||
"{ c #318431",
|
"{ c #318431",
|
||||||
"} c #218C21",
|
"} c #218C21",
|
||||||
"| c #218C19",
|
"| c #218C19",
|
||||||
" . c #198C19",
|
" . c #198C19",
|
||||||
".. c #218421",
|
".. c #218421",
|
||||||
"X. c #297B29",
|
"X. c #297B29",
|
||||||
"o. c #198419",
|
"o. c #198419",
|
||||||
"O. c #217B21",
|
"O. c #217B21",
|
||||||
"+. c #108410",
|
"+. c #108410",
|
||||||
"@. c #197B19",
|
"@. c #197B19",
|
||||||
"#. c #CC0066",
|
"#. c #CC0066",
|
||||||
"$. c #FF0066",
|
"$. c #FF0066",
|
||||||
"%. c #003366",
|
"%. c #003366",
|
||||||
"&. c #333366",
|
"&. c #333366",
|
||||||
"*. c #663366",
|
"*. c #663366",
|
||||||
"=. c #993366",
|
"=. c #993366",
|
||||||
"-. c #CC3366",
|
"-. c #CC3366",
|
||||||
";. c #FF3366",
|
";. c #FF3366",
|
||||||
":. c #006666",
|
":. c #006666",
|
||||||
">. c #336666",
|
">. c #336666",
|
||||||
",. c #666666",
|
",. c #666666",
|
||||||
"<. c #996666",
|
"<. c #996666",
|
||||||
"1. c #CC6666",
|
"1. c #CC6666",
|
||||||
"2. c #009966",
|
"2. c #009966",
|
||||||
"3. c #339966",
|
"3. c #339966",
|
||||||
"4. c #669966",
|
"4. c #669966",
|
||||||
"5. c #999966",
|
"5. c #999966",
|
||||||
"6. c #CC9966",
|
"6. c #CC9966",
|
||||||
"7. c #FF9966",
|
"7. c #FF9966",
|
||||||
"8. c #00CC66",
|
"8. c #00CC66",
|
||||||
"9. c #33CC66",
|
"9. c #33CC66",
|
||||||
"0. c #99CC66",
|
"0. c #99CC66",
|
||||||
"q. c #CCCC66",
|
"q. c #CCCC66",
|
||||||
"w. c #FFCC66",
|
"w. c #FFCC66",
|
||||||
"e. c #00FF66",
|
"e. c #00FF66",
|
||||||
"r. c #33FF66",
|
"r. c #33FF66",
|
||||||
"t. c #99FF66",
|
"t. c #99FF66",
|
||||||
"y. c #CCFF66",
|
"y. c #CCFF66",
|
||||||
"u. c #FF00CC",
|
"u. c #FF00CC",
|
||||||
"i. c #CC00FF",
|
"i. c #CC00FF",
|
||||||
"p. c #009999",
|
"p. c #009999",
|
||||||
"a. c #993399",
|
"a. c #993399",
|
||||||
"s. c #990099",
|
"s. c #990099",
|
||||||
"d. c #CC0099",
|
"d. c #CC0099",
|
||||||
"f. c #000099",
|
"f. c #000099",
|
||||||
"g. c #333399",
|
"g. c #333399",
|
||||||
"h. c #660099",
|
"h. c #660099",
|
||||||
"j. c #CC3399",
|
"j. c #CC3399",
|
||||||
"k. c #FF0099",
|
"k. c #FF0099",
|
||||||
"l. c #006699",
|
"l. c #006699",
|
||||||
"z. c #336699",
|
"z. c #336699",
|
||||||
"x. c #663399",
|
"x. c #663399",
|
||||||
"c. c #996699",
|
"c. c #996699",
|
||||||
"v. c #CC6699",
|
"v. c #CC6699",
|
||||||
"b. c #FF3399",
|
"b. c #FF3399",
|
||||||
"n. c #339999",
|
"n. c #339999",
|
||||||
"m. c #669999",
|
"m. c #669999",
|
||||||
"M. c #999999",
|
"M. c #999999",
|
||||||
"N. c #CC9999",
|
"N. c #CC9999",
|
||||||
"B. c #FF9999",
|
"B. c #FF9999",
|
||||||
"V. c #00CC99",
|
"V. c #00CC99",
|
||||||
"C. c #33CC99",
|
"C. c #33CC99",
|
||||||
"Z. c #66CC66",
|
"Z. c #66CC66",
|
||||||
"A. c #99CC99",
|
"A. c #99CC99",
|
||||||
"S. c #CCCC99",
|
"S. c #CCCC99",
|
||||||
"D. c #FFCC99",
|
"D. c #FFCC99",
|
||||||
"F. c #00FF99",
|
"F. c #00FF99",
|
||||||
"G. c #33FF99",
|
"G. c #33FF99",
|
||||||
"H. c #66CC99",
|
"H. c #66CC99",
|
||||||
"J. c #99FF99",
|
"J. c #99FF99",
|
||||||
"K. c #CCFF99",
|
"K. c #CCFF99",
|
||||||
"L. c #FFFF99",
|
"L. c #FFFF99",
|
||||||
"P. c #0000CC",
|
"P. c #0000CC",
|
||||||
"I. c #330099",
|
"I. c #330099",
|
||||||
"U. c #6600CC",
|
"U. c #6600CC",
|
||||||
"Y. c #9900CC",
|
"Y. c #9900CC",
|
||||||
"T. c #CC00CC",
|
"T. c #CC00CC",
|
||||||
"R. c #003399",
|
"R. c #003399",
|
||||||
"E. c #3333CC",
|
"E. c #3333CC",
|
||||||
"W. c #6633CC",
|
"W. c #6633CC",
|
||||||
"Q. c #9933CC",
|
"Q. c #9933CC",
|
||||||
"!. c #CC33CC",
|
"!. c #CC33CC",
|
||||||
"~. c #FF33CC",
|
"~. c #FF33CC",
|
||||||
"^. c #0066CC",
|
"^. c #0066CC",
|
||||||
"/. c #3366CC",
|
"/. c #3366CC",
|
||||||
"(. c #666699",
|
"(. c #666699",
|
||||||
"). c #9966CC",
|
"). c #9966CC",
|
||||||
"_. c #CC66CC",
|
"_. c #CC66CC",
|
||||||
"`. c #FF6699",
|
"`. c #FF6699",
|
||||||
"'. c #0099CC",
|
"'. c #0099CC",
|
||||||
"]. c #3399CC",
|
"]. c #3399CC",
|
||||||
"[. c #6699CC",
|
"[. c #6699CC",
|
||||||
"{. c #9999CC",
|
"{. c #9999CC",
|
||||||
"}. c #CC99CC",
|
"}. c #CC99CC",
|
||||||
"|. c #FF99CC",
|
"|. c #FF99CC",
|
||||||
" X c #00CCCC",
|
" X c #00CCCC",
|
||||||
".X c #33CCCC",
|
".X c #33CCCC",
|
||||||
"XX c #66CCCC",
|
"XX c #66CCCC",
|
||||||
"oX c #99CCCC",
|
"oX c #99CCCC",
|
||||||
"OX c #CCCCCC",
|
"OX c #CCCCCC",
|
||||||
"+X c #FFCCCC",
|
"+X c #FFCCCC",
|
||||||
"@X c #00FFCC",
|
"@X c #00FFCC",
|
||||||
"#X c #33FFCC",
|
"#X c #33FFCC",
|
||||||
"$X c #66FF99",
|
"$X c #66FF99",
|
||||||
"%X c #99FFCC",
|
"%X c #99FFCC",
|
||||||
"&X c #CCFFCC",
|
"&X c #CCFFCC",
|
||||||
"*X c #FFFFCC",
|
"*X c #FFFFCC",
|
||||||
"=X c #3300CC",
|
"=X c #3300CC",
|
||||||
"-X c #6600FF",
|
"-X c #6600FF",
|
||||||
";X c #9900FF",
|
";X c #9900FF",
|
||||||
":X c #0033CC",
|
":X c #0033CC",
|
||||||
">X c #3333FF",
|
">X c #3333FF",
|
||||||
",X c #6633FF",
|
",X c #6633FF",
|
||||||
"<X c #9933FF",
|
"<X c #9933FF",
|
||||||
"1X c #CC33FF",
|
"1X c #CC33FF",
|
||||||
"2X c #FF33FF",
|
"2X c #FF33FF",
|
||||||
"3X c #0066FF",
|
"3X c #0066FF",
|
||||||
"4X c #3366FF",
|
"4X c #3366FF",
|
||||||
"5X c #6666CC",
|
"5X c #6666CC",
|
||||||
"6X c #9966FF",
|
"6X c #9966FF",
|
||||||
"7X c #CC66FF",
|
"7X c #CC66FF",
|
||||||
"8X c #FF66CC",
|
"8X c #FF66CC",
|
||||||
"9X c #0099FF",
|
"9X c #0099FF",
|
||||||
"0X c #3399FF",
|
"0X c #3399FF",
|
||||||
"qX c #6699FF",
|
"qX c #6699FF",
|
||||||
"wX c #9999FF",
|
"wX c #9999FF",
|
||||||
"eX c #CC99FF",
|
"eX c #CC99FF",
|
||||||
"rX c #FF99FF",
|
"rX c #FF99FF",
|
||||||
"tX c #00CCFF",
|
"tX c #00CCFF",
|
||||||
"yX c #33CCFF",
|
"yX c #33CCFF",
|
||||||
"uX c #66CCFF",
|
"uX c #66CCFF",
|
||||||
"iX c #99CCFF",
|
"iX c #99CCFF",
|
||||||
"pX c #CCCCFF",
|
"pX c #CCCCFF",
|
||||||
"aX c #FFCCFF",
|
"aX c #FFCCFF",
|
||||||
"sX c #33FFFF",
|
"sX c #33FFFF",
|
||||||
"dX c #66FFCC",
|
"dX c #66FFCC",
|
||||||
"fX c #99FFFF",
|
"fX c #99FFFF",
|
||||||
"gX c #CCFFFF",
|
"gX c #CCFFFF",
|
||||||
"hX c #FF6666",
|
"hX c #FF6666",
|
||||||
"jX c #66FF66",
|
"jX c #66FF66",
|
||||||
"kX c #FFFF66",
|
"kX c #FFFF66",
|
||||||
"lX c #6666FF",
|
"lX c #6666FF",
|
||||||
"zX c #FF66FF",
|
"zX c #FF66FF",
|
||||||
"xX c #66FFFF",
|
"xX c #66FFFF",
|
||||||
"cX c #A50021",
|
"cX c #A50021",
|
||||||
"vX c #5F5F5F",
|
"vX c #5F5F5F",
|
||||||
"bX c #777777",
|
"bX c #777777",
|
||||||
"nX c #868686",
|
"nX c #868686",
|
||||||
"mX c #969696",
|
"mX c #969696",
|
||||||
"MX c #CBCBCB",
|
"MX c #CBCBCB",
|
||||||
"NX c #B2B2B2",
|
"NX c #B2B2B2",
|
||||||
"BX c #D7D7D7",
|
"BX c #D7D7D7",
|
||||||
"VX c #DDDDDD",
|
"VX c #DDDDDD",
|
||||||
"CX c #E3E3E3",
|
"CX c #E3E3E3",
|
||||||
"ZX c #EAEAEA",
|
"ZX c #EAEAEA",
|
||||||
"AX c #F1F1F1",
|
"AX c #F1F1F1",
|
||||||
"SX c #F8F8F8",
|
"SX c #F8F8F8",
|
||||||
"DX c #FFFBF0",
|
"DX c #FFFBF0",
|
||||||
"FX c #A0A0A4",
|
"FX c #A0A0A4",
|
||||||
"GX c #808080",
|
"GX c #808080",
|
||||||
"HX c #FF0000",
|
"HX c #FF0000",
|
||||||
"JX c #00FF00",
|
"JX c #00FF00",
|
||||||
"KX c #FFFF00",
|
"KX c #FFFF00",
|
||||||
"LX c #0000FF",
|
"LX c #0000FF",
|
||||||
"PX c #FF00FF",
|
"PX c #FF00FF",
|
||||||
"IX c #00FFFF",
|
"IX c #00FFFF",
|
||||||
"UX c #FFFFFF",
|
"UX c #FFFFFF",
|
||||||
/* pixels */
|
/* pixels */
|
||||||
"# # # # # # # # # # # # # # # # # # # # ",
|
"# # # # # # # # # # # # # # # # # # # # ",
|
||||||
"# # # # # # # ` 0 # # # # # # # # # # # ",
|
"# # # # # # # ` 0 # # # # # # # # # # # ",
|
||||||
"# # # # # # # ..` l # # # # # # # # # # ",
|
"# # # # # # # ..` l # # # # # # # # # # ",
|
||||||
"# # # # # # # [ X ) N # # # # # # # # # ",
|
"# # # # # # # [ X ) N # # # # # # # # # ",
|
||||||
"# # # # # # # [ &X. ^ F # # # # # # # # ",
|
"# # # # # # # [ &X. ^ F # # # # # # # # ",
|
||||||
"# # # # # # # } o & o T I : # # # # # # ",
|
"# # # # # # # } o & o T I : # # # # # # ",
|
||||||
"` ` ` ` ` ` ` ` + 7 ; + H ~ < # # # # # ",
|
"` ` ` ` ` ` ` ` + 7 ; + H ~ < # # # # # ",
|
||||||
"` = = = = = = - @ d v h $ C ' 5 # # # # ",
|
"` = = = = = = - @ d v h $ C ' 5 # # # # ",
|
||||||
"` = = 3 u h v v v m m m v ; c { 6 # # # ",
|
"` = = 3 u h v v v m m m v ; c { 6 # # # ",
|
||||||
"` = f v v m m m m m m Z G G 4 j ..t # # ",
|
"` = f v v m m m m m m Z G G 4 j ..t # # ",
|
||||||
"` = v m m m Z Z D D G G G P n ; _ R 5 # ",
|
"` = v m m m Z Z D D G G G P n ; _ R 5 # ",
|
||||||
"` = m Z G G G G G G G P Y x 4 _ Q g # # ",
|
"` = m Z G G G G G G G P Y x 4 _ Q g # # ",
|
||||||
"` = $ $ $ $ $ & e P P E k 8 .U g # # # ",
|
"` = $ $ $ $ $ & e P P E k 8 .U g # # # ",
|
||||||
"..[ ......[ [ ] e Y ! s i o.L p # # # # ",
|
"..[ ......[ [ ] e Y ! s i o.L p # # # # ",
|
||||||
"# # 5 6 6 6 9 ..i ( i z o.S t # # # # # ",
|
"# # 5 6 6 6 9 ..i ( i z o.S t # # # # # ",
|
||||||
"# # # # # # # } i i V O.A r # # # # # # ",
|
"# # # # # # # } i i V O.A r # # # # # # ",
|
||||||
"# # # # # # # } 7 J X.M 6 # # # # # # # ",
|
"# # # # # # # } 7 J X.M 6 # # # # # # # ",
|
||||||
"# # # # # # # | W ' b < # # # # # # # # ",
|
"# # # # # # # | W ' b < # # # # # # # # ",
|
||||||
"# # # # # # # @.~ g , # # # # # # # # # ",
|
"# # # # # # # @.~ g , # # # # # # # # # ",
|
||||||
"# # # # # # # 6 < , # # # # # # # # # # "
|
"# # # # # # # 6 < , # # # # # # # # # # "
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user