difonlib 0.4.2__tar.gz → 0.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {difonlib-0.4.2 → difonlib-0.4.3}/PKG-INFO +1 -1
  2. {difonlib-0.4.2 → difonlib-0.4.3}/pyproject.toml +1 -1
  3. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/ng_lib.py +40 -4
  4. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/ng_lib_test3.py +30 -3
  5. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/PKG-INFO +1 -1
  6. {difonlib-0.4.2 → difonlib-0.4.3}/README.md +0 -0
  7. {difonlib-0.4.2 → difonlib-0.4.3}/setup.cfg +0 -0
  8. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/__init__.py +0 -0
  9. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/bt_scanner.py +0 -0
  10. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/bt_utils.py +0 -0
  11. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/conn_kbd_devs.py +0 -0
  12. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/docker-android/get_tuya_preferences.py +0 -0
  13. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/input_devs.py +0 -0
  14. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/py.typed +0 -0
  15. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/remctrl.py +0 -0
  16. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/tuya_devs.py +0 -0
  17. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib/utils.py +0 -0
  18. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/SOURCES.txt +0 -0
  19. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/dependency_links.txt +0 -0
  20. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/requires.txt +0 -0
  21. {difonlib-0.4.2 → difonlib-0.4.3}/src/difonlib.egg-info/top_level.txt +0 -0
  22. {difonlib-0.4.2 → difonlib-0.4.3}/tests/test_bt_utils.py +0 -0
  23. {difonlib-0.4.2 → difonlib-0.4.3}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: difonlib
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: python libraries
5
5
  Requires-Python: >=3.12
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "difonlib"
3
- version = "0.4.2"
3
+ version = "0.4.3"
4
4
  description = "python libraries"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -80,7 +80,7 @@ class DialogBox:
80
80
 
81
81
 
82
82
  class CardTable:
83
- _current_yes_handler: Callable[[], None | Awaitable[None]] | None = None
83
+ # _current_yes_handler: Callable[[], None | Awaitable[None]] | None = None
84
84
 
85
85
  def __init__(
86
86
  self,
@@ -96,6 +96,8 @@ class CardTable:
96
96
  self.buttons_on_row_select_changed: list = []
97
97
  self.marked_text_color = marked_text_color
98
98
  self.marked_field = marked_field
99
+ self.filter_value: str | bool = ""
100
+ self._current_yes_handler: Callable[[], None | Awaitable[None]] | None = None
99
101
 
100
102
  with ui.card().classes("p-4 shadow-lg") as self.card:
101
103
  with ui.row().classes("items-center justify-between w-full mb-2"):
@@ -153,10 +155,43 @@ class CardTable:
153
155
  """Add field 'name', needed for Quasar GUI"""
154
156
  return [{**col, "name": col.get("name", col["field"])} for col in columns]
155
157
 
158
+ def set_row_display_filter(self, field_name: str, field_value: str | bool) -> None:
159
+ """
160
+ card_table.set_row_display_filter("id","123456")
161
+ Show rows with field id='123456':
162
+ card_table.row_display_filter(state_on=True)
163
+ Show all rows:
164
+ card_table.row_display_filter()
165
+ """
166
+ if isinstance(field_value, bool):
167
+ self.filter_value = field_value
168
+ else:
169
+ self.filter_value = f"\\'{field_value}\\'"
170
+
171
+ self.table.props(rf"""
172
+ :filter-method="(rows, terms) => !terms ? rows : rows.filter(r => r.{field_name} === terms)"
173
+ """)
174
+
175
+ def row_display_filter(self, state_on: bool = False) -> None:
176
+ """
177
+ card_table.set_row_display_filter(field_name="id", field_value="123456")
178
+ card_table.row_display_filter(state_on=True)
179
+ Show rows with field id='123456'
180
+ card_table.set_row_display_filter("_marked", True)
181
+ card_table.row_display_filter(True)
182
+ Show rows with field _marked=True
183
+ """
184
+ dbg(f"self.filter_value: {self.filter_value}") # //Dima
185
+ if state_on:
186
+ self.table.props(f':filter="{self.filter_value}"')
187
+ else:
188
+ self.table.props(':filter=""')
189
+ self.table.update()
190
+
156
191
  def mark_row(self, mark: bool = True, **kwrds: Any) -> list[dict[str, Any]]:
157
192
  """
158
- card_table.mark_row(id="123456", name="ANNNNN")
159
- card_table.mark_row(ip="192.168.0.18", mark=False)
193
+ card_table.mark_row(id="123456", name="IRDevice.Lounge1")
194
+ card_table.mark_row(ip="192.168.0.18", mark=False) #Unmark
160
195
  """
161
196
  found = []
162
197
  for row in self.table.rows:
@@ -224,7 +259,8 @@ class CardTable:
224
259
  else:
225
260
  on_change(e.sender.value)
226
261
 
227
- chbox.on("click", handle_change)
262
+ # chbox.on("click", handle_change)
263
+ chbox.on("update:model-value", handle_change)
228
264
  setattr(self, f"chbox{chbox_txt.replace(' ', '_')}", chbox)
229
265
  return chbox
230
266
 
@@ -33,9 +33,36 @@ def main() -> None:
33
33
  found = card_table.mark_row(id="129956")
34
34
  print(f" ==> found: {found}") # //Dima
35
35
 
36
- print(f"card_table.table.rows: {card_table.table.rows}")
37
-
38
- card_table.add_checkbox(chbox_txt="Used Only", on_change=lambda v: ui.notify(v))
36
+ card_table.set_row_display_filter("_marked", True)
37
+ # card_table.set_row_display_filter(field_name="id", field_value="123456")
38
+
39
+ # self.table.props(':filter="\'online\'"')
40
+ # self.table.update()
41
+
42
+ # def only_marked(mark: bool = False, def_value="\\'\\'") -> None:
43
+ # print(f"table rows: {card_table.table.rows}")
44
+ # field_value = def_value
45
+ # vv = "123456"
46
+ # vv = mark
47
+ # # vv = "true"
48
+ # if mark:
49
+ # dbg(f" === MARK ===") # //Dima
50
+ # if isinstance(vv, str):
51
+ # field_value = f"\\'{vv}\\'"
52
+ # else:
53
+ # field_value = mark
54
+ # else:
55
+ # dbg(f" === NOT MARK ===") # //Dima
56
+ # dbg(f" * field_value: {field_value}") # //Dima
57
+ # card_table.table.props(f':filter="{field_value}"')
58
+ # card_table.table.update()
59
+
60
+ # card_table.add_checkbox(chbox_txt="Used Only", on_change=lambda v: ui.notify(v))
61
+ # card_table.add_checkbox(chbox_txt="Used Only", on_change=lambda v: only_marked(v))
62
+ card_table.add_checkbox(
63
+ chbox_txt="Used Only",
64
+ on_change=lambda v: card_table.row_display_filter(v),
65
+ )
39
66
 
40
67
  dialog_box = DialogBox()
41
68
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: difonlib
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: python libraries
5
5
  Requires-Python: >=3.12
6
6
  Description-Content-Type: text/markdown
File without changes
File without changes
File without changes
File without changes
File without changes