|
|
@ -115,9 +115,6 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): |
|
|
|
centralWidget->addWidget(addressBookPage); |
|
|
|
centralWidget->addWidget(addressBookPage); |
|
|
|
centralWidget->addWidget(receiveCoinsPage); |
|
|
|
centralWidget->addWidget(receiveCoinsPage); |
|
|
|
centralWidget->addWidget(sendCoinsPage); |
|
|
|
centralWidget->addWidget(sendCoinsPage); |
|
|
|
#ifdef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
centralWidget->addWidget(signVerifyMessageDialog); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
setCentralWidget(centralWidget); |
|
|
|
setCentralWidget(centralWidget); |
|
|
|
|
|
|
|
|
|
|
|
// Create status bar
|
|
|
|
// Create status bar
|
|
|
@ -201,6 +198,18 @@ void BitcoinGUI::createActions() |
|
|
|
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->setToolTip(tr("Send coins to a Bitcoin address")); |
|
|
|
|
|
|
|
sendCoinsAction->setCheckable(true); |
|
|
|
|
|
|
|
sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2)); |
|
|
|
|
|
|
|
tabGroup->addAction(sendCoinsAction); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
receiveCoinsAction = new QAction(QIcon(":/icons/receiving_addresses"), tr("&Receive coins"), this); |
|
|
|
|
|
|
|
receiveCoinsAction->setToolTip(tr("Show the list of addresses for receiving payments")); |
|
|
|
|
|
|
|
receiveCoinsAction->setCheckable(true); |
|
|
|
|
|
|
|
receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3)); |
|
|
|
|
|
|
|
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->setToolTip(tr("Browse transaction history")); |
|
|
|
historyAction->setCheckable(true); |
|
|
|
historyAction->setCheckable(true); |
|
|
@ -213,52 +222,16 @@ void BitcoinGUI::createActions() |
|
|
|
addressBookAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_5)); |
|
|
|
addressBookAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_5)); |
|
|
|
tabGroup->addAction(addressBookAction); |
|
|
|
tabGroup->addAction(addressBookAction); |
|
|
|
|
|
|
|
|
|
|
|
receiveCoinsAction = new QAction(QIcon(":/icons/receiving_addresses"), tr("&Receive coins"), this); |
|
|
|
|
|
|
|
receiveCoinsAction->setToolTip(tr("Show the list of addresses for receiving payments")); |
|
|
|
|
|
|
|
receiveCoinsAction->setCheckable(true); |
|
|
|
|
|
|
|
receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3)); |
|
|
|
|
|
|
|
tabGroup->addAction(receiveCoinsAction); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sendCoinsAction = new QAction(QIcon(":/icons/send"), tr("&Send coins"), this); |
|
|
|
|
|
|
|
sendCoinsAction->setToolTip(tr("Send coins to a Bitcoin address")); |
|
|
|
|
|
|
|
sendCoinsAction->setCheckable(true); |
|
|
|
|
|
|
|
sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2)); |
|
|
|
|
|
|
|
tabGroup->addAction(sendCoinsAction); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
signMessageAction = new QAction(QIcon(":/icons/edit"), tr("Sign &message..."), this); |
|
|
|
|
|
|
|
signMessageAction->setToolTip(tr("Sign a message to prove you own a Bitcoin address")); |
|
|
|
|
|
|
|
tabGroup->addAction(signMessageAction); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this); |
|
|
|
|
|
|
|
verifyMessageAction->setToolTip(tr("Verify a message to ensure it was signed with a specified Bitcoin address")); |
|
|
|
|
|
|
|
tabGroup->addAction(verifyMessageAction); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
firstClassMessagingAction = new QAction(QIcon(":/icons/edit"), tr("S&ignatures"), this); |
|
|
|
|
|
|
|
firstClassMessagingAction->setToolTip(signMessageAction->toolTip() + QString(". / ") + verifyMessageAction->toolTip() + QString(".")); |
|
|
|
|
|
|
|
firstClassMessagingAction->setCheckable(true); |
|
|
|
|
|
|
|
tabGroup->addAction(firstClassMessagingAction); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
connect(overviewAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
connect(overviewAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage())); |
|
|
|
connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage())); |
|
|
|
|
|
|
|
connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
|
|
|
|
connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(gotoSendCoinsPage())); |
|
|
|
|
|
|
|
connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
|
|
|
|
connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(gotoReceiveCoinsPage())); |
|
|
|
connect(historyAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
connect(historyAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage())); |
|
|
|
connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage())); |
|
|
|
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage())); |
|
|
|
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage())); |
|
|
|
connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
|
|
|
|
connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(gotoReceiveCoinsPage())); |
|
|
|
|
|
|
|
connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
|
|
|
|
connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(gotoSendCoinsPage())); |
|
|
|
|
|
|
|
connect(signMessageAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
|
|
|
|
connect(signMessageAction, SIGNAL(triggered()), this, SLOT(gotoSignMessageTab())); |
|
|
|
|
|
|
|
connect(verifyMessageAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
|
|
|
|
connect(verifyMessageAction, SIGNAL(triggered()), this, SLOT(gotoVerifyMessageTab())); |
|
|
|
|
|
|
|
#ifdef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
connect(firstClassMessagingAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); |
|
|
|
|
|
|
|
// Always start with the sign message tab for FIRST_CLASS_MESSAGING
|
|
|
|
|
|
|
|
connect(firstClassMessagingAction, SIGNAL(triggered()), this, SLOT(gotoSignMessageTab())); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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->setToolTip(tr("Quit application")); |
|
|
@ -274,8 +247,6 @@ void BitcoinGUI::createActions() |
|
|
|
optionsAction->setToolTip(tr("Modify configuration options for Bitcoin")); |
|
|
|
optionsAction->setToolTip(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); |
|
|
|
exportAction = new QAction(QIcon(":/icons/export"), tr("&Export..."), this); |
|
|
|
|
|
|
|
exportAction->setToolTip(tr("Export the data in the current tab to a file")); |
|
|
|
|
|
|
|
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->setToolTip(tr("Encrypt or decrypt wallet")); |
|
|
|
encryptWalletAction->setCheckable(true); |
|
|
|
encryptWalletAction->setCheckable(true); |
|
|
@ -283,17 +254,24 @@ void BitcoinGUI::createActions() |
|
|
|
backupWalletAction->setToolTip(tr("Backup wallet to another location")); |
|
|
|
backupWalletAction->setToolTip(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->setToolTip(tr("Change the passphrase used for wallet encryption")); |
|
|
|
|
|
|
|
signMessageAction = new QAction(QIcon(":/icons/edit"), tr("Sign &message..."), this); |
|
|
|
|
|
|
|
verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exportAction = new QAction(QIcon(":/icons/export"), tr("&Export..."), this); |
|
|
|
|
|
|
|
exportAction->setToolTip(tr("Export the data in the current tab to a file")); |
|
|
|
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->setToolTip(tr("Open debugging and diagnostic console")); |
|
|
|
|
|
|
|
|
|
|
|
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); |
|
|
|
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); |
|
|
|
connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsClicked())); |
|
|
|
|
|
|
|
connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked())); |
|
|
|
connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked())); |
|
|
|
connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); |
|
|
|
connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); |
|
|
|
|
|
|
|
connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsClicked())); |
|
|
|
connect(toggleHideAction, SIGNAL(triggered()), this, SLOT(toggleHidden())); |
|
|
|
connect(toggleHideAction, SIGNAL(triggered()), this, SLOT(toggleHidden())); |
|
|
|
connect(encryptWalletAction, SIGNAL(triggered(bool)), this, SLOT(encryptWallet(bool))); |
|
|
|
connect(encryptWalletAction, SIGNAL(triggered(bool)), this, SLOT(encryptWallet(bool))); |
|
|
|
connect(backupWalletAction, SIGNAL(triggered()), this, SLOT(backupWallet())); |
|
|
|
connect(backupWalletAction, SIGNAL(triggered()), this, SLOT(backupWallet())); |
|
|
|
connect(changePassphraseAction, SIGNAL(triggered()), this, SLOT(changePassphrase())); |
|
|
|
connect(changePassphraseAction, SIGNAL(triggered()), this, SLOT(changePassphrase())); |
|
|
|
|
|
|
|
connect(signMessageAction, SIGNAL(triggered()), this, SLOT(gotoSignMessageTab())); |
|
|
|
|
|
|
|
connect(verifyMessageAction, SIGNAL(triggered()), this, SLOT(gotoVerifyMessageTab())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void BitcoinGUI::createMenuBar() |
|
|
|
void BitcoinGUI::createMenuBar() |
|
|
@ -310,10 +288,8 @@ void BitcoinGUI::createMenuBar() |
|
|
|
QMenu *file = appMenuBar->addMenu(tr("&File")); |
|
|
|
QMenu *file = appMenuBar->addMenu(tr("&File")); |
|
|
|
file->addAction(backupWalletAction); |
|
|
|
file->addAction(backupWalletAction); |
|
|
|
file->addAction(exportAction); |
|
|
|
file->addAction(exportAction); |
|
|
|
#ifndef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
file->addAction(signMessageAction); |
|
|
|
file->addAction(signMessageAction); |
|
|
|
file->addAction(verifyMessageAction); |
|
|
|
file->addAction(verifyMessageAction); |
|
|
|
#endif |
|
|
|
|
|
|
|
file->addSeparator(); |
|
|
|
file->addSeparator(); |
|
|
|
file->addAction(quitAction); |
|
|
|
file->addAction(quitAction); |
|
|
|
|
|
|
|
|
|
|
@ -339,9 +315,6 @@ void BitcoinGUI::createToolBars() |
|
|
|
toolbar->addAction(receiveCoinsAction); |
|
|
|
toolbar->addAction(receiveCoinsAction); |
|
|
|
toolbar->addAction(historyAction); |
|
|
|
toolbar->addAction(historyAction); |
|
|
|
toolbar->addAction(addressBookAction); |
|
|
|
toolbar->addAction(addressBookAction); |
|
|
|
#ifdef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
toolbar->addAction(firstClassMessagingAction); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QToolBar *toolbar2 = addToolBar(tr("Actions toolbar")); |
|
|
|
QToolBar *toolbar2 = addToolBar(tr("Actions toolbar")); |
|
|
|
toolbar2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); |
|
|
|
toolbar2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); |
|
|
@ -441,9 +414,7 @@ void BitcoinGUI::createTrayIcon() |
|
|
|
trayIconMenu->addSeparator(); |
|
|
|
trayIconMenu->addSeparator(); |
|
|
|
trayIconMenu->addAction(sendCoinsAction); |
|
|
|
trayIconMenu->addAction(sendCoinsAction); |
|
|
|
trayIconMenu->addAction(receiveCoinsAction); |
|
|
|
trayIconMenu->addAction(receiveCoinsAction); |
|
|
|
#ifndef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
trayIconMenu->addSeparator(); |
|
|
|
trayIconMenu->addSeparator(); |
|
|
|
#endif |
|
|
|
|
|
|
|
trayIconMenu->addAction(signMessageAction); |
|
|
|
trayIconMenu->addAction(signMessageAction); |
|
|
|
trayIconMenu->addAction(verifyMessageAction); |
|
|
|
trayIconMenu->addAction(verifyMessageAction); |
|
|
|
trayIconMenu->addSeparator(); |
|
|
|
trayIconMenu->addSeparator(); |
|
|
@ -501,7 +472,7 @@ void BitcoinGUI::setNumConnections(int count) |
|
|
|
|
|
|
|
|
|
|
|
void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) |
|
|
|
void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// don't show / hide progressBar and its label if we have no connection(s) to the network
|
|
|
|
// don't show / hide progress bar and it's label if we have no connection to the network
|
|
|
|
if (!clientModel || clientModel->getNumConnections() == 0) |
|
|
|
if (!clientModel || clientModel->getNumConnections() == 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
progressBarLabel->setVisible(false); |
|
|
|
progressBarLabel->setVisible(false); |
|
|
@ -539,7 +510,7 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) |
|
|
|
tooltip = tr("Downloaded %1 blocks of transaction history.").arg(count); |
|
|
|
tooltip = tr("Downloaded %1 blocks of transaction history.").arg(count); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Override progressBarLabel text and hide progressBar, when we have warnings to display
|
|
|
|
// Override progressBarLabel text and hide progress bar, when we have warnings to display
|
|
|
|
if (!strStatusBarWarnings.isEmpty()) |
|
|
|
if (!strStatusBarWarnings.isEmpty()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
progressBarLabel->setText(strStatusBarWarnings); |
|
|
|
progressBarLabel->setText(strStatusBarWarnings); |
|
|
@ -747,18 +718,8 @@ void BitcoinGUI::gotoSendCoinsPage() |
|
|
|
|
|
|
|
|
|
|
|
void BitcoinGUI::gotoSignMessageTab(QString addr) |
|
|
|
void BitcoinGUI::gotoSignMessageTab(QString addr) |
|
|
|
{ |
|
|
|
{ |
|
|
|
#ifdef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
firstClassMessagingAction->setChecked(true); |
|
|
|
|
|
|
|
centralWidget->setCurrentWidget(signVerifyMessageDialog); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exportAction->setEnabled(false); |
|
|
|
|
|
|
|
disconnect(exportAction, SIGNAL(triggered()), 0, 0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
signVerifyMessageDialog->showTab_SM(false); |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
// call show() in showTab_SM()
|
|
|
|
// call show() in showTab_SM()
|
|
|
|
signVerifyMessageDialog->showTab_SM(true); |
|
|
|
signVerifyMessageDialog->showTab_SM(true); |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!addr.isEmpty()) |
|
|
|
if(!addr.isEmpty()) |
|
|
|
signVerifyMessageDialog->setAddress_SM(addr); |
|
|
|
signVerifyMessageDialog->setAddress_SM(addr); |
|
|
@ -766,18 +727,8 @@ void BitcoinGUI::gotoSignMessageTab(QString addr) |
|
|
|
|
|
|
|
|
|
|
|
void BitcoinGUI::gotoVerifyMessageTab(QString addr) |
|
|
|
void BitcoinGUI::gotoVerifyMessageTab(QString addr) |
|
|
|
{ |
|
|
|
{ |
|
|
|
#ifdef FIRST_CLASS_MESSAGING |
|
|
|
|
|
|
|
firstClassMessagingAction->setChecked(true); |
|
|
|
|
|
|
|
centralWidget->setCurrentWidget(signVerifyMessageDialog); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exportAction->setEnabled(false); |
|
|
|
|
|
|
|
disconnect(exportAction, SIGNAL(triggered()), 0, 0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
signVerifyMessageDialog->showTab_VM(false); |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
// call show() in showTab_VM()
|
|
|
|
// call show() in showTab_VM()
|
|
|
|
signVerifyMessageDialog->showTab_VM(true); |
|
|
|
signVerifyMessageDialog->showTab_VM(true); |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!addr.isEmpty()) |
|
|
|
if(!addr.isEmpty()) |
|
|
|
signVerifyMessageDialog->setAddress_VM(addr); |
|
|
|
signVerifyMessageDialog->setAddress_VM(addr); |
|
|
|