Forum Home
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular

    [Dev] Documenting Feathercoin Specific Software settings - Part 9

    Technical Development
    1
    37
    6253
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • wrapper
      wrapper Moderators last edited by

      Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

      Add Multisgin Page : - commit

      https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

      Include a multi-signature address Page

      src/bignum.h

       +#include "util.h" // for uint64
      

      Code added

      1 Reply Last reply Reply Quote 0
      • wrapper
        wrapper Moderators last edited by

        Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

        Add Multisgin Page : - commit

        https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

        Include a multi-signature address Page

        src/chainparams.cpp

         -        //vSeeds.push_back(CDNSSeedData("block.ftc-c.com", "block.ftc-c.com"));
         -        //vSeeds.push_back(CDNSSeedData("pool.ftc-c.com", "pool.ftc-c.com"));
        
         +        vSeeds.push_back(CDNSSeedData("block.ftc-c.com", "block.ftc-c.com"));
         +        vSeeds.push_back(CDNSSeedData("pool.ftc-c.com", "pool.ftc-c.com"));
        

        Code replaced

        1 Reply Last reply Reply Quote 0
        • wrapper
          wrapper Moderators last edited by

          Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

          Add Multisgin Page : - commit

          https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

          Include a multi-signature address Page

          src/core.h

           +extern int nBestHeight;
           +static const unsigned int LOCKTIME_THRESHOLD2 = 500000000; // Tue Nov  5 00:53:20 1985 UTC
          

          Code added

           +    
           +    bool IsFinal(int nBlockHeight=0, int64 nBlockTime=0) const
           +    {
           +        // Time based nLockTime implemented in 0.1.6
           +        if (nLockTime == 0)
           +            return true;
           +        if (nBlockHeight == 0)
           +            nBlockHeight = nBestHeight;
           +        if (nBlockTime == 0)
           +            nBlockTime = GetAdjustedTime();
           +        if ((int64)nLockTime < ((int64)nLockTime < LOCKTIME_THRESHOLD2 ? (int64)nBlockHeight : nBlockTime))
           +            return true;
           +        BOOST_FOREACH(const CTxIn& txin, vin)
           +            if (!txin.IsFinal())
           +                return false;
           +        return true;
           +    }
          

          Code added

          1 Reply Last reply Reply Quote 0
          • wrapper
            wrapper Moderators last edited by

            Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

            Add Multisgin Page : - commit

            https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

            Include a multi-signature address Page

            src/qt/Makefile.am

             -  forms/snapwidget.ui
            
             +  forms/snapwidget.ui \
             +  forms/createmultisigaddrdialog.ui \
             +  forms/multisigdialog.ui
            

            Code replaced

             +  moc_reportview.cpp \
             +  moc_createmultisigaddrdialog.cpp \
             +  moc_multisigdialog.cpp
            
             +  reportview.h \
             +  createmultisigaddrdialog.h \
             +  multisigdialog.h
            
             +  res/icons/account-report.png \
             +  res/icons/multisig.png
            
             +  qimagesource.cpp \
             +  createmultisigaddrdialog.cpp \
             +  multisigdialog.cpp
            

            Code replaced

            1 Reply Last reply Reply Quote 0
            • wrapper
              wrapper Moderators last edited by

              Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

              Add Multisgin Page : - commit

              https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

              Include a multi-signature address Page

              src/qt/addressbookpage.cpp

               +#include "signverifymessagedialog.h"
              
               +#include "wallet.h"
               +#include "walletmodel.h"
               +#include "init.h"
               +#include "base58.h"
               +
               +#include "walletview.h"
               +#include "createmultisigaddrdialog.h"
               +
              

              Code added

               +#include "json/json_spirit.h"
               +#include "json/json_spirit_reader_template.h"
               +#include "json/json_spirit_writer_template.h"
               +using namespace json_spirit;
               +
              
               +        ui->signMessage->setVisible(false);
              
               +        ui->signMessage->setVisible(true);
               +        ui->newMultiSigAddress->setVisible(false);
              
               +    QAction *sendCoinsAction = new QAction(tr("Send &Coins"), this);
              
               +    QAction *signMessageAction = new QAction(ui->signMessage->text(), this);
               +    QAction *verifyMessageAction = new QAction(ui->verifyMessage->text(), this);
               +    QAction *copyPubKeyAction = new QAction(tr("Copy &Public Key"), this);
               +    QAction *copyPriKeyAction = new QAction(tr("Copy Private Key"), this);
              

              Code added

               +    {
                   contextMenu->addAction(deleteAction);
               +        //contextMenu->addAction(sendCoinsAction);
               +     }
              

              Code added

               +    if(tab == ReceivingTab)
               +    {
               +    		contextMenu->addAction(signMessageAction);
               +        contextMenu->addAction(copyPubKeyAction);
               +        contextMenu->addAction(copyPriKeyAction);
               +    }
               +    else if(tab == SendingTab)
               +        contextMenu->addAction(verifyMessageAction);
               +  
               +    QAction *MultiSigExportAction = new QAction(tr("Export MultiSig Address"), this);
               +    contextMenu->addAction(MultiSigExportAction);
               +    
               +    contextMenuMultiSig = new QMenu();
               +    contextMenuMultiSig->addAction(copyAddressAction);
               +    contextMenuMultiSig->addAction(copyLabelAction);
               +    contextMenuMultiSig->addAction(editAction);
               +    contextMenuMultiSig->addAction(deleteAction);
               +    contextMenuMultiSig->addSeparator();
               +    //contextMenuMultiSig->addAction(sendCoinsAction);
               +#ifdef USE_QRCODE
               +    contextMenuMultiSig->addAction(showQRCodeAction);
               +#endif
               +    contextMenuMultiSig->addAction(MultiSigExportAction);
              

              Code added

               +		connect(signMessageAction, SIGNAL(triggered()), this, SLOT(on_signMessage_clicked()));
               +    connect(verifyMessageAction, SIGNAL(triggered()), this, SLOT(on_verifyMessage_clicked()));
              
               +    connect(copyPubKeyAction, SIGNAL(triggered()), this, SLOT(on_copyPubKey_clicked()));
               +    connect(copyPriKeyAction, SIGNAL(triggered()), this, SLOT(on_copyPriKey_clicked()));
               +    connect(ui->newMultiSigAddress, SIGNAL(clicked()), this, SLOT(createAddress()));
               +    connect(MultiSigExportAction, SIGNAL(triggered()), this, SLOT(exportAddress()));
               +    connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(onSendCoinsAction()));
              

              Code added

               -#if QT_VERSION < 0x050000
               +/*#if QT_VERSION < 0x050000
              
               -#endif
               +#endif*/
              

              Code commented out

               +		ui->tableView->horizontalHeader()->resizeSection(1, 850);
               +		//ui->tableView->horizontalHeader()->resizeSection(2, 100);
               +		ui->tableView->horizontalHeader()->setStretchLastSection(true);
              

              UI code changed

               +void AddressBookPage::on_copyPubKey_clicked()
               +{
               +    QModelIndexList selection = ui->tableView->selectionModel()->selectedRows(AddressTableModel::Address);
               +    if(!selection.isEmpty())
               +    {
               +        QString addrStr = selection.at(0).data(Qt::EditRole).toString();
               +        CBitcoinAddress address(addrStr.toStdString());
               +        CKeyID keyID;
               +        if ( !address.GetKeyID(keyID) )
               +        {
               +            QMessageBox::warning(this, windowTitle(),
               +                tr("Address \"%1\" doesn't have public key ").arg(addrStr),
               +                QMessageBox::Ok, QMessageBox::Ok);
               +            return;
               +        }
               +        CPubKey vchPubKey;
               +        if ( !pwalletMain->GetPubKey(keyID, vchPubKey))
               +        {
               +            QMessageBox::warning(this, windowTitle(),
               +                tr("Address \"%1\" doesn't have public key ").arg(addrStr),
               +                QMessageBox::Ok, QMessageBox::Ok);
               +            return;
               +        }
               +        GUIUtil::setClipboard(QString::fromStdString(HexStr(vchPubKey)));
               +    }
               +}
               +
               +void AddressBookPage::on_copyPriKey_clicked()
               +{
               +    QModelIndexList selection = ui->tableView->selectionModel()->selectedRows(AddressTableModel::Address);
               +    if(!selection.isEmpty())
               +    {
               +        QString addrStr = selection.at(0).data(Qt::EditRole).toString();
               +        CBitcoinAddress address(addrStr.toStdString());
               +        CKeyID keyID;
               +        if ( !address.GetKeyID(keyID) )
               +        {
               +            QMessageBox::warning(this, windowTitle(),
               +                tr("Address \"%1\" doesn't have public key ").arg(addrStr),
               +                QMessageBox::Ok, QMessageBox::Ok);
               +            return;
               +        }
               +        CSecret vchSecret;
               +	      bool fCompressed;
               +	      if (!pwalletMain->GetSecret(keyID, vchSecret, fCompressed))
               +	      {
               +	          QMessageBox::warning(this, windowTitle(),
               +	              tr("Address \"%1\" doesn't have private key ").arg(addrStr),
               +	              QMessageBox::Ok, QMessageBox::Ok);
               +	          return;
               +	      }
               +        GUIUtil::setClipboard(CBitcoinSecret(vchSecret, fCompressed).ToString().c_str());
               +    }
               +}
               +
               +void AddressBookPage::on_signMessage_clicked()
               +{
               +    QTableView *table = ui->tableView;
               +    QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
               +
               +    foreach (QModelIndex index, indexes)
               +    {
               +        QString address = index.data().toString();
               +        //emit signMessage(address);
               +		    SignVerifyMessageDialog *signVerifyMessageDialog = new SignVerifyMessageDialog(this);
               +		    signVerifyMessageDialog->setAttribute(Qt::WA_DeleteOnClose);
               +		    //signVerifyMessageDialog->setModel(walletModel);
               +		    signVerifyMessageDialog->showTab_SM(true);
               +		
               +		    if (!address.isEmpty())
               +		        signVerifyMessageDialog->setAddress_SM(address);
               +    }
               +}
               +
               +void AddressBookPage::on_verifyMessage_clicked()
               +{
               +    QTableView *table = ui->tableView;
               +    QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
               +
               +    foreach (QModelIndex index, indexes)
               +    {
               +        QString address = index.data().toString();
               +        //emit verifyMessage(address);
               +		    SignVerifyMessageDialog *signVerifyMessageDialog = new SignVerifyMessageDialog(this);
               +		    signVerifyMessageDialog->setAttribute(Qt::WA_DeleteOnClose);
               +		    //signVerifyMessageDialog->setModel(walletModel);
               +		    signVerifyMessageDialog->showTab_VM(true);
               +		
               +		    if (!address.isEmpty())
               +		        signVerifyMessageDialog->setAddress_VM(address);
               +    }
               +}
               +
              

              Section of code added

               +        //contextMenu->exec(QCursor::pos());
               +        QTableView *table = ui->tableView;
               +        QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Category);
               +
               +        foreach (QModelIndex index1, indexes){
               +            QString Category = index1.data().toString();
               +            if ( Category == "MultiSig" )
               +                contextMenuMultiSig->exec(QCursor::pos());
               +            else
               +                contextMenu->exec(QCursor::pos());
               +
               +            break;
               +        }
              

              Code replaced

               +
               +void AddressBookPage::onSendCoinsAction()
               +{
               +    QTableView *table = ui->tableView;
               +    QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
               +
               +    foreach (QModelIndex index, indexes)
               +    {
               +        QString address = index.data().toString();
               +        emit sendCoins(address);
               +        //parent.gotoSendCoinsPage(address);
               +        //WalletView(&parent)->gotoSendCoinsPage(address);
               +        close();
               +    }
               +}
               +
               +void AddressBookPage::createAddress()
               +{
               +    CreateMultiSigAddrDialog dlg(this);
               +    if(dlg.exec())
               +    {
               +    }
               +}
               +
               +bool writeString(const QString &filename, const QString& hex);
               +void AddressBookPage::exportAddress()
               +{
               +    QString s;
               +    QTableView *table = ui->tableView;
               +    QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
               +
               +    //foreach (QModelIndex index, indexes)
               +    s = indexes[0].data().toString();
               +
               +    CBitcoinAddress address(s.toStdString());
               +    
               +    CScript subscript;
               +    CScriptID scriptID;
               +    address.GetScriptID(scriptID);
               +    pwalletMain->GetCScript(scriptID, subscript);
               +
               +    json_spirit::Object addrJson;
               +    addrJson.push_back(json_spirit::Pair("address", address.ToString()));
               +    addrJson.push_back(json_spirit::Pair("redeemScript", HexStr(subscript.begin(), subscript.end())));
               +    std::string ss = json_spirit::write_string(json_spirit::Value(addrJson), false);
               +    QString addrJsonStr = QString::fromStdString(ss);
               +
               +    QString filename = GUIUtil::getSaveFileName(
               +            this,
               +            tr("Save MultiSig Address"), QString(),
               +            tr("MultiSig Address file (*.msa)"), NULL);
               +
               +    if (filename.isNull()) return;
               +
               +    if(!writeString(filename, addrJsonStr))
               +    {
               +        QMessageBox::critical(this, tr("Exporting Failed"), tr("Could not write to file %1.").arg(filename),
               +                              QMessageBox::Abort, QMessageBox::Abort);
               +    }
               +} 
              

              Code added

              1 Reply Last reply Reply Quote 0
              • wrapper
                wrapper Moderators last edited by

                Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                Add Multisgin Page : - commit

                https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                Include a multi-signature address Page

                src/qt/addressbookpage.h

                 +    QMenu *contextMenuMultiSig;
                

                Code added

                 +    /** Copy public key of currently selected address to clipboard */
                 +    void on_copyPubKey_clicked();
                 +    /** Copy private key of currently selected address to clipboard */
                 +    void on_copyPriKey_clicked();
                 +    /** Open the sign message tab in the Sign/Verify Message dialog with currently selected address */
                 +    void on_signMessage_clicked();
                 +    /** Open the verify message tab in the Sign/Verify Message dialog with currently selected address */
                 +    void on_verifyMessage_clicked();
                 +    /** Open send coins dialog for currently selected address (no button) */
                 +    void onSendCoinsAction();
                

                Code added

                 +    
                 +    void createAddress();
                 +    void exportAddress();
                

                Code added

                 +    void signMessage(QString addr);
                 +    void verifyMessage(QString addr);
                

                Code added

                1 Reply Last reply Reply Quote 0
                • wrapper
                  wrapper Moderators last edited by

                  Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                  Add Multisgin Page : - commit

                  https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                  Include a multi-signature address Page

                  src/qt/addresstablemodel.cpp

                   +    
                   +    enum Category {
                   +        Normal,
                   +        MultiSig
                   +    };
                  

                  Code added

                   +    AddressTableEntry() { categoryStrList << "Normal" << "MultiSig"; }
                   +    AddressTableEntry(Type type, const QString &label, const QString &address, const bool &stealth = false, Category cate = Normal):
                   +        type(type), label(label), address(address), stealth(stealth), category(cate) { categoryStrList << "Normal" << "MultiSig"; }
                  

                  Code replaced

                   +                const std::string& strName = item.second.name;
                  
                   +                bool fMyShare = IsMyShare(*wallet, address.Get());
                  

                  Code added

                   +                AddressTableEntry::Category cate = AddressTableEntry::Normal;
                   +                if ( fMyShare )
                   +                {
                   +                    cate = AddressTableEntry::MultiSig;
                   +                    addressType = AddressTableEntry::Sending;
                   +                }
                  

                  Code replaced

                   +                                  QString::fromStdString(address.ToString()),false,cate));
                  

                  Code replaced

                   +                                  true,AddressTableEntry::Normal));
                  

                  Code replaced

                   -            cachedAddressTable.insert(lowerIndex, 
                  
                   +            }                       
                           parent->beginInsertRows(QModelIndex(), lowerIndex, lowerIndex);
                  

                  AddressTableEntry(newEntryType, label, address));
                  + if (address.at(0)==‘f’)
                  + {
                  + cachedAddressTable.insert(lowerIndex, AddressTableEntry(newEntryType, label, address,false,AddressTableEntry::MultiSig));
                  + }
                  + else
                  + {
                  + cachedAddressTable.insert(lowerIndex, AddressTableEntry(newEntryType, label, address,false,AddressTableEntry::Normal));
                  + }

                  Code replaced

                   +    //columns << tr("Label") << tr("Address")<< tr("Category");
                  
                   +        case Category:
                   +            //return rec->categoryStrList[rec->category];
                   +            return rec->category;
                  

                  Code replaced

                  1 Reply Last reply Reply Quote 0
                  • wrapper
                    wrapper Moderators last edited by

                    Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                    Add Multisgin Page : - commit

                    https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                    Include a multi-signature address Page

                    src/qt/addresstablemodel.h

                     +        Label = 0,   	/**< User specified label */
                    
                              Address = 1,  /**< Bitcoin address */
                     -        Type = 2  /**< Address type  */
                     +        Type = 2,  	  /**< Address type  */
                     +        Category = 3  /**< Address Category : Normal or MultiSig*/
                    

                    Code replaced

                    1 Reply Last reply Reply Quote 0
                    • wrapper
                      wrapper Moderators last edited by

                      Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                      Add Multisgin Page : - commit

                      https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                      Include a multi-signature address Page

                      src/qt/bitcoingui.cpp

                       +    
                       +    multiSigAction = new QAction(QIcon(":/icons/multisig"), tr("&MultiSig"), this);
                       +    multiSigAction->setStatusTip(tr("Manage MultiSig transactions"));
                       +    multiSigAction->setToolTip(multiSigAction->statusTip());
                       +    multiSigAction->setCheckable(true);
                       +    multiSigAction->setShortcut(QKeySequence(Qt::ALT+ Qt::Key_6));
                       +    tabGroup->addAction(multiSigAction);
                      

                      Code added

                       +    connect(multiSigAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
                       +    connect(multiSigAction, SIGNAL(triggered()), this, SLOT(gotoMultiSigPage()));
                      
                       +        advanced->addAction(multiSigAction);
                      
                       +        toolbar->addAction(multiSigAction);
                      
                       +    multiSigAction->setEnabled(enabled);
                      
                       +void BitcoinGUI::gotoMultiSigPage()
                       +{
                       +		multiSigAction->setChecked(true);
                       +    if (walletFrame) walletFrame->gotoMultiSigPage();
                       +}
                       +
                      

                      Code added

                      1 Reply Last reply Reply Quote 0
                      • wrapper
                        wrapper Moderators last edited by

                        Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                        Add Multisgin Page : - commit

                        https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                        Include a multi-signature address Page

                        src/qt/bitcoingui.h

                         +    QAction *multiSigAction;
                        

                        Code added

                         +    /** Switch to MultiSig page */
                         +    void gotoMultiSigPage();
                         +    
                        

                        Code replaced

                        1 Reply Last reply Reply Quote 0
                        • wrapper
                          wrapper Moderators last edited by

                          Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                          Add Multisgin Page : - commit

                          https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                          Include a multi-signature address Page

                          src/qt/createmultisigaddrdialog.cpp

                          New file Large amount of new code, 298 lines

                           +#include "createmultisigaddrdialog.h"
                           +#include "ui_createmultisigaddrdialog.h"
                           +
                           +#include "addresstablemodel.h"
                           +#include "guiutil.h"
                           +
                           +#include "wallet.h"
                           +#include "base58.h"
                           +#include "init.h"
                           +#include "util.h"
                           +
                           +#include "json/json_spirit.h"
                           +#include "json/json_spirit_reader_template.h"
                           +#include "json/json_spirit_writer_template.h"
                           +using namespace json_spirit;
                           +
                           +#include <QSortFilterProxyModel>
                           +#include <QClipboard>
                           +#include <QMessageBox>
                           +#include <QMenu>
                           +#include <QTextDocument>
                           +#include <QScrollBar>
                           +#include <QFile>
                           +#include <QTextStream>
                           +#include <QDataWidgetMapper>
                           +
                           +CreateMultiSigAddrDialog::CreateMultiSigAddrDialog(QWidget *parent) :
                           +    QDialog(parent),
                           +    ui(new Ui::CreateMultiSigAddrDialog)
                           +{
                           +    ui->setupUi(this);
                           +
                           +    connect(ui->btnCreate, SIGNAL(clicked()), this, SLOT(create()));
                           +    connect(ui->btnCancel, SIGNAL(clicked()), this, SLOT(cancel()));
                           +
                           +    ui->comboBoxRequire->addItem(QString("1"), QVariant(1));
                           +    ui->comboBoxRequire->addItem(QString("2"), QVariant(2));
                           +    ui->comboBoxRequire->addItem(QString("3"), QVariant(3));
                           +    ui->comboBoxRequire->setCurrentIndex(1);
                           +    
                           +    ui->comboBoxTotal->addItem(QString("2"), QVariant(2));
                           +    ui->comboBoxTotal->addItem(QString("3"), QVariant(3));
                           +    ui->comboBoxTotal->setCurrentIndex(0);
                           +    currentPubkeyNum = 2;
                           +    connect(ui->comboBoxTotal, SIGNAL(currentIndexChanged(int)), this, SLOT(handleSelectionChanged(int)));
                          

                          Start of new file code added

                          1 Reply Last reply Reply Quote 0
                          • wrapper
                            wrapper Moderators last edited by

                            Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                            Add Multisgin Page : - commit

                            https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                            Include a multi-signature address Page

                            src/qt/createmultisigaddrdialog.h

                            New file 40 lines code

                              +#ifndef CREATEMULTISIGADDRESSDIALOG_H
                             +#define CREATEMULTISIGADDRESSDIALOG_H
                             +
                             +#include <QDialog>
                             +
                             +QT_BEGIN_NAMESPACE
                             +class QLabel;
                             +QT_END_NAMESPACE
                             +
                             +namespace Ui {
                             +    class CreateMultiSigAddrDialog;
                             +}
                             +
                             +/** Dialog for editing an address and associated information.
                             + */
                             +class CreateMultiSigAddrDialog : public QDialog
                             +{
                             +    Q_OBJECT
                             +
                             +public:
                             +    explicit CreateMultiSigAddrDialog(QWidget *parent = 0);
                             +    ~CreateMultiSigAddrDialog();
                             +
                             +public slots:
                             +    void create();
                             +    void cancel();
                             +    void handleSelectionChanged(int idx);
                             +    void onTextChanged0(const QString & text);
                             +    void onTextChanged1(const QString & text);
                             +    void onTextChanged2(const QString & text);
                             +    void importAddress();
                             +    void updatePromptText();
                             +
                             +private:
                             +    Ui::CreateMultiSigAddrDialog *ui;
                             +    int currentPubkeyNum;
                             +    void onTextChanged(QLabel* label, const QString & text);
                             +};
                             +
                             +#endif // CREATEMULTISIGADDRESSDIALOG_H
                            

                            Code added new file

                            1 Reply Last reply Reply Quote 0
                            • wrapper
                              wrapper Moderators last edited by wrapper

                              Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                              Add Multisgin Page : - commit

                              https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                              Include a multi-signature address Page

                              src/qt/editaddressdialog.cpp

                               +                tr("The entered address \"%1\" is not a valid Feathercoin address.").arg(ui->addressEdit->text()),
                              

                              Name change to Feathercoin

                              1 Reply Last reply Reply Quote 0
                              • wrapper
                                wrapper Moderators last edited by

                                Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                Add Multisgin Page : - commit

                                https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                                Include a multi-signature address Page

                                src/qt/feathercoin.qrc

                                 +        <file alias="multisig">res/icons/multisig.png</file>
                                

                                Code added

                                1 Reply Last reply Reply Quote 0
                                • wrapper
                                  wrapper Moderators last edited by

                                  Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                  Add Multisgin Page : - commit

                                  https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                                  Include a multi-signature address Page

                                  src/qt/forms/addressbookpage.ui

                                  Amount of ui changes

                                   +        <string>&amp;New Address</string>
                                   +       </property>
                                   +       <property name="icon">
                                   +        <iconset resource="../feathercoin.qrc">
                                   +         <normaloff>:/icons/add</normaloff>:/icons/add</iconset>
                                   +       </property>
                                   +      </widget>
                                   +     </item>
                                   +     <item>
                                   +      <widget class="QPushButton" name="newMultiSigAddress">
                                   +       <property name="text">
                                   +        <string>New MultiSig</string>
                                  

                                  Example code replaced

                                   +      <widget class="QPushButton" name="signMessage">
                                   +       <property name="toolTip">
                                   +        <string>Sign a message to prove you own a FTC address</string>
                                   +       </property>
                                   +       <property name="text">
                                   +        <string>Sign &amp;Message</string>
                                   +       </property>
                                   +       <property name="icon">
                                   +        <iconset resource="../feathercoin.qrc">
                                   +         <normaloff>:/icons/edit</normaloff>:/icons/edit</iconset>
                                   +       </property>
                                   +      </widget>
                                   +     </item>
                                   +     <item>
                                   +      <widget class="QPushButton" name="verifyMessage">
                                   +       <property name="toolTip">
                                   +        <string>Verify a message to ensure it was signed with a specified FTC address</string>
                                   +       </property>
                                   +       <property name="text">
                                   +        <string>&amp;Verify Message</string>
                                   +       </property>
                                   +       <property name="icon">
                                   +        <iconset resource="../feathercoin.qrc">
                                   +         <normaloff>:/icons/transaction_0</normaloff>:/icons/transaction_0</iconset>
                                   +       </property>
                                   +      </widget>
                                   +     </item>
                                   +     <item>
                                  

                                  Code replaced

                                  1 Reply Last reply Reply Quote 0
                                  • wrapper
                                    wrapper Moderators last edited by

                                    Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                    Add Multisgin Page : - commit

                                    https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                                    Include a multi-signature address Page

                                    src/qt/forms/createmultisigaddrdialog.ui

                                    Large new file, 159 lines of code

                                     +<?xml version="1.0" encoding="UTF-8"?>
                                     +<ui version="4.0">
                                     + <class>CreateMultiSigAddrDialog</class>
                                     + <widget class="QDialog" name="CreateMultiSigAddrDialog">
                                     +  <property name="geometry">
                                     +   <rect>
                                     +    <x>0</x>
                                     +    <y>0</y>
                                     +    <width>506</width>
                                     +    <height>209</height>
                                     +   </rect>
                                     +  </property>
                                     +  <property name="windowTitle">
                                     +   <string>Create MultiSig Address</string>
                                     +  </property>
                                     +  <layout class="QVBoxLayout" name="verticalLayout">
                                     +   <item>
                                     +    <layout class="QVBoxLayout" name="verticalLayout_3">
                                     +     <item>
                                     +      <widget class="QLabel" name="label0">
                                     +       <property name="text">
                                     +        <string>PublicKey</string>
                                     +       </property>
                                     +      </widget>
                                     +     </item>
                                    

                                    Example new code

                                    1 Reply Last reply Reply Quote 0
                                    • wrapper
                                      wrapper Moderators last edited by

                                      Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                      Add Multisgin Page : - commit

                                      https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                                      Include a multi-signature address Page

                                      src/qt/forms/multisigdialog.ui

                                      New file, 729 lines of code

                                       +<?xml version="1.0" encoding="UTF-8"?>
                                       +<ui version="4.0">
                                       + <class>MultiSigDialog</class>
                                       + <widget class="QDialog" name="MultiSigDialog">
                                       +  <property name="geometry">
                                       +   <rect>
                                       +    <x>0</x>
                                       +    <y>0</y>
                                       +    <width>850</width>
                                       +    <height>400</height>
                                       +   </rect>
                                       +  </property>
                                       +  <property name="windowTitle">
                                       +   <string>Send Coins</string>
                                       +  </property>
                                       +  <layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,0">
                                       +   <property name="bottomMargin">
                                       +    <number>8</number>
                                       +   </property>
                                       +   <item>
                                       +    <widget class="QFrame" name="frameCoinControl">
                                      

                                      Code added

                                      1 Reply Last reply Reply Quote 0
                                      • wrapper
                                        wrapper Moderators last edited by

                                        Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                        Add Multisgin Page : - commit

                                        https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                                        Include a multi-signature address Page

                                        src/qt/guiutil.cpp

                                         +QString getLoadFileName(QWidget *parent, const QString &caption,
                                         +                                 const QString &dir,
                                         +                                 const QString &filter,
                                         +                                 QString *selectedSuffixOut)
                                         +{
                                         +    QString selectedFilter;
                                         +    QString myDir;
                                         +    if(dir.isEmpty()) // Default to user documents location
                                         +    {
                                         +#if QT_VERSION < 0x050000
                                         +        myDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
                                         +#else
                                         +        myDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
                                         +#endif
                                         +    }
                                         +    else
                                         +    {
                                         +        myDir = dir;
                                         +    }
                                         +    QString result = QFileDialog::getOpenFileName(parent, caption, myDir, filter, &selectedFilter);
                                         +
                                         +    /* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...) */
                                         +    QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]");
                                         +    QString selectedSuffix;
                                         +    if(filter_re.exactMatch(selectedFilter))
                                         +    {
                                         +        selectedSuffix = filter_re.cap(1);
                                         +    }
                                         +
                                         +    /* Add suffix if needed */
                                         +    QFileInfo info(result);
                                         +    if(!result.isEmpty())
                                         +    {
                                         +        if(info.suffix().isEmpty() && !selectedSuffix.isEmpty())
                                         +        {
                                         +            /* No suffix specified, add selected suffix */
                                         +            if(!result.endsWith("."))
                                         +                result.append(".");
                                         +            result.append(selectedSuffix);
                                         +        }
                                         +    }
                                         +
                                         +    /* Return selected suffix if asked to */
                                         +    if(selectedSuffixOut)
                                         +    {
                                         +        *selectedSuffixOut = selectedSuffix;
                                         +    }
                                         +    return result;
                                         +}
                                         +
                                        

                                        Code added

                                        1 Reply Last reply Reply Quote 0
                                        • wrapper
                                          wrapper Moderators last edited by

                                          Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                          Add Multisgin Page : - commit

                                          https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                                          Include a multi-signature address Page

                                          src/qt/guiutil.h

                                           +    QString getLoadFileName(QWidget *parent=0, const QString &caption=QString(),
                                           +                                   const QString &dir=QString(), const QString &filter=QString(),
                                           +                                   QString *selectedSuffixOut=0);
                                          

                                          Code added

                                          1 Reply Last reply Reply Quote 0
                                          • wrapper
                                            wrapper Moderators last edited by

                                            Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                            Add Multisgin Page : - commit

                                            https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

                                            Include a multi-signature address Page

                                            src/qt/locale/bitcoin_zh_CN.ts

                                            Translation file

                                             +        <source>&amp;New Address</source>
                                             +        <translation>新建(&amp;N)地址</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>New MultiSig</source>
                                             +        <translation>新建多重签名</translation>
                                            

                                            Code replaced

                                             +    <message>
                                             +        <source>Sign &amp;Message</source>
                                             +        <translation>消息签名(&amp;M)</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>&amp;Verify Message</source>
                                             +        <translation>验证消息(&amp;V)</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Copy &amp;Public Key</source>
                                             +        <translation>复制公匙(&amp;P)</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Copy Private Key</source>
                                             +        <translation>复制私匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Export MultiSig Address</source>
                                             +        <translation>导出多重签名地址</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Address "%1" doesn't have public key </source>
                                             +        <translation>%1在地址簿中不存在公匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Address "%1" doesn't have private key </source>
                                             +        <translation>%1在地址簿中不存在死匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Save MultiSig Address</source>
                                             +        <translation>保存多重签名地址</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Could not write to file %1.</source>
                                             +        <translation>不能写入文件%1</translation>
                                             +    </message>
                                            

                                            Code added

                                             +    <name>CreateMultiSigAddrDialog</name>
                                             +    <message>
                                             +        <source>Create MultiSig Address</source>
                                             +        <translation>创建多重签名地址</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>PublicKey</source>
                                             +        <translation>公匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>You need y keys to create a x-of-y Multisig address</source>
                                             +        <translation>你需要创建多重签名地址的签名组合</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Require</source>
                                             +        <translation>满足</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>of</source>
                                             +        <translation>总数</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Import</source>
                                             +        <translation>导入</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Create</source>
                                             +        <translation>创建</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Cancel</source>
                                             +        <translation>取消</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>All public keys belong to this wallet!</source>
                                             +        <translation>所有的公私属于这个钱包!</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>You need </source>
                                             +        <translation>你需要</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source> keys to create a </source>
                                             +        <translation>把钥匙创建一个满足</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>-of-</source>
                                             +        <translation>总共</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source> MultiSig address</source>
                                             +        <translation>的多重签名地址</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Load MultiSig Address</source>
                                             +        <translation>加载多重签名地址</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Invalid public key  "%1" </source>
                                             +        <translation>不可用的公匙%1</translation>
                                             +    </message>
                                             +</context>   
                                             +<context>
                                             +    <name>MultiSigDialog</name>
                                             +    <message>
                                             +        <source>Total balance:</source>
                                             +        <translation>总额:</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>    Addresses:</source>
                                             +        <translation>    地址:</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Address</source>
                                             +        <translation>地址</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Available: </source>
                                             +        <translation>可用:</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Require 0 of 0 signatures</source>
                                             +        <translation>要求签名数量满足条件</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Import Raw Tx</source>
                                             +        <translation>导入交易</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Export Raw Tx</source>
                                             +        <translation>导出交易</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Unsigned</source>
                                             +        <translation>未签名</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Signed</source>
                                             +        <translation>签名</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Add &amp;Recipient</source>
                                             +        <translation>添加收款人</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Clear &amp;All</source>
                                             +        <translation>全部清除</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>S&amp;end</source>
                                             +        <translation>发送</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Send Coins</source>
                                             +        <translation>支付硬币</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Confirm send coins</source>
                                             +        <translation>确认支付</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Are you sure you want to send %1?</source>
                                             +        <translation>你确定要支付%1个币吗?</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source> and </source>
                                             +        <translation>和</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Load Feathercoin Transaction</source>
                                             +        <translation>加载羽毛币交易</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Feathercoin transaction file (*.ftc)</source>
                                             +        <translation>羽毛币交易文件(*.ftc)</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Save Feathercoin Transaction</source>
                                             +        <translation>保存羽毛币交易</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Error exporting</source>
                                             +        <translation>导出错误</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Could not write to file %1.</source>
                                             +        <translation>不能写入文件%1。</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Require </source>
                                             +        <translation>满足 </translation>
                                             +    </message>
                                             +    <message>
                                             +        <source> of </source>
                                             +        <translation> 总共 </translation>
                                             +    </message>
                                             +    <message>
                                             +        <source> signatures </source>
                                             +        <translation> 签名 </translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>The recipient address is not valid, please recheck.</source>
                                             +        <translation>收款人地址不合法,请检查。</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>The amount to pay must be larger than 0.</source>
                                             +        <translation>支付金额必须大于0。</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>The amount exceeds your balance.</source>
                                             +        <translation>金额超出您的账上余额。</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>The total exceeds your balance when the %1 transaction fee is included.</source>
                                             +        <translation>计入 %1 交易费后的金额超出您的账上余额。</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Duplicate address found, can only send to each address once per send operation.</source>
                                             +        <translation>发现重复的地址, 每次只能对同一地址发送一次。</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Transaction creation failed!</source>
                                             +        <translation>交易创建失败!</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
                                             +        <translation>错误:该交易被拒绝!发生这种错误的原因可能是:钱包中的羽毛币已经被用掉,有可能您复制了wallet.dat钱包文件,然后用复制的钱包文件支付了羽毛币,但是这个钱包文件中没有记录。</translation>
                                             +    </message>
                                             +</context>
                                             +<context>
                                            

                                            Code added

                                             +        <source>Get my account report</source>
                                             +        <translation>查看我的账户报表</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Manage MultiSig transactions</source>
                                             +        <translation>管理多重签名交易</translation>
                                             +    </message>
                                             +    <message>
                                            

                                            Code added

                                             +        <source>&amp;MultiSig</source>
                                             +        <translation>重签签名</translation>
                                             +    </message>
                                             +    <message>
                                            

                                            Code added

                                             +        <source>Address "%1" doesn't have public key </source>
                                             +        <translation>地址“%1”公匙不存在于地址簿中</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Address "%1" doesn't have private key </source>
                                             +        <translation>地址“%1”私匙不存在于地址簿中</translation>
                                             +    </message>
                                             +    <message>
                                            

                                            Code added

                                             +    <message>
                                             +        <source>Public Key</source>
                                             +        <translation>公匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Private Key</source>
                                             +        <translation>私匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Scan Pubkey</source>
                                             +        <translation>扫描公匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Scan Secret</source>
                                             +        <translation>扫描私匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Spend Pubkey</source>
                                             +        <translation>发送公匙</translation>
                                             +    </message>
                                             +    <message>
                                             +        <source>Spend Secret</source>
                                             +        <translation>发送私匙</translation>
                                             +    </message>
                                            

                                            Code added

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post