qpuiq 0.18__tar.gz → 0.19__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.

Potentially problematic release.


This version of qpuiq might be problematic. Click here for more details.

Files changed (108) hide show
  1. {qpuiq-0.18/qpuiq.egg-info → qpuiq-0.19}/PKG-INFO +1 -1
  2. {qpuiq-0.18 → qpuiq-0.19}/PUI/__init__.py +1 -1
  3. {qpuiq-0.18 → qpuiq-0.19}/PUI/dom.py +15 -5
  4. {qpuiq-0.18 → qpuiq-0.19/qpuiq.egg-info}/PKG-INFO +1 -1
  5. {qpuiq-0.18 → qpuiq-0.19}/LICENSE.txt +0 -0
  6. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/__init__.py +0 -0
  7. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/application.py +0 -0
  8. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/base.py +0 -0
  9. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/button.py +0 -0
  10. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/canvas.py +0 -0
  11. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/checkbox.py +0 -0
  12. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/combobox.py +0 -0
  13. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/dialog.py +0 -0
  14. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/divider.py +0 -0
  15. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/image.py +0 -0
  16. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/label.py +0 -0
  17. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/layout.py +0 -0
  18. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/matplotlib.py +0 -0
  19. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/mdi.py +0 -0
  20. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/menu.py +0 -0
  21. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/modal.py +0 -0
  22. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/progressbar.py +0 -0
  23. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/radiobutton.py +0 -0
  24. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/scroll.py +0 -0
  25. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/splitter.py +0 -0
  26. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/tab.py +0 -0
  27. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/table.py +0 -0
  28. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/text.py +0 -0
  29. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/textfield.py +0 -0
  30. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/toolbar.py +0 -0
  31. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/tree.py +0 -0
  32. {qpuiq-0.18 → qpuiq-0.19}/PUI/PySide6/window.py +0 -0
  33. {qpuiq-0.18 → qpuiq-0.19}/PUI/common.py +0 -0
  34. {qpuiq-0.18 → qpuiq-0.19}/PUI/decorator.py +0 -0
  35. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/__init__.py +0 -0
  36. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/application.py +0 -0
  37. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/base.py +0 -0
  38. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/button.py +0 -0
  39. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/canvas.py +0 -0
  40. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/checkbox.py +0 -0
  41. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/divider.py +0 -0
  42. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/label.py +0 -0
  43. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/layout.py +0 -0
  44. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/progressbar.py +0 -0
  45. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/radiobutton.py +0 -0
  46. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/scroll.py +0 -0
  47. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/tab.py +0 -0
  48. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/text.py +0 -0
  49. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/textfield.py +0 -0
  50. {qpuiq-0.18 → qpuiq-0.19}/PUI/flet/window.py +0 -0
  51. {qpuiq-0.18 → qpuiq-0.19}/PUI/interfaces.py +0 -0
  52. {qpuiq-0.18 → qpuiq-0.19}/PUI/node.py +0 -0
  53. {qpuiq-0.18 → qpuiq-0.19}/PUI/state.py +0 -0
  54. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/__init__.py +0 -0
  55. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/application.py +0 -0
  56. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/base.py +0 -0
  57. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/button.py +0 -0
  58. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/checkbox.py +0 -0
  59. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/label.py +0 -0
  60. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/layout.py +0 -0
  61. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/progressbar.py +0 -0
  62. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/radiobutton.py +0 -0
  63. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/scroll.py +0 -0
  64. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/tab.py +0 -0
  65. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/text.py +0 -0
  66. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/textfield.py +0 -0
  67. {qpuiq-0.18 → qpuiq-0.19}/PUI/textual/window.py +0 -0
  68. {qpuiq-0.18 → qpuiq-0.19}/PUI/timeline.py +0 -0
  69. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/__init__.py +0 -0
  70. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/application.py +0 -0
  71. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/base.py +0 -0
  72. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/button.py +0 -0
  73. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/canvas.py +0 -0
  74. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/checkbox.py +0 -0
  75. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/label.py +0 -0
  76. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/layout.py +0 -0
  77. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/progressbar.py +0 -0
  78. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/radiobutton.py +0 -0
  79. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/scroll.py +0 -0
  80. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/tab.py +0 -0
  81. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/text.py +0 -0
  82. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/textfield.py +0 -0
  83. {qpuiq-0.18 → qpuiq-0.19}/PUI/tkinter/window.py +0 -0
  84. {qpuiq-0.18 → qpuiq-0.19}/PUI/utils.py +0 -0
  85. {qpuiq-0.18 → qpuiq-0.19}/PUI/view.py +0 -0
  86. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/__init__.py +0 -0
  87. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/application.py +0 -0
  88. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/base.py +0 -0
  89. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/button.py +0 -0
  90. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/canvas.py +0 -0
  91. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/checkbox.py +0 -0
  92. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/combobox.py +0 -0
  93. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/dialog.py +0 -0
  94. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/divider.py +0 -0
  95. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/label.py +0 -0
  96. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/layout.py +0 -0
  97. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/progressbar.py +0 -0
  98. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/radiobutton.py +0 -0
  99. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/scroll.py +0 -0
  100. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/text.py +0 -0
  101. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/textfield.py +0 -0
  102. {qpuiq-0.18 → qpuiq-0.19}/PUI/wx/window.py +0 -0
  103. {qpuiq-0.18 → qpuiq-0.19}/README.md +0 -0
  104. {qpuiq-0.18 → qpuiq-0.19}/qpuiq.egg-info/SOURCES.txt +0 -0
  105. {qpuiq-0.18 → qpuiq-0.19}/qpuiq.egg-info/dependency_links.txt +0 -0
  106. {qpuiq-0.18 → qpuiq-0.19}/qpuiq.egg-info/top_level.txt +0 -0
  107. {qpuiq-0.18 → qpuiq-0.19}/setup.cfg +0 -0
  108. {qpuiq-0.18 → qpuiq-0.19}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qpuiq
3
- Version: 0.18
3
+ Version: 0.19
4
4
  Summary: "PUI" Python Declarative UI Framework
5
5
  Home-page: https://github.com/buganini/PUI
6
6
  Author: Buganini Chiu
@@ -1,4 +1,4 @@
1
- __version__ = "0.18"
1
+ __version__ = "0.19"
2
2
 
3
3
  from .node import *
4
4
  from .view import *
@@ -17,6 +17,8 @@ def sortGridDOMInPlace(dom):
17
17
  dom.sort(key=lambda c:(c.grid_row, c.grid_column, c.grid_rowspan, c.grid_columnspan))
18
18
 
19
19
  def dom_remove_node(dom_parent, dom_offset, child):
20
+ if DEBUG:
21
+ print(f"dom_remove_node key={child.key} virtual={child.pui_virtual} children={len(child.children)} dom_parent={dom_parent.key} dom_offset={dom_offset}")
20
22
  if child.pui_virtual:
21
23
  ret = [child]
22
24
  for c in child.children:
@@ -59,17 +61,20 @@ def sync(node, dom_parent, dom_offset, oldVDOM, newVDOM, depth=0):
59
61
  oldOrdered.reverse()
60
62
  newOrdered.reverse()
61
63
 
62
- oldVDOM = oldOrdered + oldOutOfOrdered
63
- newVDOM = newOrdered + newOutOfOrdered
64
+ oldVDOM.clear()
65
+ oldVDOM.extend(oldOrdered + oldOutOfOrdered)
66
+ newVDOM.clear()
67
+ newVDOM.extend(newOrdered + newOutOfOrdered)
64
68
 
65
69
  if DEBUG:
66
70
  print(f"{(depth+1)*' '}===OLD===")
67
71
  for c in oldVDOM:
68
- print(f"{(depth+1)*' '}{c.key} virtual={c.pui_virtual} ui={c.ui}")
72
+ print(f"{(depth+1)*' '}{c.key} virtual={c.pui_virtual} children={len(c.children)} ui={c.ui}")
69
73
 
70
74
  print(f"{(depth+1)*' '}===NEW===")
71
75
  for c in newVDOM:
72
- print(f"{(depth+1)*' '}{c.key} virtual={c.pui_virtual}")
76
+ print(f"{(depth+1)*' '}{c.key} virtual={c.pui_virtual} children={len(c.children)}")
77
+ print(f"{(depth+1)*' '}=========")
73
78
 
74
79
  oldVMap = [x.key for x in oldVDOM]
75
80
  newVMap = [x.key for x in newVDOM]
@@ -225,13 +230,18 @@ def sync(node, dom_parent, dom_offset, oldVDOM, newVDOM, depth=0):
225
230
  break # finish
226
231
 
227
232
  # Step 4. trim removed trail
233
+ if DEBUG:
234
+ print(f"{(depth+1)*' '}S4. TRIM")
228
235
  nl = len(newVDOM)
236
+ if DEBUG:
237
+ print(f"{(depth+1)*' '}S4. TRIM", f"dom_offset={dom_offset}", len(oldVDOM), "=>", len(newVDOM))
229
238
  while len(oldVDOM) > nl:
230
239
  old = oldVDOM.pop(nl)
240
+ print(f"{(depth+2)*' '}", f"key={old.key} virtual={old.pui_virtual} children={len(old.children)}")
231
241
  oldVMap.pop(nl)
232
242
  nodes = dom_remove_node(dom_parent, dom_offset + nl, old)
233
243
  dom_children_num -= len([n for n in nodes if not n.pui_virtual and not n.pui_outoforder])
234
- toBeDeleted.extend(nodes)
244
+ toBeDeleted.append(old)
235
245
 
236
246
  for c in newVDOM:
237
247
  c.postUpdate()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qpuiq
3
- Version: 0.18
3
+ Version: 0.19
4
4
  Summary: "PUI" Python Declarative UI Framework
5
5
  Home-page: https://github.com/buganini/PUI
6
6
  Author: Buganini Chiu
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes