Skip to content
Snippets Groups Projects

Refactor Cart into checkerboard table

Merged Mateusz Kudela requested to merge mkudela/issue-173 into develop
Compare and Show latest version
1 file
+ 15
5
Compare changes
  • Side-by-side
  • Inline
@@ -211,6 +211,11 @@ class CartTable(CliveCheckerboardTable):
]
return self._rows
@staticmethod
def _create_widget_id_to_focus(event: CartItem.Focus | CartItem.Move) -> str:
assert event.button_to_focus is not None, "Button to focus has to be passed to get it's id."
return event.button_to_focus
def _disable_appropriate_button(self, widget: CartItem) -> None:
if len(self.app.world.profile.cart) > 0 and widget.reactive_idx == 0:
# disable first ButtomMoveUp if first element was removed
@@ -244,11 +249,14 @@ class CartTable(CliveCheckerboardTable):
for cell, value in zip(cells, data):
cell.update_content(value) # type: ignore[arg-type]
async def _remove_operation_from_everywhere(self, widget: CartItem) -> None:
self._rows.remove(widget)
await widget.remove()
self.profile.cart.remove(widget.operation)
@on(CartItem.Delete)
async def remove_item(self, event: CartItem.Delete) -> None:
self._rows.remove(event.widget)
await event.widget.remove()
self.profile.cart.remove(event.widget.operation)
await self._remove_operation_from_everywhere(event.widget)
self._handle_remove_event(triggering_widget=event.widget)
self.app.trigger_profile_watchers()
self._disable_appropriate_button(event.widget)
@@ -266,7 +274,8 @@ class CartTable(CliveCheckerboardTable):
if event.to_idx == cart_item.reactive_idx:
self.app.set_focus(cart_item)
if event.button_to_focus:
cart_item.query_one(f"#{event.button_to_focus}").focus()
button_id = self._create_widget_id_to_focus(event)
cart_item.query_one(f"#{button_id}").focus()
@on(CartItem.Focus)
def focus_item(self, event: CartItem.Focus) -> None:
@@ -274,7 +283,8 @@ class CartTable(CliveCheckerboardTable):
if event.target_idx == cart_item.reactive_idx:
self.app.set_focus(cart_item)
if event.button_to_focus:
cart_item.query_one(f"#{event.button_to_focus}").focus()
button_id = self._create_widget_id_to_focus(event)
cart_item.query_one(f"#{button_id}").focus()
class Cart(BaseScreen):
Loading