diff --git a/content/_code-samples/quickstart/py/lesson7-batch-minting.py b/content/_code-samples/quickstart/py/lesson7-batch-minting.py new file mode 100644 index 0000000000..f9d2d154fa --- /dev/null +++ b/content/_code-samples/quickstart/py/lesson7-batch-minting.py @@ -0,0 +1,127 @@ +import tkinter as tk +import xrpl +import json + +from mod1 import get_account, get_account_info +from mod7 import batch_mint, get_batch + +############################################# +## Handlers ################################# +############################################# + +# Module 7 Handlers + +def standby_batch_mint(): + results = batch_mint( + ent_standby_seed.get(), + ent_standby_uri.get(), + ent_standby_flags.get(), + ent_standby_transfer_fee.get(), + ent_standby_taxon.get(), + ent_standby_nft_count.get() + ) + text_standby_results.delete("1.0", tk.END) + text_standby_results.insert("1.0", json.dumps(results, indent=4)) + +def standby_get_batch_nfts(): + results = get_batch( + ent_standby_seed.get(), + ent_standby_account.get() + ) + text_standby_results.delete("1.0", tk.END) + text_standby_results.insert("1.0", json.dumps(results, indent=4)) + +# Module 1 Handlers +def get_standby_account(): + new_wallet = get_account(ent_standby_seed.get()) + ent_standby_account.delete(0, tk.END) + ent_standby_seed.delete(0, tk.END) + ent_standby_account.insert(0, new_wallet.classic_address) + ent_standby_seed.insert(0, new_wallet.seed) + + +def get_standby_account_info(): + accountInfo = get_account_info(ent_standby_account.get()) + ent_standby_balance.delete(0, tk.END) + ent_standby_balance.insert(0,accountInfo['Balance']) + text_standby_results.delete("1.0", tk.END) + text_standby_results.insert("1.0",json.dumps(accountInfo, indent=4)) + + +# Create a new window with the title "Quickstart - Batch Minting" +window = tk.Tk() +window.title("Quickstart - Batch Minting") + +# Form frame +frm_form = tk.Frame(relief=tk.SUNKEN, borderwidth=3) +frm_form.pack() + +# Create the Label and Entry widgets for "Standby Account" +lbl_standy_seed = tk.Label(master=frm_form, text="Standby Seed") +ent_standby_seed = tk.Entry(master=frm_form, width=50) +lbl_standby_account = tk.Label(master=frm_form, text="Standby Account") +ent_standby_account = tk.Entry(master=frm_form, width=50) +lbl_standby_balance = tk.Label(master=frm_form, text="XRP Balance") +ent_standby_balance = tk.Entry(master=frm_form, width=50) +lbl_standby_uri = tk.Label(master=frm_form, text="NFT URI") +ent_standby_uri = tk.Entry(master=frm_form, width=50) +lbl_standby_flags = tk.Label(master=frm_form, text="Flags") +ent_standby_flags = tk.Entry(master=frm_form, width=50) +lbl_standby_transfer_fee = tk.Label(master=frm_form, text="Transfer Fee") +ent_standby_transfer_fee = tk.Entry(master=frm_form, width="50") +lbl_standby_taxon = tk.Label(master=frm_form, text="Taxon") +ent_standby_taxon = tk.Entry(master=frm_form, width="50") +lbl_standby_nft_id = tk.Label(master=frm_form, text="NFT ID") +ent_standby_nft_id = tk.Entry(master=frm_form, width="50") +lbl_standby_nft_offer_index = tk.Label(master=frm_form, text="NFT Offer Index") +ent_standby_nft_offer_index = tk.Entry(master=frm_form, width="50") +lbl_standby_nft_count = tk.Label(master=frm_form, text="NFT Count") +ent_standby_nft_count = tk.Entry(master=frm_form, width="50") +lbl_standby_results = tk.Label(master=frm_form,text="Results") +text_standby_results = tk.Text(master=frm_form, height = 20, width = 65) + + + +# Place field in a grid. +lbl_standy_seed.grid(row=0, column=0, sticky="w") +ent_standby_seed.grid(row=0, column=1) +lbl_standby_account.grid(row=2, column=0, sticky="e") +ent_standby_account.grid(row=2, column=1) +lbl_standby_balance.grid(row=5, column=0, sticky="e") +ent_standby_balance.grid(row=5, column=1) +lbl_standby_uri.grid(row=8, column=0, sticky="e") +ent_standby_uri.grid(row=8, column=1, sticky="w") +lbl_standby_flags.grid(row=9, column=0, sticky="e") +ent_standby_flags.grid(row=9, column=1, sticky="w") +lbl_standby_transfer_fee.grid(row=10, column=0, sticky="e") +ent_standby_transfer_fee.grid(row=10, column=1, sticky="w") +lbl_standby_taxon.grid(row=11, column=0, sticky="e") +ent_standby_taxon.grid(row=11, column=1, sticky="w") +lbl_standby_nft_count.grid(row=12, column=0, sticky="e") +ent_standby_nft_count.grid(row=12, column=1, sticky="w") +lbl_standby_results.grid(row=13, column=1, sticky="ne") +text_standby_results.grid(row=13, column=2, sticky="nw") + +############################################# +## Buttons ################################## +############################################# + +# Create the Standby Account Buttons +btn_get_standby_account = tk.Button(master=frm_form, text="Get Standby Account", + command = get_standby_account) +btn_get_standby_account.grid(row=0, column=2, sticky = "nsew") +btn_get_standby_account_info = tk.Button(master=frm_form, + text="Get Standby Account Info", + command = get_standby_account_info) +btn_get_standby_account_info.grid(row=1, column=2, sticky = "nsew") +btn_standby_batch_mint = tk.Button(master=frm_form, + text="Batch Mint", + command = standby_batch_mint) +btn_standby_batch_mint.grid(row=5, column=2, sticky = "nsew") +btn_standby_get_batch_nfts = tk.Button(master=frm_form, + text="Get Batch NFTs", + command = standby_get_batch_nfts) +btn_standby_get_batch_nfts.grid(row=8, column=2, sticky = "nsew") + +# Start the application +window.mainloop() diff --git a/content/tutorials/quickstart/py-batch-minting.md b/content/tutorials/quickstart/py-batch-minting.md index 47b3f7029f..5aa4f01369 100644 --- a/content/tutorials/quickstart/py-batch-minting.md +++ b/content/tutorials/quickstart/py-batch-minting.md @@ -1,6 +1,6 @@ --- html: py-batch-minting.html -parent: quickstart-python.html +parent: nfts-using-python.html blurb: Mint multiple NFTs with the press of a button. labels: - Accounts @@ -28,20 +28,26 @@ You can download or clone the [Quickstart Samples](https://github.com/XRPLF/xrpl 1. If you want to use an existing account seed: 1. Paste the account seed in the **Standby Seed** field. 2. Click **Get Standby Account**. - 2. If you do not want to use an existing account seed, click **Get Standby Account**. + 2. If you do not want to use an existing account seed, just click **Get Standby Account**. +3. Click **Get Standby Account Info** to get the current XRP balance. ## Batch Mint NFTs +
+ +
+ This example lets you mint multiple NFTs for a single unique item. The NFT might represent "prints" of an original artwork, tickets to an event, or another limited set of unique items. To batch mint non-fungible token objects: -1. Set the **Flags** field. For testing purposes, we recommend setting the value to _8_. This sets the _tsTransferable_ flag, meaning that the NFT object can be transferred to another account. Otherwise, the NFT object can only be transferred back to the issuing account. See [NFTokenMint](nftokenmint.html) for available NFT minting flags. -2. Enter the **NFT URI**. This is a URI that points to the data or metadata associated with the NFT object. You can use the sample URI provided if you do not have one of your own. -3. Enter an **NFT Count** of up to 200 NFTs to create in one batch. -4. Enter the **Transfer Fee**, a percentage of the proceeds that the original creator receives from future sales of the NFT. This is a value of 0-50000 inclusive, allowing transfer fees between 0.000% and 50.000% in increments of 0.001%. If you do not set the **Flags** field to allow the NFT to be transferrable, set this field to 0. -5. Click **Batch Mint NFTs**. +1. Enter the **NFT URI**. This is a URI that points to the data or metadata associated with the NFT object. You can use this sample URI if you do not have one of your own: ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf4dfuylqabf3oclgtqy55fbzdi. +2. Set the **Flags** field. For testing purposes, we recommend setting the value to _8_. This sets the _tsTransferable_ flag, meaning that the NFT object can be transferred to another account. Otherwise, the NFT object can only be transferred back to the issuing account. See [NFTokenMint](nftokenmint.html) for available NFT minting flags. +3. Enter the **Transfer Fee**, a percentage of the proceeds that the original creator receives from future sales of the NFT. This is a value of 0-50000 inclusive, allowing transfer fees between 0.000% and 50.000% in increments of 0.001%. If you do not set the **Flags** field to allow the NFT to be transferrable, set this field to 0. +4. Enter the **Taxon** for the NFT. If you do not have a need for the Taxon field, set this value to 0. +5. Enter an **NFT Count** of up to 200 NFTs to create in one batch. +6. Click **Batch Mint NFTs**. ## Get Batch NFTs @@ -235,11 +241,7 @@ import tkinter as tk import xrpl import json -from mod1 import get_account, get_account_info, send_xrp -from mod2 import ( - get_balance, - configure_account, -) +from mod1 import get_account, get_account_info ``` Import dependencies from `mod7.py`. @@ -265,17 +267,11 @@ def batch_mint_nfts(): text_standby_results.delete("1.0", tk.END) text_standby_results.insert("1.0", json.dumps(results, indent=4)) -def get_batch_nfts(): - results = get_batch(ent_standby_seed.get(), ent_standby_account.get()) - text_standby_results.delete("1.0", tk.END) - text_standby_results.insert("1.0",json.dumps(results, indent=4)) - -# Module 2 Handlers - -def standby_configure_account(): - results = configure_account( +def standby_get_batch_nfts(): + results = get_batch( ent_standby_seed.get(), - standbyRippling) + ent_standby_account.get() + ) text_standby_results.delete("1.0", tk.END) text_standby_results.insert("1.0", json.dumps(results, indent=4)) @@ -298,12 +294,10 @@ def get_standby_account_info(): Rename the window for Module 7. ```python -# Create a new window with the title "Quickstart Module 7" +# Create a new window with the title "Python Module - Batch Minting" window = tk.Tk() -window.title("Quickstart Module 7") +window.title("Python Module - Batch Minting") -standbyRippling = tk.BooleanVar() -operationalRippling = tk.BooleanVar() # Form frame @@ -315,11 +309,8 @@ lbl_standy_seed = tk.Label(master=frm_form, text="Standby Seed") ent_standby_seed = tk.Entry(master=frm_form, width=50) lbl_standby_account = tk.Label(master=frm_form, text="Standby Account") ent_standby_account = tk.Entry(master=frm_form, width=50) -lbl_standy_amount = tk.Label(master=frm_form, text="Amount") -ent_standby_amount = tk.Entry(master=frm_form, width=50) lbl_standby_balance = tk.Label(master=frm_form, text="XRP Balance") ent_standby_balance = tk.Entry(master=frm_form, width=50) -cb_standby_allow_rippling = tk.Checkbutton(master=frm_form, text="Allow Rippling", variable=standbyRippling, onvalue=True, offvalue=False) lbl_standby_uri = tk.Label(master=frm_form, text="NFT URI") ent_standby_uri = tk.Entry(master=frm_form, width=50) lbl_standby_flags = tk.Label(master=frm_form, text="Flags") @@ -330,6 +321,8 @@ lbl_standby_taxon = tk.Label(master=frm_form, text="Taxon") ent_standby_taxon = tk.Entry(master=frm_form, width="50") lbl_standby_nft_id = tk.Label(master=frm_form, text="NFT ID") ent_standby_nft_id = tk.Entry(master=frm_form, width="50") +lbl_standby_nft_offer_index = tk.Label(master=frm_form, text="NFT Offer Index") +ent_standby_nft_offer_index = tk.Entry(master=frm_form, width="50") ``` Add the **NFT Count** field for batch minting. @@ -345,11 +338,8 @@ lbl_standy_seed.grid(row=0, column=0, sticky="w") ent_standby_seed.grid(row=0, column=1) lbl_standby_account.grid(row=2, column=0, sticky="e") ent_standby_account.grid(row=2, column=1) -lbl_standy_amount.grid(row=3, column=0, sticky="e") -ent_standby_amount.grid(row=3, column=1) lbl_standby_balance.grid(row=5, column=0, sticky="e") ent_standby_balance.grid(row=5, column=1) -cb_standby_allow_rippling.grid(row=7,column=1, sticky="w") lbl_standby_uri.grid(row=8, column=0, sticky="e") ent_standby_uri.grid(row=8, column=1, sticky="w") lbl_standby_flags.grid(row=9, column=0, sticky="e") @@ -358,8 +348,6 @@ lbl_standby_transfer_fee.grid(row=10, column=0, sticky="e") ent_standby_transfer_fee.grid(row=10, column=1, sticky="w") lbl_standby_taxon.grid(row=11, column=0, sticky="e") ent_standby_taxon.grid(row=11, column=1, sticky="w") -lbl_standby_nft_id.grid(row=12, column=0, sticky="e") -ent_standby_nft_id.grid(row=12, column=1, sticky="w") ``` Place the **NFT Count** field in the grid. @@ -369,7 +357,6 @@ lbl_standby_nft_count.grid(row=13, column=0, sticky="e") ent_standby_nft_count.grid(row=13, column=1, sticky="w") lbl_standby_results.grid(row=14, column=0, sticky="ne") text_standby_results.grid(row=14, column=1, sticky="nw") -cb_standby_allow_rippling.select() ############################################# ## Buttons ################################## @@ -383,22 +370,19 @@ btn_get_standby_account_info = tk.Button(master=frm_form, text="Get Standby Account Info", command = get_standby_account_info) btn_get_standby_account_info.grid(row=1, column=2, sticky = "nsew") -btn_standby_configure_account = tk.Button(master=frm_form, - text="Configure Account", - command = standby_configure_account) -btn_standby_configure_account.grid(row=7,column=0, sticky = "nsew") ``` Add the **Batch Mint NFTs** and **Get Batch NFTs** buttons. ```python -btn_standby_mint_token = tk.Button(master=frm_form, text="Batch Mint NFTs", - command = batch_mint_nfts) -btn_standby_mint_token.grid(row=8, column=2, sticky="nsew") -btn_standby_get_tokens = tk.Button(master=frm_form, text="Get Batch NFTs", - command = get_batch_nfts) -btn_standby_get_tokens.grid(row=9, column=2, sticky="nsew") - +btn_standby_batch_mint = tk.Button(master=frm_form, + text="Batch Mint NFTs", + command = standby_batch_mint) +btn_standby_batch_mint.grid(row=5, column=2, sticky = "nsew") +btn_standby_get_batch_nfts = tk.Button(master=frm_form, + text="Get Batch NFTs", + command = standby_get_batch_nfts) +btn_standby_get_batch_nfts.grid(row=8, column=2, sticky = "nsew") # Start the application window.mainloop() diff --git a/dactyl-config.yml b/dactyl-config.yml index 7ff6cb90db..de887fbb98 100644 --- a/dactyl-config.yml +++ b/dactyl-config.yml @@ -1591,6 +1591,12 @@ pages: - en - ja + # TODO: translate + - md: tutorials/quickstart/py-batch-minting.md + targets: + - en + - ja + - md: tutorials/build-apps/build-a-desktop-wallet-in-python.md targets: - en diff --git a/img/quickstart-py36.png b/img/quickstart-py36.png index 152af90cd9..2344c253ad 100644 Binary files a/img/quickstart-py36.png and b/img/quickstart-py36.png differ