From 1d5c7b2e49ce0c0fbdc28bb55e6a6d8c6a3f55a9 Mon Sep 17 00:00:00 2001 From: Ignace Date: Sat, 24 Jan 2026 17:39:48 +0100 Subject: [PATCH] item screen improved (las version before model revamp) --- src/justgetit/images/checked.png | Bin 0 -> 6876 bytes src/justgetit/images/unchecked.png | Bin 0 -> 5305 bytes src/justgetit/items.py | 114 +++++++++++++++++++++-------- 3 files changed, 83 insertions(+), 31 deletions(-) create mode 100644 src/justgetit/images/checked.png create mode 100644 src/justgetit/images/unchecked.png diff --git a/src/justgetit/images/checked.png b/src/justgetit/images/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed8bb75a889004651c5c893f02108c20aed7701 GIT binary patch literal 6876 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 Rdf*Q%NEdIYRet$;#Q%Q?+2a5J literal 0 HcmV?d00001 diff --git a/src/justgetit/items.py b/src/justgetit/items.py index 634337a..5c8f75f 100644 --- a/src/justgetit/items.py +++ b/src/justgetit/items.py @@ -6,10 +6,14 @@ import datetime from justgetit.constants import * from justgetit.basepage import BasePage + class DatabaseList(toga.Box): def __init__(self, id=None, style=None, children=None, **kwargs): style.direction = COLUMN super().__init__(id, style, children, **kwargs) + self.rows = {} + self.icon_checked = toga.Icon(path="images/checked") + self.icon_unchecked = toga.Icon(path="images/unchecked") self.source = ListSource( accessors=["id", "listofitems_id", "label", "quantity", "unit", 'is_checked', 'is_suggestion', 'category'] @@ -20,6 +24,9 @@ class DatabaseList(toga.Box): def on_row_pressed(self, w): # self.app.configuration.set_current_listid(w.id) # self.app.goto_next_page_by_name(PAGE_ITEMS) + # the widget may have an id of L_26 or B_26, so remove the _ and make it an int + item = self.source.find({"id": int(w.id.replace("L_","").replace("B_",""))}) + item.is_checked = not item.is_checked print("item buttn prtesse") @@ -28,10 +35,12 @@ class DatabaseList(toga.Box): def __init__(self, parent_widget): print("widget: data-item init") self.parent_widget = parent_widget + super().__init__() def change(self, item): print("widget: data-item change") + self.parent_widget.rows[item.id].checkbox.icon = self.parent_widget.icon_checked if item.is_checked else self.parent_widget.icon_unchecked return super().change(item) def clear(self): @@ -40,40 +49,91 @@ class DatabaseList(toga.Box): def insert(self, index, item): print("widget: data-item insert") - self.parent_widget.add(self.create_row(item.id, item.label, item.quantity, item.unit)) + r = DatabaseList.ItemRow(self.parent_widget, item.id, item.label, item.is_checked, item.quantity, item.unit) + self.parent_widget.add(r) + self.parent_widget.rows[item.id] = r return super().insert(index, item) def remove(self, index, item): print("widget: data-item remove") return super().remove(index, item) - def create_row(self, listid, text, openitems, totalitems): - label = toga.Button( - text=text, - id=listid, - margin_bottom=2, - style = Pack( - flex=12, - background_color="white", #white - font_size=15, - ), - on_press=self.parent_widget.on_row_pressed + class ItemRow(toga.Box): + def __init__(self, parent_widget, id, label, is_checked, quantity, unit, **kwargs): + self.parent_widget = parent_widget + style=Pack( + direction=ROW, + background_color="#ccc", # ccc ) - indicator_label = toga.Label( - text = f"{openitems} / {totalitems}", - style = Pack( - color="blue", - margin=8, + super().__init__(id=id, style=style, children=None, **kwargs) + # checkbox = toga.Switch( + # text = '', + # value = is_checked, + # on_change=self.parent_widget.on_row_pressed, + # style=Pack( + # font_size=12, + # ) + # ) + + # item_label = toga.Label( + # text = label, + # style = Pack( + # margin=4, + # font_size=15 + # ) + # ) + + item_label = toga.Button( + text=label, + id=f"L_{id}", + style = Pack( + margin=4, + font_size=15, + background_color="white" + ), + on_press=self.parent_widget.on_row_pressed, + + ) + + + self.checkbox = toga.Button( + icon=self.parent_widget.icon_checked if is_checked else self.parent_widget.icon_unchecked, + id=f"B_{id}", + # margin_bottom=2, + on_press=self.parent_widget.on_row_pressed, + style=Pack( + background_color="white", ) ) - indicator_box = toga.Box( - children=[indicator_label], + + quantity_label = toga.Label( + text = f"{quantity} {unit}", style = Pack( - flex=2, + color="blue", + margin=5, + font_size=12 + ) + ) + + left_box = toga.Box( + style = Pack( + flex=1, + justify_content=START, + margin=4 + ) + ) + left_box.add(self.checkbox) + left_box.add(item_label) + + right_box = toga.Box( + style = Pack( + flex=1, justify_content=END ) ) + right_box.add(quantity_label) + listrow_inner = toga.Box( style = Pack( margin_bottom=1, @@ -81,18 +141,10 @@ class DatabaseList(toga.Box): background_color="white", #white ) ) - listrow_inner.add(label) - listrow_inner.add(indicator_box) + listrow_inner.add(left_box) + listrow_inner.add(right_box) - listrow_outer = toga.Box( - style = Pack( - # flex=1, - background_color="#ccc", # ccc - ) - ) - listrow_outer.add(listrow_inner) - - return(listrow_outer) + self.add(listrow_inner) class Items(BasePage):