qpuiq 0.19__tar.gz → 0.21__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.19/qpuiq.egg-info → qpuiq-0.21}/PKG-INFO +2 -9
  2. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/canvas.py +18 -18
  3. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/scroll.py +3 -1
  4. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/window.py +3 -3
  5. {qpuiq-0.19 → qpuiq-0.21}/PUI/__init__.py +1 -1
  6. {qpuiq-0.19 → qpuiq-0.21}/PUI/state.py +2 -2
  7. {qpuiq-0.19 → qpuiq-0.21/QPUIQ.egg-info}/PKG-INFO +2 -9
  8. {qpuiq-0.19/qpuiq.egg-info → qpuiq-0.21/QPUIQ.egg-info}/SOURCES.txt +4 -0
  9. {qpuiq-0.19 → qpuiq-0.21}/LICENSE.txt +0 -0
  10. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/__init__.py +0 -0
  11. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/application.py +0 -0
  12. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/base.py +0 -0
  13. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/button.py +0 -0
  14. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/checkbox.py +0 -0
  15. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/combobox.py +0 -0
  16. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/dialog.py +0 -0
  17. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/divider.py +0 -0
  18. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/image.py +0 -0
  19. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/label.py +0 -0
  20. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/layout.py +0 -0
  21. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/matplotlib.py +0 -0
  22. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/mdi.py +0 -0
  23. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/menu.py +0 -0
  24. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/modal.py +0 -0
  25. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/progressbar.py +0 -0
  26. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/radiobutton.py +0 -0
  27. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/splitter.py +0 -0
  28. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/tab.py +0 -0
  29. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/table.py +0 -0
  30. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/text.py +0 -0
  31. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/textfield.py +0 -0
  32. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/toolbar.py +0 -0
  33. {qpuiq-0.19 → qpuiq-0.21}/PUI/PySide6/tree.py +0 -0
  34. {qpuiq-0.19 → qpuiq-0.21}/PUI/common.py +0 -0
  35. {qpuiq-0.19 → qpuiq-0.21}/PUI/decorator.py +0 -0
  36. {qpuiq-0.19 → qpuiq-0.21}/PUI/dom.py +0 -0
  37. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/__init__.py +0 -0
  38. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/application.py +0 -0
  39. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/base.py +0 -0
  40. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/button.py +0 -0
  41. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/canvas.py +0 -0
  42. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/checkbox.py +0 -0
  43. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/divider.py +0 -0
  44. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/label.py +0 -0
  45. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/layout.py +0 -0
  46. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/progressbar.py +0 -0
  47. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/radiobutton.py +0 -0
  48. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/scroll.py +0 -0
  49. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/tab.py +0 -0
  50. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/text.py +0 -0
  51. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/textfield.py +0 -0
  52. {qpuiq-0.19 → qpuiq-0.21}/PUI/flet/window.py +0 -0
  53. {qpuiq-0.19 → qpuiq-0.21}/PUI/interfaces.py +0 -0
  54. {qpuiq-0.19 → qpuiq-0.21}/PUI/node.py +0 -0
  55. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/__init__.py +0 -0
  56. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/application.py +0 -0
  57. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/base.py +0 -0
  58. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/button.py +0 -0
  59. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/checkbox.py +0 -0
  60. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/label.py +0 -0
  61. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/layout.py +0 -0
  62. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/progressbar.py +0 -0
  63. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/radiobutton.py +0 -0
  64. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/scroll.py +0 -0
  65. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/tab.py +0 -0
  66. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/text.py +0 -0
  67. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/textfield.py +0 -0
  68. {qpuiq-0.19 → qpuiq-0.21}/PUI/textual/window.py +0 -0
  69. {qpuiq-0.19 → qpuiq-0.21}/PUI/timeline.py +0 -0
  70. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/__init__.py +0 -0
  71. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/application.py +0 -0
  72. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/base.py +0 -0
  73. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/button.py +0 -0
  74. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/canvas.py +0 -0
  75. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/checkbox.py +0 -0
  76. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/label.py +0 -0
  77. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/layout.py +0 -0
  78. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/progressbar.py +0 -0
  79. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/radiobutton.py +0 -0
  80. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/scroll.py +0 -0
  81. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/tab.py +0 -0
  82. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/text.py +0 -0
  83. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/textfield.py +0 -0
  84. {qpuiq-0.19 → qpuiq-0.21}/PUI/tkinter/window.py +0 -0
  85. {qpuiq-0.19 → qpuiq-0.21}/PUI/utils.py +0 -0
  86. {qpuiq-0.19 → qpuiq-0.21}/PUI/view.py +0 -0
  87. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/__init__.py +0 -0
  88. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/application.py +0 -0
  89. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/base.py +0 -0
  90. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/button.py +0 -0
  91. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/canvas.py +0 -0
  92. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/checkbox.py +0 -0
  93. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/combobox.py +0 -0
  94. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/dialog.py +0 -0
  95. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/divider.py +0 -0
  96. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/label.py +0 -0
  97. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/layout.py +0 -0
  98. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/progressbar.py +0 -0
  99. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/radiobutton.py +0 -0
  100. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/scroll.py +0 -0
  101. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/text.py +0 -0
  102. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/textfield.py +0 -0
  103. {qpuiq-0.19 → qpuiq-0.21}/PUI/wx/window.py +0 -0
  104. {qpuiq-0.19/qpuiq.egg-info → qpuiq-0.21/QPUIQ.egg-info}/dependency_links.txt +0 -0
  105. {qpuiq-0.19/qpuiq.egg-info → qpuiq-0.21/QPUIQ.egg-info}/top_level.txt +0 -0
  106. {qpuiq-0.19 → qpuiq-0.21}/README.md +0 -0
  107. {qpuiq-0.19 → qpuiq-0.21}/setup.cfg +0 -0
  108. {qpuiq-0.19 → qpuiq-0.21}/setup.py +0 -0
@@ -1,19 +1,12 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: qpuiq
3
- Version: 0.19
3
+ Version: 0.21
4
4
  Summary: "PUI" Python Declarative UI Framework
5
5
  Home-page: https://github.com/buganini/PUI
6
6
  Author: Buganini Chiu
7
7
  Author-email: buganini@b612.tw
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE.txt
10
- Dynamic: author
11
- Dynamic: author-email
12
- Dynamic: description
13
- Dynamic: description-content-type
14
- Dynamic: home-page
15
- Dynamic: license-file
16
- Dynamic: summary
17
10
 
18
11
  # What is PUI
19
12
  PUI is a reactive/declarative UI framework with two-way data binding.
@@ -6,7 +6,7 @@ from PySide6.QtGui import QPainter, QColor, QPainterPath, QImage
6
6
 
7
7
  class PUIQtCanvas(QtWidgets.QWidget):
8
8
  def __init__(self, node, width=None, height=None):
9
- self.node = node
9
+ self.puinode = node
10
10
  self.width = width
11
11
  self.height = height
12
12
  super().__init__()
@@ -18,25 +18,25 @@ class PUIQtCanvas(QtWidgets.QWidget):
18
18
  e = PUIEvent()
19
19
  e.button = event.button().value
20
20
  e.x, e.y = event.position().toPoint().toTuple()
21
- self.node._dblclicked(e)
21
+ self.puinode._dblclicked(e)
22
22
 
23
23
  def mousePressEvent(self, event):
24
24
  e = PUIEvent()
25
25
  e.button = event.button().value
26
26
  e.x, e.y = event.position().toPoint().toTuple()
27
- self.node._mousedown(e)
27
+ self.puinode._mousedown(e)
28
28
 
29
29
  def mouseReleaseEvent(self, event):
30
30
  e = PUIEvent()
31
31
  e.button = event.button().value
32
32
  e.x, e.y = event.position().toPoint().toTuple()
33
- self.node._mouseup(e)
33
+ self.puinode._mouseup(e)
34
34
 
35
35
  def mouseMoveEvent(self, event):
36
36
  e = PUIEvent()
37
37
  e.button = event.button().value
38
38
  e.x, e.y = event.position().toPoint().toTuple()
39
- self.node._mousemove(e)
39
+ self.puinode._mousemove(e)
40
40
 
41
41
  def wheelEvent(self, event):
42
42
  e = PUIEvent()
@@ -56,26 +56,26 @@ class PUIQtCanvas(QtWidgets.QWidget):
56
56
  if emodifiers & QtCore.Qt.MetaModifier:
57
57
  modifier |= KeyModifier.META
58
58
  e.modifiers = modifier
59
- self.node._wheel(e)
59
+ self.puinode._wheel(e)
60
60
 
61
61
  def paintEvent(self, event):
62
- node = self.node.get_node()
63
- node.qpainter = QPainter()
64
- node.qpainter.begin(self)
65
- node.qpainter.setRenderHints(QtGui.QPainter.Antialiasing, True)
62
+ puinode = self.puinode.get_node()
63
+ puinode.qpainter = QPainter()
64
+ puinode.qpainter.begin(self)
65
+ puinode.qpainter.setRenderHints(QtGui.QPainter.Antialiasing, True)
66
66
 
67
- if not node.style_bgcolor is None:
67
+ if not puinode.style_bgcolor is None:
68
68
  bgBrush = QtGui.QBrush()
69
- bgBrush.setColor(QtGui.QColor(node.style_bgcolor))
69
+ bgBrush.setColor(QtGui.QColor(puinode.style_bgcolor))
70
70
  bgBrush.setStyle(QtCore.Qt.SolidPattern)
71
71
  rect = QtCore.QRect(0, 0, self.width or self.geometry().width(), self.height or self.geometry().height())
72
- node.qpainter.fillRect(rect, bgBrush)
72
+ puinode.qpainter.fillRect(rect, bgBrush)
73
73
 
74
- node.width = self.geometry().width()
75
- node.height = self.geometry().height()
76
- immediate = node.painter(node, *node.args)
77
- node.qpainter.end()
78
- node.qpainter = None
74
+ puinode.width = self.geometry().width()
75
+ puinode.height = self.geometry().height()
76
+ immediate = puinode.painter(puinode, *puinode.args)
77
+ puinode.qpainter.end()
78
+ puinode.qpainter = None
79
79
  if immediate:
80
80
  self.update()
81
81
 
@@ -75,7 +75,6 @@ class Scroll(QtBaseWidget):
75
75
  if node.destroyed:
76
76
  return
77
77
  node.children[0].outer.origResizeEvent(event)
78
- node.children[0].outer.resizeEvent = self.onUiResized
79
78
  if node.horizontal is False:
80
79
  if isinstance(node.children[0], QtBaseLayout):
81
80
  node.outer.setMinimumWidth(node.children[0].outer.sizeHint().width())
@@ -88,6 +87,9 @@ class Scroll(QtBaseWidget):
88
87
  elif isinstance(node.children[0], QtBaseWidget):
89
88
  node.outer.setMinimumHeight(node.children[0].outer.sizeHint().height())
90
89
 
90
+ def postSync(self):
91
+ self.children[0].outer.resizeEvent = self.onUiResized
92
+
91
93
  def scrollX(self, pos=0):
92
94
  if math.copysign(1, pos) >= 0:
93
95
  self.align_x = 0
@@ -9,7 +9,7 @@ class QMainWindow(QtWidgets.QMainWindow):
9
9
  def keyPressEvent(self, event):
10
10
  e = PUIEvent()
11
11
  e.text = event.text()
12
- self.node._keypress(e)
12
+ self.puinode._keypress(e)
13
13
 
14
14
  def mousePressEvent(self, event):
15
15
  focused_widget = QtWidgets.QApplication.focusWidget()
@@ -34,13 +34,13 @@ class Window(QtBaseWidget):
34
34
  def update(self, prev=None):
35
35
  if prev and prev.ui:
36
36
  self.ui = prev.ui
37
- self.ui.node = self
37
+ self.ui.puinode = self
38
38
  self.curr_size = prev.curr_size
39
39
  self.curr_maximize = prev.curr_maximize
40
40
  self.curr_fullscreen = prev.curr_fullscreen
41
41
  else:
42
42
  self.ui = QMainWindow()
43
- self.ui.node = self
43
+ self.ui.puinode = self
44
44
  self.ui.show()
45
45
  self.curr_size = Prop()
46
46
  self.curr_maximize = Prop()
@@ -1,4 +1,4 @@
1
- __version__ = "0.19"
1
+ __version__ = "0.21"
2
2
 
3
3
  from .node import *
4
4
  from .view import *
@@ -230,9 +230,9 @@ class StateObject(BaseState):
230
230
  if self.__binders.get(key):
231
231
  self.__binders[key][1](value)
232
232
 
233
- if type(value) is list:
233
+ if isinstance(value, list):
234
234
  value = StateList(value)
235
- elif type(value) is dict:
235
+ elif isinstance(value, dict):
236
236
  value = StateDict(value)
237
237
  if not hasattr(self.__values, key) or getattr(self.__values, key) != value:
238
238
  setattr(self.__values, key, value)
@@ -1,19 +1,12 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: qpuiq
3
- Version: 0.19
3
+ Version: 0.21
4
4
  Summary: "PUI" Python Declarative UI Framework
5
5
  Home-page: https://github.com/buganini/PUI
6
6
  Author: Buganini Chiu
7
7
  Author-email: buganini@b612.tw
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE.txt
10
- Dynamic: author
11
- Dynamic: author-email
12
- Dynamic: description
13
- Dynamic: description-content-type
14
- Dynamic: home-page
15
- Dynamic: license-file
16
- Dynamic: summary
17
10
 
18
11
  # What is PUI
19
12
  PUI is a reactive/declarative UI framework with two-way data binding.
@@ -100,6 +100,10 @@ PUI/wx/scroll.py
100
100
  PUI/wx/text.py
101
101
  PUI/wx/textfield.py
102
102
  PUI/wx/window.py
103
+ QPUIQ.egg-info/PKG-INFO
104
+ QPUIQ.egg-info/SOURCES.txt
105
+ QPUIQ.egg-info/dependency_links.txt
106
+ QPUIQ.egg-info/top_level.txt
103
107
  qpuiq.egg-info/PKG-INFO
104
108
  qpuiq.egg-info/SOURCES.txt
105
109
  qpuiq.egg-info/dependency_links.txt
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