Bitcoin-Qt: use statustips in addition to tooltips
- add setStatusTip() in addition to setTooltip() where it makes sense - add only setStatusTip() if GUI element is only used in main- or tray menu - add an event filter on our BitcoinGUI object to prevent garbelled text on the status bar, which happens when we use it for e.g. displaying block-sync state and then a QEvent::StatusTip wants to write own text to it - remove a double translation of "Bitcoin client"
This commit is contained in:
parent
578fc80003
commit
6f959c4cb3
2 changed files with 45 additions and 16 deletions
|
@ -176,6 +176,9 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
|
||||||
// Clicking on "Sign Message" in the receive coins page sends you to the sign message tab
|
// Clicking on "Sign Message" in the receive coins page sends you to the sign message tab
|
||||||
connect(receiveCoinsPage, SIGNAL(signMessage(QString)), this, SLOT(gotoSignMessageTab(QString)));
|
connect(receiveCoinsPage, SIGNAL(signMessage(QString)), this, SLOT(gotoSignMessageTab(QString)));
|
||||||
|
|
||||||
|
// Install event filter to be able to catch status tip events (QEvent::StatusTip)
|
||||||
|
this->installEventFilter(this);
|
||||||
|
|
||||||
gotoOverviewPage();
|
gotoOverviewPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,31 +196,36 @@ void BitcoinGUI::createActions()
|
||||||
QActionGroup *tabGroup = new QActionGroup(this);
|
QActionGroup *tabGroup = new QActionGroup(this);
|
||||||
|
|
||||||
overviewAction = new QAction(QIcon(":/icons/overview"), tr("&Overview"), this);
|
overviewAction = new QAction(QIcon(":/icons/overview"), tr("&Overview"), this);
|
||||||
overviewAction->setToolTip(tr("Show general overview of wallet"));
|
overviewAction->setStatusTip(tr("Show general overview of wallet"));
|
||||||
|
overviewAction->setToolTip(overviewAction->statusTip());
|
||||||
overviewAction->setCheckable(true);
|
overviewAction->setCheckable(true);
|
||||||
overviewAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_1));
|
overviewAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_1));
|
||||||
tabGroup->addAction(overviewAction);
|
tabGroup->addAction(overviewAction);
|
||||||
|
|
||||||
sendCoinsAction = new QAction(QIcon(":/icons/send"), tr("&Send coins"), this);
|
sendCoinsAction = new QAction(QIcon(":/icons/send"), tr("&Send coins"), this);
|
||||||
sendCoinsAction->setToolTip(tr("Send coins to a Bitcoin address"));
|
sendCoinsAction->setStatusTip(tr("Send coins to a Bitcoin address"));
|
||||||
|
sendCoinsAction->setToolTip(sendCoinsAction->statusTip());
|
||||||
sendCoinsAction->setCheckable(true);
|
sendCoinsAction->setCheckable(true);
|
||||||
sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2));
|
sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2));
|
||||||
tabGroup->addAction(sendCoinsAction);
|
tabGroup->addAction(sendCoinsAction);
|
||||||
|
|
||||||
receiveCoinsAction = new QAction(QIcon(":/icons/receiving_addresses"), tr("&Receive coins"), this);
|
receiveCoinsAction = new QAction(QIcon(":/icons/receiving_addresses"), tr("&Receive coins"), this);
|
||||||
receiveCoinsAction->setToolTip(tr("Show the list of addresses for receiving payments"));
|
receiveCoinsAction->setStatusTip(tr("Show the list of addresses for receiving payments"));
|
||||||
|
receiveCoinsAction->setToolTip(receiveCoinsAction->statusTip());
|
||||||
receiveCoinsAction->setCheckable(true);
|
receiveCoinsAction->setCheckable(true);
|
||||||
receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3));
|
receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3));
|
||||||
tabGroup->addAction(receiveCoinsAction);
|
tabGroup->addAction(receiveCoinsAction);
|
||||||
|
|
||||||
historyAction = new QAction(QIcon(":/icons/history"), tr("&Transactions"), this);
|
historyAction = new QAction(QIcon(":/icons/history"), tr("&Transactions"), this);
|
||||||
historyAction->setToolTip(tr("Browse transaction history"));
|
historyAction->setStatusTip(tr("Browse transaction history"));
|
||||||
|
historyAction->setToolTip(historyAction->statusTip());
|
||||||
historyAction->setCheckable(true);
|
historyAction->setCheckable(true);
|
||||||
historyAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_4));
|
historyAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_4));
|
||||||
tabGroup->addAction(historyAction);
|
tabGroup->addAction(historyAction);
|
||||||
|
|
||||||
addressBookAction = new QAction(QIcon(":/icons/address-book"), tr("&Address Book"), this);
|
addressBookAction = new QAction(QIcon(":/icons/address-book"), tr("&Address Book"), this);
|
||||||
addressBookAction->setToolTip(tr("Edit the list of stored addresses and labels"));
|
addressBookAction->setStatusTip(tr("Edit the list of stored addresses and labels"));
|
||||||
|
addressBookAction->setToolTip(addressBookAction->statusTip());
|
||||||
addressBookAction->setCheckable(true);
|
addressBookAction->setCheckable(true);
|
||||||
addressBookAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_5));
|
addressBookAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_5));
|
||||||
tabGroup->addAction(addressBookAction);
|
tabGroup->addAction(addressBookAction);
|
||||||
|
@ -234,33 +242,37 @@ void BitcoinGUI::createActions()
|
||||||
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage()));
|
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage()));
|
||||||
|
|
||||||
quitAction = new QAction(QIcon(":/icons/quit"), tr("E&xit"), this);
|
quitAction = new QAction(QIcon(":/icons/quit"), tr("E&xit"), this);
|
||||||
quitAction->setToolTip(tr("Quit application"));
|
quitAction->setStatusTip(tr("Quit application"));
|
||||||
quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
|
quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
|
||||||
quitAction->setMenuRole(QAction::QuitRole);
|
quitAction->setMenuRole(QAction::QuitRole);
|
||||||
aboutAction = new QAction(QIcon(":/icons/bitcoin"), tr("&About Bitcoin"), this);
|
aboutAction = new QAction(QIcon(":/icons/bitcoin"), tr("&About Bitcoin"), this);
|
||||||
aboutAction->setToolTip(tr("Show information about Bitcoin"));
|
aboutAction->setStatusTip(tr("Show information about Bitcoin"));
|
||||||
aboutAction->setMenuRole(QAction::AboutRole);
|
aboutAction->setMenuRole(QAction::AboutRole);
|
||||||
aboutQtAction = new QAction(QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png"), tr("About &Qt"), this);
|
aboutQtAction = new QAction(QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png"), tr("About &Qt"), this);
|
||||||
aboutQtAction->setToolTip(tr("Show information about Qt"));
|
aboutQtAction->setStatusTip(tr("Show information about Qt"));
|
||||||
aboutQtAction->setMenuRole(QAction::AboutQtRole);
|
aboutQtAction->setMenuRole(QAction::AboutQtRole);
|
||||||
optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this);
|
optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this);
|
||||||
optionsAction->setToolTip(tr("Modify configuration options for Bitcoin"));
|
optionsAction->setStatusTip(tr("Modify configuration options for Bitcoin"));
|
||||||
optionsAction->setMenuRole(QAction::PreferencesRole);
|
optionsAction->setMenuRole(QAction::PreferencesRole);
|
||||||
toggleHideAction = new QAction(QIcon(":/icons/bitcoin"), tr("&Show / Hide"), this);
|
toggleHideAction = new QAction(QIcon(":/icons/bitcoin"), tr("&Show / Hide"), this);
|
||||||
|
toggleHideAction->setStatusTip(tr("Show or hide the main Window"));
|
||||||
encryptWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Encrypt Wallet..."), this);
|
encryptWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Encrypt Wallet..."), this);
|
||||||
encryptWalletAction->setToolTip(tr("Encrypt or decrypt wallet"));
|
encryptWalletAction->setStatusTip(tr("Encrypt the private keys that belong to your wallet"));
|
||||||
encryptWalletAction->setCheckable(true);
|
encryptWalletAction->setCheckable(true);
|
||||||
backupWalletAction = new QAction(QIcon(":/icons/filesave"), tr("&Backup Wallet..."), this);
|
backupWalletAction = new QAction(QIcon(":/icons/filesave"), tr("&Backup Wallet..."), this);
|
||||||
backupWalletAction->setToolTip(tr("Backup wallet to another location"));
|
backupWalletAction->setStatusTip(tr("Backup wallet to another location"));
|
||||||
changePassphraseAction = new QAction(QIcon(":/icons/key"), tr("&Change Passphrase..."), this);
|
changePassphraseAction = new QAction(QIcon(":/icons/key"), tr("&Change Passphrase..."), this);
|
||||||
changePassphraseAction->setToolTip(tr("Change the passphrase used for wallet encryption"));
|
changePassphraseAction->setStatusTip(tr("Change the passphrase used for wallet encryption"));
|
||||||
signMessageAction = new QAction(QIcon(":/icons/edit"), tr("Sign &message..."), this);
|
signMessageAction = new QAction(QIcon(":/icons/edit"), tr("Sign &message..."), this);
|
||||||
|
signMessageAction->setStatusTip(tr("Sign messages with your Bitcoin addresses to prove you own them"));
|
||||||
verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this);
|
verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this);
|
||||||
|
verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Bitcoin addresses"));
|
||||||
|
|
||||||
exportAction = new QAction(QIcon(":/icons/export"), tr("&Export..."), this);
|
exportAction = new QAction(QIcon(":/icons/export"), tr("&Export..."), this);
|
||||||
exportAction->setToolTip(tr("Export the data in the current tab to a file"));
|
exportAction->setStatusTip(tr("Export the data in the current tab to a file"));
|
||||||
|
exportAction->setToolTip(exportAction->statusTip());
|
||||||
openRPCConsoleAction = new QAction(QIcon(":/icons/debugwindow"), tr("&Debug window"), this);
|
openRPCConsoleAction = new QAction(QIcon(":/icons/debugwindow"), tr("&Debug window"), this);
|
||||||
openRPCConsoleAction->setToolTip(tr("Open debugging and diagnostic console"));
|
openRPCConsoleAction->setStatusTip(tr("Open debugging and diagnostic console"));
|
||||||
|
|
||||||
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
|
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
|
||||||
connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked()));
|
connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked()));
|
||||||
|
@ -338,7 +350,8 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
|
||||||
#endif
|
#endif
|
||||||
if(trayIcon)
|
if(trayIcon)
|
||||||
{
|
{
|
||||||
trayIcon->setToolTip(tr("Bitcoin client") + QString(" ") + tr("[testnet]"));
|
// Just attach " [testnet]" to the existing tooltip
|
||||||
|
trayIcon->setToolTip(trayIcon->toolTip() + QString(" ") + tr("[testnet]"));
|
||||||
trayIcon->setIcon(QIcon(":/icons/toolbar_testnet"));
|
trayIcon->setIcon(QIcon(":/icons/toolbar_testnet"));
|
||||||
toggleHideAction->setIcon(QIcon(":/icons/toolbar_testnet"));
|
toggleHideAction->setIcon(QIcon(":/icons/toolbar_testnet"));
|
||||||
}
|
}
|
||||||
|
@ -472,6 +485,9 @@ void BitcoinGUI::setNumConnections(int count)
|
||||||
|
|
||||||
void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
|
void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
|
||||||
{
|
{
|
||||||
|
// Prevent orphan statusbar messages (e.g. hover Quit in main menu, wait until chain-sync starts -> garbelled text)
|
||||||
|
statusBar()->clearMessage();
|
||||||
|
|
||||||
// don't show / hide progress bar and its label if we have no connection to the network
|
// don't show / hide progress bar and its label if we have no connection to the network
|
||||||
if (!clientModel || (clientModel->getNumConnections() == 0 && !clientModel->isImporting()))
|
if (!clientModel || (clientModel->getNumConnections() == 0 && !clientModel->isImporting()))
|
||||||
{
|
{
|
||||||
|
@ -750,6 +766,18 @@ void BitcoinGUI::dropEvent(QDropEvent *event)
|
||||||
event->acceptProposedAction();
|
event->acceptProposedAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BitcoinGUI::eventFilter(QObject *object, QEvent *event)
|
||||||
|
{
|
||||||
|
// Catch status tip events
|
||||||
|
if (event->type() == QEvent::StatusTip)
|
||||||
|
{
|
||||||
|
// Prevent adding text from setStatusTip(), if we currently use the status bar for displaying other stuff
|
||||||
|
if (progressBarLabel->isVisible() && progressBar->isVisible())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return QMainWindow::eventFilter(object, event);
|
||||||
|
}
|
||||||
|
|
||||||
void BitcoinGUI::handleURI(QString strURI)
|
void BitcoinGUI::handleURI(QString strURI)
|
||||||
{
|
{
|
||||||
// URI has to be valid
|
// URI has to be valid
|
||||||
|
|
|
@ -52,6 +52,7 @@ protected:
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
void dragEnterEvent(QDragEnterEvent *event);
|
void dragEnterEvent(QDragEnterEvent *event);
|
||||||
void dropEvent(QDropEvent *event);
|
void dropEvent(QDropEvent *event);
|
||||||
|
bool eventFilter(QObject *object, QEvent *event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ClientModel *clientModel;
|
ClientModel *clientModel;
|
||||||
|
@ -172,7 +173,7 @@ private slots:
|
||||||
|
|
||||||
/** Show window if hidden, unminimize when minimized, rise when obscured or show if hidden and fToggleHidden is true */
|
/** Show window if hidden, unminimize when minimized, rise when obscured or show if hidden and fToggleHidden is true */
|
||||||
void showNormalIfMinimized(bool fToggleHidden = false);
|
void showNormalIfMinimized(bool fToggleHidden = false);
|
||||||
/** simply calls showNormalIfMinimized(true) for use in SLOT() macro */
|
/** Simply calls showNormalIfMinimized(true) for use in SLOT() macro */
|
||||||
void toggleHidden();
|
void toggleHidden();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue