// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2012 The Bitcoin developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_UI_INTERFACE_H #define BITCOIN_UI_INTERFACE_H #include #include #include #include "util.h" class CBasicKeyStore; class CWallet; class uint256; /** General change type (added, updated, removed). */ enum ChangeType { CT_NEW, CT_UPDATED, CT_DELETED }; /** Signals for UI communication. */ class CClientUIInterface { public: /** Flags for CClientUIInterface::ThreadSafeMessageBox */ enum MessageBoxFlags { YES = 0x00000002, OK = 0x00000004, NO = 0x00000008, YES_NO = (YES|NO), CANCEL = 0x00000010, APPLY = 0x00000020, CLOSE = 0x00000040, OK_DEFAULT = 0x00000000, YES_DEFAULT = 0x00000000, NO_DEFAULT = 0x00000080, CANCEL_DEFAULT = 0x80000000, ICON_EXCLAMATION = 0x00000100, ICON_HAND = 0x00000200, ICON_WARNING = ICON_EXCLAMATION, ICON_ERROR = ICON_HAND, ICON_QUESTION = 0x00000400, ICON_INFORMATION = 0x00000800, ICON_STOP = ICON_HAND, ICON_ASTERISK = ICON_INFORMATION, ICON_MASK = (0x00000100|0x00000200|0x00000400|0x00000800), FORWARD = 0x00001000, BACKWARD = 0x00002000, RESET = 0x00004000, HELP = 0x00008000, MORE = 0x00010000, SETUP = 0x00020000, // Force blocking, modal message box dialog (not just OS notification) MODAL = 0x00040000, /** Predefined combinations for certain default usage cases */ MSG_INFORMATION = ICON_INFORMATION, MSG_WARNING = (ICON_WARNING | OK | MODAL), MSG_ERROR = (ICON_ERROR | OK | MODAL) }; /** Show message box. */ boost::signals2::signal ThreadSafeMessageBox; /** Ask the user whether they want to pay a fee or not. */ boost::signals2::signal > ThreadSafeAskFee; /** Handle a URL passed at the command line. */ boost::signals2::signal ThreadSafeHandleURI; /** Progress message during initialization. */ boost::signals2::signal InitMessage; /** Initiate client shutdown. */ boost::signals2::signal QueueShutdown; /** Translate a message to the native language of the user. */ boost::signals2::signal Translate; /** Block chain changed. */ boost::signals2::signal NotifyBlocksChanged; /** Number of network connections changed. */ boost::signals2::signal NotifyNumConnectionsChanged; /** * New, updated or cancelled alert. * @note called with lock cs_mapAlerts held. */ boost::signals2::signal NotifyAlertChanged; }; extern CClientUIInterface uiInterface; /** * Translation function: Call Translate signal on UI interface, which returns a boost::optional result. * If no translation slot is registered, nothing is returned, and simply return the input. */ inline std::string _(const char* psz) { boost::optional rv = uiInterface.Translate(psz); return rv ? (*rv) : psz; } #endif