From 3ee6707cc56a87d1a28823cfef2c1d1dc4466272 Mon Sep 17 00:00:00 2001 From: Valerie Date: Sun, 25 May 2025 23:52:14 -0400 Subject: [PATCH] Refactor button layout in ShopView, PurchaseView, and InventoryView to explicitly assign rows for better organization. Update cancel and close buttons to new rows for improved UI structure. --- shop/ui.py | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/shop/ui.py b/shop/ui.py index 90ae703..399fb85 100644 --- a/shop/ui.py +++ b/shop/ui.py @@ -12,7 +12,10 @@ class ShopView(View): self.current_item = None self.quantity = None self.setup_shop_select() - self.add_item(Button(label="Cancel", style=discord.ButtonStyle.red, custom_id="cancel")) + # Add cancel button to a different row + cancel_button = Button(label="Cancel", style=discord.ButtonStyle.red, custom_id="cancel", row=4) + cancel_button.callback = self.cancel + self.add_item(cancel_button) async def interaction_check(self, interaction: discord.Interaction) -> bool: if interaction.user != self.ctx.author: @@ -23,8 +26,7 @@ class ShopView(View): async def on_error(self, interaction: discord.Interaction, error: Exception, item: Item) -> None: await interaction.response.send_message(f"An error occurred: {str(error)}", ephemeral=True) - @discord.ui.button(label="Cancel", style=discord.ButtonStyle.red, custom_id="cancel") - async def cancel(self, interaction: discord.Interaction, button: Button): + async def cancel(self, interaction: discord.Interaction): await interaction.response.edit_message(content="Shop menu cancelled.", embed=None, view=None) self.stop() @@ -42,7 +44,7 @@ class ShopView(View): shop_select = Select( placeholder="Select a shop", options=options, - row=0 + row=0 # Explicitly set to row 0 ) shop_select.callback = self.shop_selected self.add_item(shop_select) @@ -79,7 +81,7 @@ class ShopView(View): item_select = Select( placeholder="Select an item", options=options[:25], # Discord limit - row=1 + row=1 # Explicitly set to row 1 ) item_select.callback = self.item_selected self.add_item(item_select) @@ -111,6 +113,23 @@ class PurchaseView(View): self.item_data = item_data self.quantity = None + # Add buttons with explicit row assignments + buy_one = Button(label="Buy 1", style=discord.ButtonStyle.green, row=1) + buy_one.callback = self.buy_one + self.add_item(buy_one) + + buy_five = Button(label="Buy 5", style=discord.ButtonStyle.green, row=1) + buy_five.callback = self.buy_five + self.add_item(buy_five) + + custom = Button(label="Custom Amount", style=discord.ButtonStyle.blurple, row=1) + custom.callback = self.custom_amount + self.add_item(custom) + + cancel = Button(label="Cancel", style=discord.ButtonStyle.red, row=1) + cancel.callback = self.cancel + self.add_item(cancel) + async def interaction_check(self, interaction: discord.Interaction) -> bool: if interaction.user != self.ctx.author: await interaction.response.send_message("This menu is not for you!", ephemeral=True) @@ -215,7 +234,10 @@ class InventoryView(View): self.inventory = inventory self.selected_item = None self.setup_inventory_select() - self.add_item(Button(label="Close", style=discord.ButtonStyle.red, custom_id="close")) + # Add close button to a different row + close_button = Button(label="Close", style=discord.ButtonStyle.red, custom_id="close", row=4) + close_button.callback = self.close + self.add_item(close_button) async def interaction_check(self, interaction: discord.Interaction) -> bool: if interaction.user != self.ctx.author: @@ -223,7 +245,7 @@ class InventoryView(View): return False return True - @discord.ui.button(label="Close", style=discord.ButtonStyle.red, custom_id="close") + @button(label="Close", style=discord.ButtonStyle.red, custom_id="close", row=4) async def close(self, interaction: discord.Interaction, button: Button): await interaction.response.edit_message(content="Inventory closed.", embed=None, view=None) self.stop()