diff options
67 files changed, 873 insertions, 57 deletions
diff --git a/Makefile.am b/Makefile.am index 4f623f6c64..e26627f3e3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,6 +15,7 @@ OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed +OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md) @@ -24,7 +25,8 @@ WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \ $(top_srcdir)/doc/README_windows.txt OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \ - $(top_srcdir)/contrib/macdeploy/background.png + $(top_srcdir)/contrib/macdeploy/background.png \ + $(top_srcdir)/contrib/macdeploy/DS_Store COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \ leveldb_baseline.info test_bitcoin_filtered.info total_coverage.info \ @@ -45,9 +47,9 @@ distcleancheck: $(BITCOIN_WIN_INSTALLER): $(BITCOIND_BIN) $(BITCOIN_QT_BIN) $(BITCOIN_CLI_BIN) $(MKDIR_P) $(top_builddir)/release - $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release - $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release - $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release @test -f $(MAKENSIS) && $(MAKENSIS) $(top_builddir)/share/setup.nsi || \ echo error: could not build $@ @@ -72,15 +74,25 @@ $(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS) $(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN) $(MKDIR_P) $(@D) - $(INSTALL_STRIP_PROGRAM) $< $@ + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@ OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \ $(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \ $(OSX_APP)/Contents/MacOS/Bitcoin-Qt +if BUILD_DARWIN $(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) - $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr da,de,es,hu,ru,uk,zh_CN,zh_TW -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 + $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 +else +$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) + INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2 + $(MKDIR_P) dist/.background + $(INSTALL) contrib/macdeploy/background.png dist/.background + $(INSTALL) contrib/macdeploy/DS_Store dist/.DS_Store + cd dist; $(LN_S) /Applications Applications + $(GENISOIMAGE) -no-cache-inodes -l -probe -V "Bitcoin-Qt" -no-pad -r -apple -o $@ dist +endif if TARGET_DARWIN appbundle: $(OSX_APP_BUILT) diff --git a/configure.ac b/configure.ac index 7ce5f683ee..45cd023bb1 100644 --- a/configure.ac +++ b/configure.ac @@ -121,6 +121,7 @@ AC_PROG_CPP AC_PROG_CXXCPP AC_PROG_INSTALL AC_PROG_OBJC +AC_PROG_LN_S m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX]) AC_PROG_MKDIR_P AC_PROG_SED @@ -222,6 +223,7 @@ case $host in TARGET_OS=darwin LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin" if test x$cross_compiling != xyes; then + BUILD_OS=darwin AC_CHECK_PROG([PORT],port, port) if test x$PORT = xport; then dnl add default macports paths @@ -238,6 +240,17 @@ case $host in CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include" LIBS="$LIBS -L$bdb_prefix/lib" fi + else + case $build_os in + *darwin*) + BUILD_OS=darwin + ;; + *) + AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool) + AC_PATH_TOOL([OTOOL], [otool], otool) + AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage) + ;; + esac fi CPPFLAGS="$CPPFLAGS -DMAC_OSX" @@ -671,6 +684,7 @@ if test "x$use_tests$build_bitcoind$use_qt" = "xnonono"; then fi AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin]) +AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin]) AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows]) AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet == xyes]) AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes]) diff --git a/contrib/macdeploy/DS_Store b/contrib/macdeploy/DS_Store Binary files differnew file mode 100644 index 0000000000..b9a1e14864 --- /dev/null +++ b/contrib/macdeploy/DS_Store diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus index 533be6cffa..5c310df1fc 100755 --- a/contrib/macdeploy/macdeployqtplus +++ b/contrib/macdeploy/macdeployqtplus @@ -196,7 +196,8 @@ class DeploymentInfo(object): def getFrameworks(binaryPath, verbose): if verbose >= 3: print "Inspecting with otool: " + binaryPath - otool = subprocess.Popen(["otool", "-L", binaryPath], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + otoolbin=os.getenv("OTOOL", "otool") + otool = subprocess.Popen([otoolbin, "-L", binaryPath], stdout=subprocess.PIPE, stderr=subprocess.PIPE) o_stdout, o_stderr = otool.communicate() if otool.returncode != 0: if verbose >= 1: @@ -221,7 +222,8 @@ def getFrameworks(binaryPath, verbose): return libraries def runInstallNameTool(action, *args): - subprocess.check_call(["install_name_tool", "-"+action] + list(args)) + installnametoolbin=os.getenv("INSTALLNAMETOOL", "install_name_tool") + subprocess.check_call([installnametoolbin, "-"+action] + list(args)) def changeInstallName(oldName, newName, binaryPath, verbose): if verbose >= 3: @@ -239,10 +241,11 @@ def changeIdentification(id, binaryPath, verbose): runInstallNameTool("id", id, binaryPath) def runStrip(binaryPath, verbose): + stripbin=os.getenv("STRIP", "strip") if verbose >= 3: print "Using strip:" print " stripped", binaryPath - subprocess.check_call(["strip", "-x", binaryPath]) + subprocess.check_call([stripbin, "-x", binaryPath]) def copyFramework(framework, path, verbose): if framework.sourceFilePath.startswith("Qt"): @@ -347,6 +350,8 @@ def deployFrameworksForAppBundle(applicationBundle, strip, verbose): def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): # Lookup available plugins, exclude unneeded plugins = [] + if deploymentInfo.pluginPath is None: + return for dirpath, dirnames, filenames in os.walk(deploymentInfo.pluginPath): pluginDirectory = os.path.relpath(dirpath, deploymentInfo.pluginPath) if pluginDirectory == "designer": @@ -421,8 +426,8 @@ def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): deployFrameworks([dependency], appBundleInfo.path, destinationPath, strip, verbose, deploymentInfo) qt_conf="""[Paths] -translations=Resources -plugins=PlugIns +Translations=Resources +Plugins=PlugIns """ ap = ArgumentParser(description="""Improved version of macdeployqt. diff --git a/doc/README.md b/doc/README.md index 148db94214..9a7d101185 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,4 +1,4 @@ -Bitcoin 0.9.0rc1 BETA +Bitcoin 0.9.0 BETA ===================== Copyright (c) 2009-2014 Bitcoin Developers diff --git a/doc/build-unix.md b/doc/build-unix.md index 341b17b543..31159d44b1 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -108,15 +108,15 @@ To build without GUI pass `--without-gui`. To build with Qt 4 you need the following: - apt-get install libqt4-dev libprotobuf-dev protobuf-compiler + sudo apt-get install libqt4-dev libprotobuf-dev protobuf-compiler For Qt 5 you need the following: - apt-get install libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev + sudo apt-get install libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev libqrencode (optional) can be installed with: - apt-get install libqrencode-dev + sudo apt-get install libqrencode-dev Once these are installed, they will be found by configure and a bitcoin-qt executable will be built by default. diff --git a/doc/release-notes/release-notes-0.9.0.md b/doc/release-notes/release-notes-0.9.0.md new file mode 100644 index 0000000000..170410ca40 --- /dev/null +++ b/doc/release-notes/release-notes-0.9.0.md @@ -0,0 +1,411 @@ +Bitcoin Core version 0.9.0 is now available from: + + https://bitcoin.org/bin/0.9.0/ + +This is a new major version release, bringing both new features and +bug fixes. + +Please report bugs using the issue tracker at github: + + https://github.com/bitcoin/bitcoin/issues + +How to Upgrade +-------------- + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes for older versions), uninstall all +earlier versions of Bitcoin, then run the installer (on Windows) or just copy +over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux). + +If you are upgrading from version 0.7.2 or earlier, the first time you run +0.9.0 your blockchain files will be re-indexed, which will take anywhere from +30 minutes to several hours, depending on the speed of your machine. + +On Windows, do not forget to uninstall all earlier versions of the Bitcoin +client first, especially if you are switching to the 64-bit version. + +Windows 64-bit installer +------------------------- + +New in 0.9.0 is the Windows 64-bit version of the client. There have been +frequent reports of users running out of virtual memory on 32-bit systems +during the initial sync. Because of this it is recommended to install the +64-bit version if your system supports it. + +NOTE: Release candidate 2 Windows binaries are not code-signed; use PGP +and the SHA256SUMS.asc file to make sure your binaries are correct. +In the final 0.9.0 release, Windows setup.exe binaries will be code-signed. + +OSX 10.5 / 32-bit no longer supported +------------------------------------- + +0.9.0 drops support for older Macs. The minimum requirements are now: +* A 64-bit-capable CPU (see http://support.apple.com/kb/ht3696); +* Mac OS 10.6 or later (see https://support.apple.com/kb/ht1633). + +Downgrading warnings +-------------------- + +The 'chainstate' for this release is not always compatible with previous +releases, so if you run 0.9 and then decide to switch back to a +0.8.x release you might get a blockchain validation error when starting the +old release (due to 'pruned outputs' being omitted from the index of +unspent transaction outputs). + +Running the old release with the -reindex option will rebuild the chainstate +data structures and correct the problem. + +Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan +the blockchain for missing spent coins, which will take a long time (tens +of minutes on a typical machine). + +Rebranding to Bitcoin Core +--------------------------- + +To reduce confusion between Bitcoin-the-network and Bitcoin-the-software we +have renamed the reference client to Bitcoin Core. + + +OP_RETURN and data in the block chain +------------------------------------- +On OP_RETURN: There was been some confusion and misunderstanding in +the community, regarding the OP_RETURN feature in 0.9 and data in the +blockchain. This change is not an endorsement of storing data in the +blockchain. The OP_RETURN change creates a provably-prunable output, +to avoid data storage schemes -- some of which were already deployed -- +that were storing arbitrary data such as images as forever-unspendable +TX outputs, bloating bitcoin's UTXO database. + +Storing arbitrary data in the blockchain is still a bad idea; it is less +costly and far more efficient to store non-currency data elsewhere. + +Autotools build system +----------------------- + +For 0.9.0 we switched to an autotools-based build system instead of individual +(q)makefiles. + +Using the standard "./autogen.sh; ./configure; make" to build Bitcoin-Qt and +bitcoind makes it easier for experienced open source developers to contribute +to the project. + +Be sure to check doc/build-*.md for your platform before building from source. + +Bitcoin-cli +------------- + +Another change in the 0.9 release is moving away from the bitcoind executable +functioning both as a server and as a RPC client. The RPC client functionality +("tell the running bitcoin daemon to do THIS") was split into a separate +executable, 'bitcoin-cli'. The RPC client code will eventually be removed from +bitcoind, but will be kept for backwards compatibility for a release or two. + +`walletpassphrase` RPC +----------------------- + +The behavior of the `walletpassphrase` RPC when the wallet is already unlocked +has changed between 0.8 and 0.9. + +The 0.8 behavior of `walletpassphrase` is to fail when the wallet is already unlocked: + + > walletpassphrase 1000 + walletunlocktime = now + 1000 + > walletpassphrase 10 + Error: Wallet is already unlocked (old unlock time stays) + +The new behavior of `walletpassphrase` is to set a new unlock time overriding +the old one: + + > walletpassphrase 1000 + walletunlocktime = now + 1000 + > walletpassphrase 10 + walletunlocktime = now + 10 (overriding the old unlock time) + +Transaction malleability-related fixes +-------------------------------------- + +This release contains a few fixes for transaction ID (TXID) malleability +issues: + +- -nospendzeroconfchange command-line option, to avoid spending + zero-confirmation change +- IsStandard() transaction rules tightened to prevent relaying and mining of + mutated transactions +- Additional information in listtransactions/gettransaction output to + report wallet transactions that conflict with each other because + they spend the same outputs. +- Bug fixes to the getbalance/listaccounts RPC commands, which would report + incorrect balances for double-spent (or mutated) transactions. +- New option: -zapwallettxes to rebuild the wallet's transaction information + +Transaction Fees +---------------- + +This release drops the default fee required to relay transactions across the +network and for miners to consider the transaction in their blocks to +0.01mBTC per kilobyte. + +Note that getting a transaction relayed across the network does NOT guarantee +that the transaction will be accepted by a miner; by default, miners fill +their blocks with 50 kilobytes of high-priority transactions, and then with +700 kilobytes of the highest-fee-per-kilobyte transactions. + +The minimum relay/mining fee-per-kilobyte may be changed with the +minrelaytxfee option. Note that previous releases incorrectly used +the mintxfee setting to determine which low-priority transactions should +be considered for inclusion in blocks. + +The wallet code still uses a default fee for low-priority transactions of +0.1mBTC per kilobyte. During periods of heavy transaction volume, even this +fee may not be enough to get transactions confirmed quickly; the mintxfee +option may be used to override the default. + +0.9.0 Release notes +======================= + +RPC: + +- New notion of 'conflicted' transactions, reported as confirmations: -1 +- 'listreceivedbyaddress' now provides tx ids +- Add raw transaction hex to 'gettransaction' output +- Updated help and tests for 'getreceivedby(account|address)' +- In 'getblock', accept 2nd 'verbose' parameter, similar to getrawtransaction, + but defaulting to 1 for backward compatibility +- Add 'verifychain', to verify chain database at runtime +- Add 'dumpwallet' and 'importwallet' RPCs +- 'keypoolrefill' gains optional size parameter +- Add 'getbestblockhash', to return tip of best chain +- Add 'chainwork' (the total work done by all blocks since the genesis block) + to 'getblock' output +- Make RPC password resistant to timing attacks +- Clarify help messages and add examples +- Add 'getrawchangeaddress' call for raw transaction change destinations +- Reject insanely high fees by default in 'sendrawtransaction' +- Add RPC call 'decodescript' to decode a hex-encoded transaction script +- Make 'validateaddress' provide redeemScript +- Add 'getnetworkhashps' to get the calculated network hashrate +- New RPC 'ping' command to request ping, new 'pingtime' and 'pingwait' fields + in 'getpeerinfo' output +- Adding new 'addrlocal' field to 'getpeerinfo' output +- Add verbose boolean to 'getrawmempool' +- Add rpc command 'getunconfirmedbalance' to obtain total unconfirmed balance +- Explicitly ensure that wallet is unlocked in `importprivkey` +- Add check for valid keys in `importprivkey` + +Command-line options: + +- New option: -nospendzeroconfchange to never spend unconfirmed change outputs +- New option: -zapwallettxes to rebuild the wallet's transaction information +- Rename option '-tor' to '-onion' to better reflect what it does +- Add '-disablewallet' mode to let bitcoind run entirely without wallet (when + built with wallet) +- Update default '-rpcsslciphers' to include TLSv1.2 +- make '-logtimestamps' default on and rework help-message +- RPC client option: '-rpcwait', to wait for server start +- Remove '-logtodebugger' +- Allow `-noserver` with bitcoind + +Block-chain handling and storage: + +- Update leveldb to 1.15 +- Check for correct genesis (prevent cases where a datadir from the wrong + network is accidentally loaded) +- Allow txindex to be removed and add a reindex dialog +- Log aborted block database rebuilds +- Store orphan blocks in serialized form, to save memory +- Limit the number of orphan blocks in memory to 750 +- Fix non-standard disconnected transactions causing mempool orphans +- Add a new checkpoint at block 279,000 + +Wallet: + +- Bug fixes and new regression tests to correctly compute + the balance of wallets containing double-spent (or mutated) transactions +- Store key creation time. Calculate whole-wallet birthday. +- Optimize rescan to skip blocks prior to birthday +- Let user select wallet file with -wallet=foo.dat +- Consider generated coins mature at 101 instead of 120 blocks +- Improve wallet load time +- Don't count txins for priority to encourage sweeping +- Don't create empty transactions when reading a corrupted wallet +- Fix rescan to start from beginning after importprivkey +- Only create signatures with low S values + +Mining: + +- Increase default -blockmaxsize/prioritysize to 750K/50K +- 'getblocktemplate' does not require a key to create a block template +- Mining code fee policy now matches relay fee policy + +Protocol and network: + +- Drop the fee required to relay a transaction to 0.01mBTC per kilobyte +- Send tx relay flag with version +- New 'reject' P2P message (BIP 0061, see + https://gist.github.com/gavinandresen/7079034 for draft) +- Dump addresses every 15 minutes instead of 10 seconds +- Relay OP_RETURN data TxOut as standard transaction type +- Remove CENT-output free transaction rule when relaying +- Lower maximum size for free transaction creation +- Send multiple inv messages if mempool.size > MAX_INV_SZ +- Split MIN_PROTO_VERSION into INIT_PROTO_VERSION and MIN_PEER_PROTO_VERSION +- Do not treat fFromMe transaction differently when broadcasting +- Process received messages one at a time without sleeping between messages +- Improve logging of failed connections +- Bump protocol version to 70002 +- Add some additional logging to give extra network insight +- Added new DNS seed from bitcoinstats.com + +Validation: + +- Log reason for non-standard transaction rejection +- Prune provably-unspendable outputs, and adapt consistency check for it. +- Detect any sufficiently long fork and add a warning +- Call the -alertnotify script when we see a long or invalid fork +- Fix multi-block reorg transaction resurrection +- Reject non-canonically-encoded serialization sizes +- Reject dust amounts during validation +- Accept nLockTime transactions that finalize in the next block + +Build system: + +- Switch to autotools-based build system +- Build without wallet by passing `--disable-wallet` to configure, this + removes the BerkeleyDB dependency +- Upgrade gitian dependencies (libpng, libz, libupnpc, boost, openssl) to more + recent versions +- Windows 64-bit build support +- Solaris compatibility fixes +- Check integrity of gitian input source tarballs +- Enable full GCC Stack-smashing protection for all OSes + +GUI: + +- Switch to Qt 5.2.0 for Windows build +- Add payment request (BIP 0070) support +- Improve options dialog +- Show transaction fee in new send confirmation dialog +- Add total balance in overview page +- Allow user to choose data directory on first start, when data directory is + missing, or when the -choosedatadir option is passed +- Save and restore window positions +- Add vout index to transaction id in transactions details dialog +- Add network traffic graph in debug window +- Add open URI dialog +- Add Coin Control Features +- Improve receive coins workflow: make the 'Receive' tab into a form to request + payments, and move historical address list functionality to File menu. +- Rebrand to `Bitcoin Core` +- Move initialization/shutdown to a thread. This prevents "Not responding" + messages during startup. Also show a window during shutdown. +- Don't regenerate autostart link on every client startup +- Show and store message of normal bitcoin:URI +- Fix richtext detection hang issue on very old Qt versions +- OS X: Make use of the 10.8+ user notification center to display Growl-like + notifications +- OS X: Added NSHighResolutionCapable flag to Info.plist for better font + rendering on Retina displays. +- OS X: Fix bitcoin-qt startup crash when clicking dock icon +- Linux: Fix Gnome bitcoin: URI handler + +Miscellaneous: + +- Add Linux script (contrib/qos/tc.sh) to limit outgoing bandwidth +- Add '-regtest' mode, similar to testnet but private with instant block + generation with 'setgenerate' RPC. +- Add 'linearize.py' script to contrib, for creating bootstrap.dat +- Add separate bitcoin-cli client + +Credits +-------- + +Thanks to everyone who contributed to this release: + +- Andrey +- Ashley Holman +- b6393ce9-d324-4fe1-996b-acf82dbc3d53 +- bitsofproof +- Brandon Dahler +- Calvin Tam +- Christian Decker +- Christian von Roques +- Christopher Latham +- Chuck +- coblee +- constantined +- Cory Fields +- Cozz Lovan +- daniel +- Daniel Larimer +- David Hill +- Dmitry Smirnov +- Drak +- Eric Lombrozo +- fanquake +- fcicq +- Florin +- frewil +- Gavin Andresen +- Gregory Maxwell +- gubatron +- Guillermo Céspedes Tabárez +- Haakon Nilsen +- HaltingState +- Han Lin Yap +- harry +- Ian Kelling +- Jeff Garzik +- Johnathan Corgan +- Jonas Schnelli +- Josh Lehan +- Josh Triplett +- Julian Langschaedel +- Kangmo +- Lake Denman +- Luke Dashjr +- Mark Friedenbach +- Matt Corallo +- Michael Bauer +- Michael Ford +- Michagogo +- Midnight Magic +- Mike Hearn +- Nils Schneider +- Noel Tiernan +- Olivier Langlois +- patrick s +- Patrick Strateman +- paveljanik +- Peter Todd +- phantomcircuit +- phelixbtc +- Philip Kaufmann +- Pieter Wuille +- Rav3nPL +- R E Broadley +- regergregregerrge +- Robert Backhaus +- Roman Mindalev +- Rune K. Svendsen +- Ryan Niebur +- Scott Ellis +- Scott Willeke +- Sergey Kazenyuk +- Shawn Wilkinson +- Sined +- sje +- Subo1978 +- super3 +- Tamas Blummer +- theuni +- Thomas Holenstein +- Timon Rapp +- Timothy Stranex +- Tom Geller +- Torstein Husebø +- Vaclav Vobornik +- vhf / victor felder +- Vinnie Falco +- Warren Togami +- Wil Bown +- Wladimir J. van der Laan diff --git a/qa/pull-tester/build-tests.sh.in b/qa/pull-tester/build-tests.sh.in index 86d4d9d0e9..e7db721110 100755 --- a/qa/pull-tester/build-tests.sh.in +++ b/qa/pull-tester/build-tests.sh.in @@ -1,4 +1,8 @@ #!/bin/bash +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# # Param1: The prefix to mingw staging # Param2: Path to java comparison tool # Param3: Number of make jobs. Defaults to 1. diff --git a/qa/pull-tester/pull-tester.py b/qa/pull-tester/pull-tester.py index b05ac2c527..61ce813d80 100755 --- a/qa/pull-tester/pull-tester.py +++ b/qa/pull-tester/pull-tester.py @@ -1,4 +1,8 @@ #!/usr/bin/python +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# import json from urllib import urlopen import requests diff --git a/qa/pull-tester/pull-tester.sh b/qa/pull-tester/pull-tester.sh index 13c800c16a..bbee92967d 100755 --- a/qa/pull-tester/pull-tester.sh +++ b/qa/pull-tester/pull-tester.sh @@ -1,4 +1,8 @@ #!/bin/sh +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# # Helper script for pull-tester. #Param 1: path to bitcoin srcroot #Param ...: arguments for build-test.sh diff --git a/qa/pull-tester/run-bitcoind-for-test.sh.in b/qa/pull-tester/run-bitcoind-for-test.sh.in index 25faf9c42d..391046ab85 100755 --- a/qa/pull-tester/run-bitcoind-for-test.sh.in +++ b/qa/pull-tester/run-bitcoind-for-test.sh.in @@ -1,4 +1,8 @@ #!/bin/bash +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# DATADIR="@abs_top_builddir@/.bitcoin" rm -rf "$DATADIR" mkdir -p "$DATADIR"/regtest diff --git a/qa/rpc-tests/conflictedbalance.sh b/qa/rpc-tests/conflictedbalance.sh index 9d854d2d87..849ad31fb8 100755 --- a/qa/rpc-tests/conflictedbalance.sh +++ b/qa/rpc-tests/conflictedbalance.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test marking of spent outputs diff --git a/qa/rpc-tests/listtransactions.py b/qa/rpc-tests/listtransactions.py index fec3acfbb3..6ffee6bbe8 100755 --- a/qa/rpc-tests/listtransactions.py +++ b/qa/rpc-tests/listtransactions.py @@ -1,4 +1,7 @@ #!/usr/bin/env python +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Exercise the listtransactions API diff --git a/qa/rpc-tests/send.sh b/qa/rpc-tests/send.sh index 2c0d5375c0..bfbf791d07 100755 --- a/qa/rpc-tests/send.sh +++ b/qa/rpc-tests/send.sh @@ -1,4 +1,7 @@ #!/bin/bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. TIMEOUT=10 SIGNAL=HUP PIDFILE=.send.pid diff --git a/qa/rpc-tests/skeleton.py b/qa/rpc-tests/skeleton.py index 0bace6f4eb..5d4b62e55f 100755 --- a/qa/rpc-tests/skeleton.py +++ b/qa/rpc-tests/skeleton.py @@ -1,4 +1,7 @@ #!/usr/bin/env python +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Skeleton for python-based regression tests using # JSON-RPC diff --git a/qa/rpc-tests/txnmall.sh b/qa/rpc-tests/txnmall.sh index 11e0276494..bd36967a63 100755 --- a/qa/rpc-tests/txnmall.sh +++ b/qa/rpc-tests/txnmall.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test proper accounting with malleable transactions diff --git a/qa/rpc-tests/util.py b/qa/rpc-tests/util.py index fbb27ae2df..6184c1fbad 100644 --- a/qa/rpc-tests/util.py +++ b/qa/rpc-tests/util.py @@ -1,3 +1,6 @@ +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # # Helpful routines for regression testing # diff --git a/qa/rpc-tests/util.sh b/qa/rpc-tests/util.sh index 9001c42fbc..1e7bd6a7ee 100644 --- a/qa/rpc-tests/util.sh +++ b/qa/rpc-tests/util.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Functions used by more than one test diff --git a/qa/rpc-tests/wallet.sh b/qa/rpc-tests/wallet.sh index 2940566af9..98532fa858 100755 --- a/qa/rpc-tests/wallet.sh +++ b/qa/rpc-tests/wallet.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2013-2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test block generation and basic wallet sending diff --git a/qa/rpc-tests/walletbackup.sh b/qa/rpc-tests/walletbackup.sh index 9207243b62..7444670980 100755 --- a/qa/rpc-tests/walletbackup.sh +++ b/qa/rpc-tests/walletbackup.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test wallet backup / dump / restore functionality diff --git a/src/alert.cpp b/src/alert.cpp index 46e861be9e..99164d63e5 100644 --- a/src/alert.cpp +++ b/src/alert.cpp @@ -10,6 +10,7 @@ #include "ui_interface.h" #include "util.h" +#include <stdint.h> #include <algorithm> #include <map> diff --git a/src/qt/Makefile.am b/src/qt/Makefile.am index c0ebfb61d2..3bbc8516a0 100644 --- a/src/qt/Makefile.am +++ b/src/qt/Makefile.am @@ -7,8 +7,8 @@ AM_CPPFLAGS += -I$(top_srcdir)/src \ $(QR_CFLAGS) bin_PROGRAMS = bitcoin-qt noinst_LIBRARIES = libbitcoinqt.a -SUBDIRS = $(BUILD_TEST_QT) -DIST_SUBDIRS = test +SUBDIRS = . $(BUILD_TEST_QT) +DIST_SUBDIRS = . test # bitcoin qt core # QT_TS = \ diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 7e1831f037..4a4fece3e1 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -379,6 +379,121 @@ bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt) return QObject::eventFilter(obj, evt); } +void TableViewLastColumnResizingFixer::connectViewHeadersSignals() +{ + connect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(on_sectionResized(int,int,int))); + connect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); +} + +//we need to disconnect these while handling the resize events, otherwise we can enter infinite loops +void TableViewLastColumnResizingFixer::disconnectViewHeadersSignals() +{ + disconnect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(on_sectionResized(int,int,int))); + disconnect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); +} + +//setup the resize mode, handles compatibility for QT5 and below as the method signatures changed. (refactored here for readability) +void TableViewLastColumnResizingFixer::setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode) +{ +#if QT_VERSION < 0x050000 + tableView->horizontalHeader()->setResizeMode(logicalIndex, resizeMode); +#else + tableView->horizontalHeader()->setSectionResizeMode(logicalIndex, resizeMode); +#endif +} + +void TableViewLastColumnResizingFixer::resizeColumn(int nColumnIndex, int width) { + tableView->setColumnWidth(nColumnIndex, width); + tableView->horizontalHeader()->resizeSection(nColumnIndex, width); +} + +int TableViewLastColumnResizingFixer::getColumnsWidth() +{ + int nColumnsWidthSum = 0; + for (int i = 0; i < columnCount; i++) + { + nColumnsWidthSum += tableView->horizontalHeader()->sectionSize(i); + } + return nColumnsWidthSum; +} + +int TableViewLastColumnResizingFixer::getAvailableWidthForColumn(int column) +{ + int nResult = lastColumnMinimumWidth; + int nTableWidth = tableView->horizontalHeader()->width(); + + if (nTableWidth > 0) + { + int nOtherColsWidth = getColumnsWidth() - tableView->horizontalHeader()->sectionSize(column); + nResult = std::max(nResult, nTableWidth - nOtherColsWidth); + } + + return nResult; +} + +//make sure we don't make the columns wider than the table's viewport's width. +void TableViewLastColumnResizingFixer::adjustTableColumnsWidth() +{ + disconnectViewHeadersSignals(); + resizeColumn(lastColumnIndex, getAvailableWidthForColumn(lastColumnIndex)); + connectViewHeadersSignals(); + + int nTableWidth = tableView->horizontalHeader()->width(); + int nColsWidth = getColumnsWidth(); + if (nColsWidth > nTableWidth) + { + resizeColumn(secondToLastColumnIndex,getAvailableWidthForColumn(secondToLastColumnIndex)); + } +} + +//make column use all the space available, useful during window resizing. +void TableViewLastColumnResizingFixer::stretchColumnWidth(int column) { + disconnectViewHeadersSignals(); + resizeColumn(column, getAvailableWidthForColumn(column)); + connectViewHeadersSignals(); +} + +//when a section is resized this is a slot-proxy for ajustAmountColumnWidth() +void TableViewLastColumnResizingFixer::on_sectionResized(int logicalIndex, int oldSize, int newSize) +{ + adjustTableColumnsWidth(); + int remainingWidth = getAvailableWidthForColumn(logicalIndex); + if (newSize > remainingWidth) + { + resizeColumn(logicalIndex, remainingWidth); + } +} + +//when the table's geometry is ready, we manually perform the Stretch of the "Message" column +//as the "Stretch" resize mode does not allow for interactive resizing. +void TableViewLastColumnResizingFixer::on_geometriesChanged() +{ + if ((getColumnsWidth() - this->tableView->horizontalHeader()->width()) != 0) + { + disconnectViewHeadersSignals(); + resizeColumn(secondToLastColumnIndex, getAvailableWidthForColumn(secondToLastColumnIndex)); + connectViewHeadersSignals(); + } +} + +/** + * Initializes all internal variables and prepares the + * the resize modes of the last 2 columns of the table and + */ +TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth) : + tableView(table), + lastColumnMinimumWidth(lastColMinimumWidth), + allColumnsMinimumWidth(allColsMinimumWidth) +{ + columnCount = tableView->horizontalHeader()->count(); + lastColumnIndex = columnCount - 1; + secondToLastColumnIndex = columnCount - 2; + tableView->horizontalHeader()->setMinimumSectionSize(allColumnsMinimumWidth); + setViewHeaderResizeMode(secondToLastColumnIndex, QHeaderView::Interactive); + setViewHeaderResizeMode(lastColumnIndex, QHeaderView::Interactive); +} + + #ifdef WIN32 boost::filesystem::path static StartupShortcutPath() { diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 52124ff20a..26202e8d41 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -8,6 +8,8 @@ #include <QMessageBox> #include <QObject> #include <QString> +#include <QTableView> +#include <QHeaderView> class QValidatedLineEdit; class SendCoinsRecipient; @@ -116,6 +118,44 @@ namespace GUIUtil int size_threshold; }; + /** + * Makes a QTableView last column feel as if it was being resized from its left border. + * Also makes sure the column widths are never larger than the table's viewport. + * In Qt, all columns are resizable from the right, but it's not intuitive resizing the last column from the right. + * Usually our second to last columns behave as if stretched, and when on strech mode, columns aren't resizable + * interactively or programatically. + * + * This helper object takes care of this issue. + * + */ + class TableViewLastColumnResizingFixer: public QObject + { + Q_OBJECT + public: + TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth); + void stretchColumnWidth(int column); + + private: + QTableView* tableView; + int lastColumnMinimumWidth; + int allColumnsMinimumWidth; + int lastColumnIndex; + int columnCount; + int secondToLastColumnIndex; + + void adjustTableColumnsWidth(); + int getAvailableWidthForColumn(int column); + int getColumnsWidth(); + void connectViewHeadersSignals(); + void disconnectViewHeadersSignals(); + void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode); + void resizeColumn(int nColumnIndex, int width); + + private slots: + void on_sectionResized(int logicalIndex, int oldSize, int newSize); + void on_geometriesChanged(); + }; + bool GetStartOnSystemStartup(); bool SetStartOnSystemStartup(bool fAutoStart); diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp index 2af3949ae4..f630324947 100644 --- a/src/qt/receivecoinsdialog.cpp +++ b/src/qt/receivecoinsdialog.cpp @@ -55,34 +55,35 @@ ReceiveCoinsDialog::ReceiveCoinsDialog(QWidget *parent) : connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear())); } + + void ReceiveCoinsDialog::setModel(WalletModel *model) { this->model = model; if(model && model->getOptionsModel()) { - connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); - updateDisplayUnit(); - - ui->recentRequestsView->setModel(model->getRecentRequestsTableModel()); - ui->recentRequestsView->setAlternatingRowColors(true); - ui->recentRequestsView->setSelectionBehavior(QAbstractItemView::SelectRows); - ui->recentRequestsView->setSelectionMode(QAbstractItemView::ContiguousSelection); - ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Date, 130); - ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Label, 120); -#if QT_VERSION < 0x050000 - ui->recentRequestsView->horizontalHeader()->setResizeMode(RecentRequestsTableModel::Message, QHeaderView::Stretch); -#else - ui->recentRequestsView->horizontalHeader()->setSectionResizeMode(RecentRequestsTableModel::Message, QHeaderView::Stretch); -#endif - ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Amount, 100); - model->getRecentRequestsTableModel()->sort(RecentRequestsTableModel::Date, Qt::DescendingOrder); - + connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); connect(ui->recentRequestsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, SLOT(on_recentRequestsView_selectionChanged(QItemSelection, QItemSelection))); + updateDisplayUnit(); + + QTableView* tableView = ui->recentRequestsView; + + tableView->verticalHeader()->hide(); + tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + tableView->setModel(model->getRecentRequestsTableModel()); + tableView->setAlternatingRowColors(true); + tableView->setSelectionBehavior(QAbstractItemView::SelectRows); + tableView->setSelectionMode(QAbstractItemView::ContiguousSelection); + tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH); + tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH); + + //(last 2 columns are set when the table geometry is ready) by the columnResizingFixer. + columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(tableView, AMOUNT_MINIMUM_COLUMN_WIDTH, DATE_COLUMN_WIDTH); } } @@ -200,6 +201,12 @@ void ReceiveCoinsDialog::on_removeRequestButton_clicked() model->getRecentRequestsTableModel()->removeRows(firstIndex.row(), selection.length(), firstIndex.parent()); } +//We override the virtual resizeEvent of the QWidget to adjust tablet's column sizes as the table's width is proportional to the dialog's. +void ReceiveCoinsDialog::resizeEvent(QResizeEvent* event) { + QWidget::resizeEvent(event); + columnResizingFixer->stretchColumnWidth(RecentRequestsTableModel::Message); +} + void ReceiveCoinsDialog::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Return) diff --git a/src/qt/receivecoinsdialog.h b/src/qt/receivecoinsdialog.h index bfe8b3401f..1d051d9324 100644 --- a/src/qt/receivecoinsdialog.h +++ b/src/qt/receivecoinsdialog.h @@ -10,7 +10,9 @@ #include <QMenu> #include <QPoint> #include <QVariant> +#include <QHeaderView> #include <QItemSelection> +#include "guiutil.h" namespace Ui { class ReceiveCoinsDialog; @@ -28,11 +30,18 @@ class ReceiveCoinsDialog : public QDialog Q_OBJECT public: + enum ColumnWidths { + DATE_COLUMN_WIDTH = 130, + LABEL_COLUMN_WIDTH = 120, + AMOUNT_MINIMUM_COLUMN_WIDTH = 160, + MINIMUM_COLUMN_WIDTH = 130 + }; + explicit ReceiveCoinsDialog(QWidget *parent = 0); ~ReceiveCoinsDialog(); - void setModel(WalletModel *model); + public slots: void clear(); void reject(); @@ -43,9 +52,11 @@ protected: private: Ui::ReceiveCoinsDialog *ui; + GUIUtil::TableViewLastColumnResizingFixer *columnResizingFixer; WalletModel *model; QMenu *contextMenu; void copyColumnToClipboard(int column); + virtual void resizeEvent(QResizeEvent* event); private slots: void on_receiveButton_clicked(); diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index cb5991adf1..ba5871ae2b 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -331,6 +331,13 @@ void RPCConsole::clear() tr("Type <b>help</b> for an overview of available commands.")), true); } +void RPCConsole::reject() +{ + // Ignore escape keypress if this is not a seperate window + if(windowType() != Qt::Widget) + QDialog::reject(); +} + void RPCConsole::message(int category, const QString &message, bool html) { QTime time = QTime::currentTime(); diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index e5da01546a..f7a7772050 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -47,6 +47,7 @@ private slots: public slots: void clear(); + void reject(); void message(int category, const QString &message, bool html = false); /** Set number of connections shown in the UI */ void setNumConnections(int count); diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index a0c3ce62aa..d178efe8d5 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -168,6 +168,7 @@ void TransactionView::setModel(WalletModel *model) transactionProxyModel->setSortRole(Qt::EditRole); + transactionView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); transactionView->setModel(transactionProxyModel); transactionView->setAlternatingRowColors(true); transactionView->setSelectionBehavior(QAbstractItemView::SelectRows); @@ -176,15 +177,12 @@ void TransactionView::setModel(WalletModel *model) transactionView->sortByColumn(TransactionTableModel::Status, Qt::DescendingOrder); transactionView->verticalHeader()->hide(); - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Status, 23); - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Date, 120); - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Type, 120); -#if QT_VERSION < 0x050000 - transactionView->horizontalHeader()->setResizeMode(TransactionTableModel::ToAddress, QHeaderView::Stretch); -#else - transactionView->horizontalHeader()->setSectionResizeMode(TransactionTableModel::ToAddress, QHeaderView::Stretch); -#endif - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Amount, 100); + transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH); + transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH); + transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH); + transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH); + + columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(transactionView, AMOUNT_MINIMUM_COLUMN_WIDTH, MINIMUM_COLUMN_WIDTH); } } @@ -439,3 +437,9 @@ void TransactionView::focusTransaction(const QModelIndex &idx) transactionView->setCurrentIndex(targetIdx); transactionView->setFocus(); } + +//We override the virtual resizeEvent of the QWidget to adjust tablet's column sizes as the table's width is proportional to the dialog's. +void TransactionView::resizeEvent(QResizeEvent* event) { + QWidget::resizeEvent(event); + columnResizingFixer->stretchColumnWidth(TransactionTableModel::ToAddress); +} diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index 18f2b9bfc9..fe8e205d6c 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -6,6 +6,7 @@ #define TRANSACTIONVIEW_H #include <QWidget> +#include "guiutil.h" class TransactionFilterProxy; class WalletModel; @@ -44,6 +45,14 @@ public: Range }; + enum ColumnWidths { + STATUS_COLUMN_WIDTH = 23, + DATE_COLUMN_WIDTH = 120, + TYPE_COLUMN_WIDTH = 120, + AMOUNT_MINIMUM_COLUMN_WIDTH = 120, + MINIMUM_COLUMN_WIDTH = 23 + }; + private: WalletModel *model; TransactionFilterProxy *transactionProxyModel; @@ -62,6 +71,10 @@ private: QWidget *createDateRangeWidget(); + GUIUtil::TableViewLastColumnResizingFixer *columnResizingFixer; + + virtual void resizeEvent(QResizeEvent* event); + private slots: void contextualMenu(const QPoint &); void dateRangeChanged(); diff --git a/src/test/Checkpoints_tests.cpp b/src/test/Checkpoints_tests.cpp index 78b0236b74..8f70f18c7c 100644 --- a/src/test/Checkpoints_tests.cpp +++ b/src/test/Checkpoints_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for block-chain checkpoints // diff --git a/src/test/DoS_tests.cpp b/src/test/DoS_tests.cpp index 7bf7b19b54..d86cc7a290 100644 --- a/src/test/DoS_tests.cpp +++ b/src/test/DoS_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for denial-of-service detection/prevention code // diff --git a/src/test/accounting_tests.cpp b/src/test/accounting_tests.cpp index bfdb95927b..e2a75da349 100644 --- a/src/test/accounting_tests.cpp +++ b/src/test/accounting_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "wallet.h" #include "walletdb.h" diff --git a/src/test/alert_tests.cpp b/src/test/alert_tests.cpp index a7e668222d..b16f3f7f57 100644 --- a/src/test/alert_tests.cpp +++ b/src/test/alert_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for alert system // diff --git a/src/test/allocator_tests.cpp b/src/test/allocator_tests.cpp index 490dff87e5..2752a0b215 100644 --- a/src/test/allocator_tests.cpp +++ b/src/test/allocator_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/base32_tests.cpp b/src/test/base32_tests.cpp index 580e87f65f..87473585e3 100644 --- a/src/test/base32_tests.cpp +++ b/src/test/base32_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/base58_tests.cpp b/src/test/base58_tests.cpp index 94e84049be..5689e69995 100644 --- a/src/test/base58_tests.cpp +++ b/src/test/base58_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "base58.h" #include "data/base58_encode_decode.json.h" diff --git a/src/test/base64_tests.cpp b/src/test/base64_tests.cpp index c59c290669..d4a23d9aa0 100644 --- a/src/test/base64_tests.cpp +++ b/src/test/base64_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/bignum_tests.cpp b/src/test/bignum_tests.cpp index 205b15adcf..6587389a07 100644 --- a/src/test/bignum_tests.cpp +++ b/src/test/bignum_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "bignum.h" #include <limits> diff --git a/src/test/bip32_tests.cpp b/src/test/bip32_tests.cpp index 2bcca24336..9cf07fc38c 100644 --- a/src/test/bip32_tests.cpp +++ b/src/test/bip32_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include <boost/test/unit_test.hpp> #include "base58.h" diff --git a/src/test/bloom_tests.cpp b/src/test/bloom_tests.cpp index c4e4403b70..abedd3093c 100644 --- a/src/test/bloom_tests.cpp +++ b/src/test/bloom_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "bloom.h" #include "base58.h" diff --git a/src/test/canonical_tests.cpp b/src/test/canonical_tests.cpp index c521f2cf9c..a26ad335a4 100644 --- a/src/test/canonical_tests.cpp +++ b/src/test/canonical_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for canonical signatures // diff --git a/src/test/checkblock_tests.cpp b/src/test/checkblock_tests.cpp index 67503b200b..10352240f4 100644 --- a/src/test/checkblock_tests.cpp +++ b/src/test/checkblock_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for block.CheckBlock() // diff --git a/src/test/compress_tests.cpp b/src/test/compress_tests.cpp index 4d16914774..719955ba85 100644 --- a/src/test/compress_tests.cpp +++ b/src/test/compress_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "main.h" #include "util.h" diff --git a/src/test/data/README.md b/src/test/data/README.md new file mode 100644 index 0000000000..f69a021ca0 --- /dev/null +++ b/src/test/data/README.md @@ -0,0 +1,14 @@ +Description +------------ + +This directory contains data-driven tests for various aspects of Bitcoin. + +License +-------- + +The data files in this directory are + + Copyright (c) 2012-2014 The Bitcoin Core developers + Distributed under the MIT/X11 software license, see the accompanying + file COPYING or http://www.opensource.org/licenses/mit-license.php. + diff --git a/src/test/getarg_tests.cpp b/src/test/getarg_tests.cpp index d76124885b..8cadcdd716 100644 --- a/src/test/getarg_tests.cpp +++ b/src/test/getarg_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/hash_tests.cpp b/src/test/hash_tests.cpp index 28410f0fed..4568c8769b 100644 --- a/src/test/hash_tests.cpp +++ b/src/test/hash_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "hash.h" #include "util.h" diff --git a/src/test/hmac_tests.cpp b/src/test/hmac_tests.cpp index 68868866aa..780ce480ce 100644 --- a/src/test/hmac_tests.cpp +++ b/src/test/hmac_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "hash.h" #include "util.h" diff --git a/src/test/key_tests.cpp b/src/test/key_tests.cpp index 421ffeac45..864d90128c 100644 --- a/src/test/key_tests.cpp +++ b/src/test/key_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "key.h" #include "base58.h" diff --git a/src/test/main_tests.cpp b/src/test/main_tests.cpp index b7f4312cda..3f8ad20020 100644 --- a/src/test/main_tests.cpp +++ b/src/test/main_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "core.h" #include "main.h" diff --git a/src/test/miner_tests.cpp b/src/test/miner_tests.cpp index d35137a663..b72ba0293f 100644 --- a/src/test/miner_tests.cpp +++ b/src/test/miner_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "main.h" #include "miner.h" diff --git a/src/test/mruset_tests.cpp b/src/test/mruset_tests.cpp index 638c88fabe..60f11c147a 100644 --- a/src/test/mruset_tests.cpp +++ b/src/test/mruset_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "mruset.h" #include "util.h" diff --git a/src/test/multisig_tests.cpp b/src/test/multisig_tests.cpp index 772217b888..3775abd633 100644 --- a/src/test/multisig_tests.cpp +++ b/src/test/multisig_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "key.h" #include "keystore.h" diff --git a/src/test/netbase_tests.cpp b/src/test/netbase_tests.cpp index 412ba04910..7d38700736 100644 --- a/src/test/netbase_tests.cpp +++ b/src/test/netbase_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "netbase.h" #include <string> diff --git a/src/test/pmt_tests.cpp b/src/test/pmt_tests.cpp index dea5e1b824..7d7e6681df 100644 --- a/src/test/pmt_tests.cpp +++ b/src/test/pmt_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "main.h" #include "serialize.h" diff --git a/src/test/rpc_tests.cpp b/src/test/rpc_tests.cpp index 29195545da..5bc38ce2de 100644 --- a/src/test/rpc_tests.cpp +++ b/src/test/rpc_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "rpcserver.h" #include "rpcclient.h" diff --git a/src/test/rpc_wallet_tests.cpp b/src/test/rpc_wallet_tests.cpp index 628ba95067..af34e496e2 100644 --- a/src/test/rpc_wallet_tests.cpp +++ b/src/test/rpc_wallet_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "rpcserver.h" #include "rpcclient.h" diff --git a/src/test/script_P2SH_tests.cpp b/src/test/script_P2SH_tests.cpp index e57dc9bbba..03dbdde57b 100644 --- a/src/test/script_P2SH_tests.cpp +++ b/src/test/script_P2SH_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "script.h" #include "key.h" diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index dd1b613047..7bc2bfb6dd 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "script.h" #include "data/script_invalid.json.h" diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp index 415f957811..867a7df888 100644 --- a/src/test/serialize_tests.cpp +++ b/src/test/serialize_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "serialize.h" #include <stdint.h> diff --git a/src/test/sighash_tests.cpp b/src/test/sighash_tests.cpp index f098d46186..04b93fb105 100644 --- a/src/test/sighash_tests.cpp +++ b/src/test/sighash_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include <boost/test/unit_test.hpp> #include "main.h" diff --git a/src/test/sigopcount_tests.cpp b/src/test/sigopcount_tests.cpp index 96f663ccef..722f14a989 100644 --- a/src/test/sigopcount_tests.cpp +++ b/src/test/sigopcount_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "key.h" #include "script.h" diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp index 96d0712403..3b75aad14b 100644 --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #define BOOST_TEST_MODULE Bitcoin Test Suite diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp index 588c8013c7..2ebb652f00 100644 --- a/src/test/transaction_tests.cpp +++ b/src/test/transaction_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "data/tx_invalid.json.h" #include "data/tx_valid.json.h" diff --git a/src/test/uint256_tests.cpp b/src/test/uint256_tests.cpp index 368484fdff..815babf107 100644 --- a/src/test/uint256_tests.cpp +++ b/src/test/uint256_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include <boost/test/unit_test.hpp> #include <stdint.h> #include <sstream> diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index 706737b115..b8f107f644 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "util.h" #include "sync.h" diff --git a/src/test/wallet_tests.cpp b/src/test/wallet_tests.cpp index bd0517ae08..1993358826 100644 --- a/src/test/wallet_tests.cpp +++ b/src/test/wallet_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "wallet.h" #include <set> |