527137e3ee
Now it can't be told if this is was a Windows App before. All Mac design principles are fulfilled and some cosmetics have been applied to suit the native look and feel. The biggest change there is the proper use of the Dock icon which takes the role of the Tray icon on Mac. The QDoubleSpinBox improves entering of Bitcoin amounts, no two separate fields are required anymore. All functionality and validation effects have been retained; pressing the comma key will be internally translated to a period to keep it consistent throughout the application and eases entering in countries which use the comma as decimal separator. Additionally, Notificator now supports Growl, Mac's native notification system. This is provided via Apple Script in order to avoid linking to Growl on compile time. Other changes involve encapsulation of Toolbar and Menubar creation, loading of Qt's own translation and some clean up.
237 lines
7.1 KiB
Prolog
237 lines
7.1 KiB
Prolog
TEMPLATE = app
|
|
TARGET =
|
|
INCLUDEPATH += src src/json src/qt
|
|
DEFINES += QT_GUI
|
|
CONFIG += no_include_pwd
|
|
|
|
# for boost 1.37, add -mt to the boost libraries
|
|
# use: qmake BOOST_LIB_SUFFIX=-mt
|
|
# or when linking against a specific BerkelyDB version: BDB_LIB_SUFFIX=-4.8
|
|
|
|
# Dependency library locations can be customized with BOOST_INCLUDE_PATH,
|
|
# BOOST_LIB_PATH, BDB_INCLUDE_PATH, BDB_LIB_PATH
|
|
# OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively
|
|
|
|
OBJECTS_DIR = build
|
|
MOC_DIR = build
|
|
UI_DIR = build
|
|
|
|
# use: qmake "USE_UPNP=1" ( enabled by default; default)
|
|
# or: qmake "USE_UPNP=0" (disabled by default)
|
|
# or: qmake "USE_UPNP=-" (not supported)
|
|
# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support
|
|
contains(USE_UPNP, -) {
|
|
message(Building without UPNP support)
|
|
} else {
|
|
message(Building with UPNP support)
|
|
count(USE_UPNP, 0) {
|
|
USE_UPNP=1
|
|
}
|
|
DEFINES += USE_UPNP=$$USE_UPNP
|
|
LIBS += -lminiupnpc
|
|
}
|
|
|
|
# use: qmake "USE_DBUS=1"
|
|
contains(USE_DBUS, 1) {
|
|
message(Building with DBUS (Freedesktop notifications) support)
|
|
DEFINES += USE_DBUS
|
|
QT += dbus
|
|
}
|
|
|
|
# use: qmake "USE_SSL=1"
|
|
contains(USE_SSL, 1) {
|
|
message(Building with SSL support for RPC)
|
|
DEFINES += USE_SSL
|
|
}
|
|
|
|
# for extra security against potential buffer overflows
|
|
QMAKE_CXXFLAGS += -fstack-protector
|
|
QMAKE_LFLAGS += -fstack-protector
|
|
|
|
# disable quite some warnings because bitcoin core "sins" a lot
|
|
QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wno-invalid-offsetof -Wno-unused-variable -Wno-unused-parameter -Wno-sign-compare -Wno-char-subscripts -Wno-unused-value -Wno-sequence-point -Wno-parentheses -Wno-unknown-pragmas -Wno-switch
|
|
|
|
# Input
|
|
DEPENDPATH += src/qt src src json/include
|
|
HEADERS += src/qt/bitcoingui.h \
|
|
src/qt/transactiontablemodel.h \
|
|
src/qt/addresstablemodel.h \
|
|
src/qt/optionsdialog.h \
|
|
src/qt/sendcoinsdialog.h \
|
|
src/qt/addressbookpage.h \
|
|
src/qt/aboutdialog.h \
|
|
src/qt/editaddressdialog.h \
|
|
src/qt/bitcoinaddressvalidator.h \
|
|
src/base58.h \
|
|
src/bignum.h \
|
|
src/util.h \
|
|
src/uint256.h \
|
|
src/serialize.h \
|
|
src/strlcpy.h \
|
|
src/main.h \
|
|
src/net.h \
|
|
src/key.h \
|
|
src/db.h \
|
|
src/script.h \
|
|
src/noui.h \
|
|
src/init.h \
|
|
src/headers.h \
|
|
src/irc.h \
|
|
src/json/json_spirit_writer_template.h \
|
|
src/json/json_spirit_writer.h \
|
|
src/json/json_spirit_value.h \
|
|
src/json/json_spirit_utils.h \
|
|
src/json/json_spirit_stream_reader.h \
|
|
src/json/json_spirit_reader_template.h \
|
|
src/json/json_spirit_reader.h \
|
|
src/json/json_spirit_error_position.h \
|
|
src/json/json_spirit.h \
|
|
src/qt/clientmodel.h \
|
|
src/qt/guiutil.h \
|
|
src/qt/transactionrecord.h \
|
|
src/qt/guiconstants.h \
|
|
src/qt/optionsmodel.h \
|
|
src/qt/monitoreddatamapper.h \
|
|
src/qtui.h \
|
|
src/qt/transactiondesc.h \
|
|
src/qt/transactiondescdialog.h \
|
|
src/qt/bitcoinamountfield.h \
|
|
src/wallet.h \
|
|
src/keystore.h \
|
|
src/qt/transactionfilterproxy.h \
|
|
src/qt/transactionview.h \
|
|
src/qt/walletmodel.h \
|
|
src/bitcoinrpc.h \
|
|
src/qt/overviewpage.h \
|
|
src/qt/csvmodelwriter.h \
|
|
src/crypter.h \
|
|
src/qt/sendcoinsentry.h \
|
|
src/qt/qvalidatedlineedit.h \
|
|
src/qt/bitcoinunits.h \
|
|
src/qt/qvaluecombobox.h \
|
|
src/qt/askpassphrasedialog.h \
|
|
src/protocol.h \
|
|
src/qt/notificator.h
|
|
|
|
SOURCES += src/qt/bitcoin.cpp src/qt/bitcoingui.cpp \
|
|
src/qt/transactiontablemodel.cpp \
|
|
src/qt/addresstablemodel.cpp \
|
|
src/qt/optionsdialog.cpp \
|
|
src/qt/sendcoinsdialog.cpp \
|
|
src/qt/addressbookpage.cpp \
|
|
src/qt/aboutdialog.cpp \
|
|
src/qt/editaddressdialog.cpp \
|
|
src/qt/bitcoinaddressvalidator.cpp \
|
|
src/util.cpp \
|
|
src/script.cpp \
|
|
src/main.cpp \
|
|
src/init.cpp \
|
|
src/net.cpp \
|
|
src/irc.cpp \
|
|
src/db.cpp \
|
|
src/json/json_spirit_writer.cpp \
|
|
src/json/json_spirit_value.cpp \
|
|
src/json/json_spirit_reader.cpp \
|
|
src/qt/clientmodel.cpp \
|
|
src/qt/guiutil.cpp \
|
|
src/qt/transactionrecord.cpp \
|
|
src/qt/optionsmodel.cpp \
|
|
src/qt/monitoreddatamapper.cpp \
|
|
src/qt/transactiondesc.cpp \
|
|
src/qt/transactiondescdialog.cpp \
|
|
src/qt/bitcoinstrings.cpp \
|
|
src/qt/bitcoinamountfield.cpp \
|
|
src/wallet.cpp \
|
|
src/keystore.cpp \
|
|
src/qt/transactionfilterproxy.cpp \
|
|
src/qt/transactionview.cpp \
|
|
src/qt/walletmodel.cpp \
|
|
src/bitcoinrpc.cpp \
|
|
src/qt/overviewpage.cpp \
|
|
src/qt/csvmodelwriter.cpp \
|
|
src/crypter.cpp \
|
|
src/qt/sendcoinsentry.cpp \
|
|
src/qt/qvalidatedlineedit.cpp \
|
|
src/qt/bitcoinunits.cpp \
|
|
src/qt/qvaluecombobox.cpp \
|
|
src/qt/askpassphrasedialog.cpp \
|
|
src/protocol.cpp \
|
|
src/qt/notificator.cpp
|
|
|
|
RESOURCES += \
|
|
src/qt/bitcoin.qrc
|
|
|
|
FORMS += \
|
|
src/qt/forms/sendcoinsdialog.ui \
|
|
src/qt/forms/addressbookpage.ui \
|
|
src/qt/forms/aboutdialog.ui \
|
|
src/qt/forms/editaddressdialog.ui \
|
|
src/qt/forms/transactiondescdialog.ui \
|
|
src/qt/forms/overviewpage.ui \
|
|
src/qt/forms/sendcoinsentry.ui \
|
|
src/qt/forms/askpassphrasedialog.ui
|
|
|
|
CODECFORTR = UTF-8
|
|
|
|
# for lrelease/lupdate
|
|
TRANSLATIONS = src/qt/locale/bitcoin_nl.ts src/qt/locale/bitcoin_de.ts \
|
|
src/qt/locale/bitcoin_ru.ts
|
|
|
|
isEmpty(QMAKE_LRELEASE) {
|
|
win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe
|
|
else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
|
|
}
|
|
isEmpty(TS_DIR):TS_DIR = src/qt/locale
|
|
# automatically build translations, so they can be included in resource file
|
|
TSQM.name = lrelease ${QMAKE_FILE_IN}
|
|
TSQM.input = TRANSLATIONS
|
|
TSQM.output = $$TS_DIR/${QMAKE_FILE_BASE}.qm
|
|
TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN}
|
|
TSQM.CONFIG = no_link
|
|
QMAKE_EXTRA_COMPILERS += TSQM
|
|
PRE_TARGETDEPS += compiler_TSQM_make_all
|
|
|
|
# "Other files" to show in Qt Creator
|
|
OTHER_FILES += \
|
|
doc/*.rst doc/*.txt doc/README README.md
|
|
|
|
# platform specific defaults, if not overridden on command line
|
|
isEmpty(BOOST_LIB_SUFFIX) {
|
|
macx:BOOST_LIB_SUFFIX = -mt
|
|
windows:BOOST_LIB_SUFFIX = -mgw44-mt-1_43
|
|
}
|
|
|
|
isEmpty(BDB_LIB_PATH) {
|
|
macx:BDB_LIB_PATH = /opt/local/lib/db48
|
|
}
|
|
|
|
isEmpty(BDB_INCLUDE_PATH) {
|
|
macx:BDB_INCLUDE_PATH = /opt/local/include/db48
|
|
}
|
|
|
|
isEmpty(BOOST_LIB_PATH) {
|
|
macx:BOOST_LIB_PATH = /opt/local/lib
|
|
}
|
|
|
|
isEmpty(BOOST_INCLUDE_PATH) {
|
|
macx:BOOST_INCLUDE_PATH = /opt/local/include
|
|
}
|
|
|
|
windows:LIBS += -lws2_32 -lgdi32
|
|
windows:DEFINES += WIN32
|
|
windows:RC_FILE = src/qt/res/bitcoin-qt.rc
|
|
|
|
macx:HEADERS += src/qt/macdockiconhandler.h
|
|
macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm
|
|
macx:LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
|
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0 BOOST_FILESYSTEM_VERSION=3
|
|
macx:ICON = src/qt/res/icons/bitcoin.icns
|
|
macx:TARGET = "Bitcoin Qt"
|
|
|
|
# Set libraries and includes at end, to use platform-defined defaults if not overridden
|
|
INCLUDEPATH += $$BOOST_INCLUDE_PATH $$BDB_INCLUDE_PATH $$OPENSSL_INCLUDE_PATH
|
|
LIBS += $$join(BOOST_LIB_PATH,,-L,) $$join(BDB_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,)
|
|
LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX
|
|
LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_LIB_SUFFIX
|
|
|
|
system($$QMAKE_LRELEASE -silent $$_PRO_FILE_)
|