Ejemplo n.º 1
0
 def create_menu(self, position):
     menu = QMenu()
     selected = self.selectedItems()
     multi_select = len(selected) > 1
     if not selected:
         menu.addAction(_("Add Token"),
                        lambda: self.parent.token_add_dialog())
     elif not multi_select:
         item = selected[0]
         name = item.text(0)
         bind_addr = item.text(1)
         contract_addr = item.data(0, Qt.UserRole)
         key = '{}_{}'.format(contract_addr, bind_addr)
         token = self.parent.tokens.get(key, None)
         column = self.currentColumn()
         column_title = self.headerItem().text(column)
         column_data = '\n'.join([item.text(column) for item in selected])
         menu.addAction(
             _("Copy %s") % column_title,
             lambda: self.parent.app.clipboard().setText(column_data))
         menu.addAction(_("View Info"),
                        lambda: self.parent.token_view_dialog(token))
         menu.addAction(_("Send"),
                        lambda: self.parent.token_send_dialog(token))
         menu.addAction(_("Delete"), lambda: self.parent.delete_token(key))
         URL = block_explorer_URL(self.config, {
             'addr': bind_addr,
             'token': contract_addr
         })
         if URL:
             menu.addAction(_("View on block explorer"),
                            lambda: open_browser(URL))
     run_hook('create_tokens_menu', menu, selected)
     menu.exec_(self.viewport().mapToGlobal(position))
Ejemplo n.º 2
0
    def create_menu(self, position):
        self.selectedIndexes()
        item = self.currentItem()
        if not item:
            return
        column = self.currentColumn()
        tx_hash = item.data(0, Qt.UserRole)
        if not tx_hash:
            return
        tx = self.wallet.transactions.get(tx_hash)
        if not tx:
            return
        if column is 0:
            column_title = "ID"
            column_data = tx_hash
        else:
            column_title = self.headerItem().text(column)
            column_data = item.text(column)

        tx_URL = block_explorer_URL(self.config, {'tx': tx_hash})
        height = self.wallet.get_tx_height(tx_hash).height
        is_relevant, is_mine, v, fee = self.wallet.get_wallet_delta(tx)
        is_unconfirmed = height <= 0
        pr_key = self.wallet.invoices.paid.get(tx_hash)

        menu = QMenu()
        if height == TX_HEIGHT_LOCAL:
            menu.addAction(_("Remove"), lambda: self.remove_local_tx(tx_hash))

        menu.addAction(
            _("Copy %s") % column_title,
            lambda: self.parent.app.clipboard().setText(column_data))
        if column in self.editable_columns:
            menu.addAction(
                _("Edit %s") % column_title,
                lambda: self.editItem(item, column))

        menu.addAction(_("Details"), lambda: self.parent.show_transaction(tx))
        if is_unconfirmed and tx:
            # note: the current implementation of RBF *needs* the old tx fee
            rbf = is_mine and not tx.is_final() and fee is not None
            if rbf:
                menu.addAction(_("Increase fee"),
                               lambda: self.parent.bump_fee_dialog(tx))
            else:
                child_tx = self.wallet.cpfp(tx, 0)
                if child_tx:
                    menu.addAction(_("Child pays for parent"),
                                   lambda: self.parent.cpfp(tx, child_tx))
        if pr_key:
            menu.addAction(read_QIcon("seal"), _("View invoice"),
                           lambda: self.parent.show_invoice(pr_key))
        if tx_URL:
            menu.addAction(_("View on block explorer"),
                           lambda: open_browser(tx_URL))

        menu.addAction(_("Copy raw transaction"),
                       lambda: self.parent.app.clipboard().setText(str(tx)))

        menu.exec_(self.viewport().mapToGlobal(position))
 def create_menu(self, position):
     menu = QMenu()
     selected = self.selectedItems()
     multi_select = len(selected) > 1
     if not selected:
         menu.addAction(_("Add contract"),
                        lambda: self.parent.contract_add_dialog())
         menu.addAction(_("Create contract"),
                        lambda: self.parent.contract_create_dialog())
     elif not multi_select:
         item = selected[0]
         name = item.text(0)
         address = item.text(1)
         column = self.currentColumn()
         column_title = self.headerItem().text(column)
         column_data = '\n'.join([item.text(column) for item in selected])
         menu.addAction(
             _("Copy %s") % column_title,
             lambda: self.parent.app.clipboard().setText(column_data))
         menu.addAction(_("Edit"),
                        lambda: self.parent.contract_edit_dialog(address))
         menu.addAction(_("Function"),
                        lambda: self.parent.contract_func_dialog(address))
         menu.addAction(_("Delete"),
                        lambda: self.parent.delete_samart_contact(address))
         URL = block_explorer_URL(self.config, {'contract': address})
         if URL:
             menu.addAction(_("View on block explorer"),
                            lambda: open_browser(URL))
     run_hook('create_smart_contract_menu', menu, selected)
     menu.exec_(self.viewport().mapToGlobal(position))
Ejemplo n.º 4
0
    def create_menu(self, position):
        from qtum_electrum.wallet import Multisig_Wallet
        is_multisig = isinstance(self.wallet, Multisig_Wallet)
        can_delete = self.wallet.can_delete_address()
        selected = self.selectedItems()
        multi_select = len(selected) > 1
        addrs = [item.text(0) for item in selected]
        if not addrs:
            return
        if not multi_select:
            item = self.itemAt(position)
            col = self.currentColumn()
            if not item:
                return
            addr = addrs[0]
            if not is_address(addr):
                item.setExpanded(not item.isExpanded())
                return

        menu = QMenu()
        if not multi_select:
            column_title = self.headerItem().text(col)
            menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(item.text(col)))
            menu.addAction(_('Details'), lambda: self.parent.show_address(addr))
            if col in self.editable_columns:
                menu.addAction(_("Edit %s")%column_title, lambda: self.editItem(item, col))
            menu.addAction(_("Request payment"), lambda: self.parent.receive_at(addr))
            if self.wallet.can_export():
                menu.addAction(_("Private key"), lambda: self.parent.show_private_key(addr))
            if not is_multisig and not self.wallet.is_watching_only():
                menu.addAction(_("Sign/verify message"), lambda: self.parent.sign_verify_message(addr))
                menu.addAction(_("Encrypt/decrypt message"), lambda: self.parent.encrypt_message(addr))
            if can_delete:
                menu.addAction(_("Remove from wallet"), lambda: self.parent.remove_address(addr))
            addr_URL = block_explorer_URL(self.config, 'addr', addr)
            if addr_URL:
                menu.addAction(_("View on block explorer"), lambda: open_browser(addr_URL))

            if not self.wallet.is_frozen(addr):
                menu.addAction(_("Freeze"), lambda: self.parent.set_frozen_state([addr], True))
            else:
                menu.addAction(_("Unfreeze"), lambda: self.parent.set_frozen_state([addr], False))

        coins = self.wallet.get_utxos(addrs)
        if coins:
            menu.addAction(_("Spend from"), lambda: self.parent.spend_coins(coins))

        run_hook('receive_menu', menu, addrs, self.wallet)
        menu.exec_(self.viewport().mapToGlobal(position))
Ejemplo n.º 5
0
 def create_menu(self, position):
     menu = QMenu()
     selected = self.selectedItems()
     multi_select = len(selected) > 1
     if not selected:
         pass
     elif not multi_select:
         item = selected[0]
         txid = item.data(0, Qt.UserRole)
         column = self.currentColumn()
         column_title = self.headerItem().text(column)
         column_data = '\n'.join([item.text(column) for item in selected])
         menu.addAction(_("Copy %s") % column_title, lambda: self.parent.app.clipboard().setText(column_data))
         menu.addAction(_("Copy Transaction ID"), lambda: self.parent.app.clipboard().setText(txid))
         URL = block_explorer_URL(self.config, {'tx': txid})
         if URL:
             menu.addAction(_("View on block explorer"), lambda: open_browser(URL))
     run_hook('create_token_hist_menu', menu, selected)
     menu.exec_(self.viewport().mapToGlobal(position))