qpuiq 0.15__py3-none-any.whl → 0.17__py3-none-any.whl

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.

PUI/PySide6/base.py CHANGED
@@ -186,6 +186,11 @@ class QtBaseLayout(PUINode):
186
186
  super().destroy(direct)
187
187
 
188
188
  def update(self, prev=None):
189
+ if prev and prev.ui:
190
+ self.mounted_children = prev.mounted_children
191
+ else:
192
+ self.mounted_children = []
193
+
189
194
  super().update(prev)
190
195
  _apply_params(self.ui, self)
191
196
 
@@ -194,6 +199,7 @@ class QtBaseLayout(PUINode):
194
199
  from .layout import Spacer
195
200
  if isinstance(child, Spacer):
196
201
  self.qtlayout.insertItem(idx, child.outer)
202
+ self.mounted_children.insert(idx, child)
197
203
  elif isinstance(child, Modal):
198
204
  pass
199
205
  elif isinstance(child, QtBaseWidget) or isinstance(child, QtBaseLayout):
@@ -201,16 +207,29 @@ class QtBaseLayout(PUINode):
201
207
  if not child.layout_weight is None:
202
208
  params["stretch"] = child.layout_weight
203
209
  self.qtlayout.insertWidget(idx, child.outer, **params)
210
+ self.mounted_children.insert(idx, child)
204
211
 
205
212
  def removeChild(self, idx, child):
206
213
  from .modal import Modal
207
214
  from .layout import Spacer
208
215
  if isinstance(child, Spacer):
209
216
  self.qtlayout.removeItem(child.outer)
217
+ self.mounted_children.pop(idx)
210
218
  elif isinstance(child, Modal):
211
219
  pass
212
220
  elif isinstance(child, QtBaseWidget) or isinstance(child, QtBaseLayout):
213
221
  child.outer.setParent(None)
222
+ self.mounted_children.pop(idx)
223
+
224
+ def postUpdate(self):
225
+ super().postUpdate()
226
+
227
+ for i, child in enumerate(self.mounted_children):
228
+ child = child.get_node()
229
+ self.mounted_children[i] = child.get_node()
230
+
231
+ weight = child.layout_weight
232
+ self.qtlayout.setStretch(i, weight if weight else 0)
214
233
 
215
234
  def qt(self, **kwargs):
216
235
  for k,v in kwargs.items():
PUI/PySide6/canvas.py CHANGED
@@ -73,10 +73,25 @@ class PUIQtCanvas(QtWidgets.QWidget):
73
73
 
74
74
  node.width = self.geometry().width()
75
75
  node.height = self.geometry().height()
76
- node.painter(node, *node.args)
77
-
76
+ immediate = node.painter(node, *node.args)
78
77
  node.qpainter.end()
79
78
  node.qpainter = None
79
+ if immediate:
80
+ self.update()
81
+
82
+ class ImageResource():
83
+ def crop(self, x, y, width, height):
84
+ ir = ImageResource()
85
+ ir.qimage = self.qimage.copy(x, y, width, height)
86
+ return ir
87
+
88
+ def scale(self, width, height, keepAspectRatio=True, quality=0):
89
+ ir = ImageResource()
90
+ method = {
91
+ 0: QtCore.Qt.TransformationMode.FastTransformation
92
+ }.get(quality, QtCore.Qt.TransformationMode.SmoothTransformation)
93
+ ir.qimage = self.qimage.scaled(width, height, QtCore.Qt.AspectRatioMode.KeepAspectRatio if keepAspectRatio else QtCore.Qt.IgnoreAspectRatio, method)
94
+ return ir
80
95
 
81
96
  class Canvas(QtBaseWidget):
82
97
  def __init__(self, painter, *args):
@@ -300,16 +315,18 @@ class Canvas(QtBaseWidget):
300
315
  raise RuntimeError(f"Not implemented: drawShapely({type(shape).__name__}) {dir(shape)}")
301
316
 
302
317
  def loadImage(self, image_path):
303
- return QImage(image_path)
318
+ ir = ImageResource()
319
+ ir.qimage = QImage(image_path)
320
+ return ir
304
321
 
305
322
  def drawImage(self, image, x=0, y=0, width=None, height=None, src_x=0, src_y=0, src_width=None, src_height=None, opacity=1.0):
306
- if image.isNull():
323
+ if image.qimage.isNull():
307
324
  return
308
325
 
309
326
  if src_width is None:
310
- src_width = image.width() - src_x
327
+ src_width = image.qimage.width() - src_x
311
328
  if src_height is None:
312
- src_height = image.height() - src_y
329
+ src_height = image.qimage.height() - src_y
313
330
 
314
331
  source_rect = QtCore.QRect(src_x, src_y, src_width, src_height)
315
332
 
@@ -320,5 +337,5 @@ class Canvas(QtBaseWidget):
320
337
 
321
338
  dest_rect = QtCore.QRect(x, y, width, height)
322
339
  self.qpainter.setOpacity(opacity)
323
- self.qpainter.drawImage(dest_rect, image, source_rect)
340
+ self.qpainter.drawImage(dest_rect, image.qimage, source_rect)
324
341
  self.qpainter.setOpacity(1.0)
PUI/PySide6/textfield.py CHANGED
@@ -35,7 +35,7 @@ class TextField(QtBaseWidget):
35
35
 
36
36
  super().update(prev)
37
37
 
38
- def on_editing_finished(self):
38
+ def on_editing_finished(self): # finish editing
39
39
  node = self.get_node()
40
40
  node.editing = False
41
41
  value = self.ui.text()
@@ -51,14 +51,12 @@ class TextField(QtBaseWidget):
51
51
  self._change(e)
52
52
  node.ui.clearFocus()
53
53
 
54
- def on_textchanged(self):
54
+ def on_textchanged(self): # editing
55
55
  node = self.get_node()
56
+ self.editing = True
56
57
  value = self.ui.text()
57
58
  if node.edit_model:
58
- node.editing = True
59
59
  node.edit_model.value = value
60
- else:
61
- node.model.value = value
62
60
  e = PUIEvent()
63
61
  e.value = value
64
62
  self._input(e)
PUI/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.15"
1
+ __version__ = "0.17"
2
2
 
3
3
  from .node import *
4
4
  from .view import *
PUI/flet/textfield.py CHANGED
@@ -30,19 +30,17 @@ class TextField(FBase):
30
30
 
31
31
  super().update(prev)
32
32
 
33
- def on_textbox_changed(self, e):
33
+ def on_textbox_changed(self, e): # editing
34
34
  node = self.get_node()
35
+ node.editing = True
35
36
  value = e.control.value
36
37
  if node.edit_model:
37
- node.editing = True
38
38
  node.edit_model.value = value
39
- else:
40
- node.model.value = value
41
39
  e = PUIEvent()
42
40
  e.value = value
43
41
  self._input(e)
44
42
 
45
- def on_change(self, e):
43
+ def on_change(self, e): # finish editing
46
44
  node = self.get_node()
47
45
  node.editing = False
48
46
  value = e.control.value
@@ -22,10 +22,10 @@ class PUITextualApp(App):
22
22
  event.radio_button.puinode.get_node()._changed(event.value)
23
23
 
24
24
  def on_input_changed(self, event: Input.Changed) -> None:
25
- event.input.puinode.get_node()._changed(event.value)
25
+ event.input.puinode.get_node()._tchanged(event.value)
26
26
 
27
27
  def on_input_submitted(self, event: Input.Submitted) -> None:
28
- event.input.puinode.get_node()._submitted(event.value)
28
+ event.input.puinode.get_node()._tsubmitted(event.value)
29
29
 
30
30
  def on_checkbox_changed(self, event: Checkbox.Changed) -> None:
31
31
  event.checkbox.puinode.get_node()._changed(event.value)
PUI/textual/textfield.py CHANGED
@@ -11,16 +11,20 @@ class TextField(TBase):
11
11
 
12
12
  def update(self, prev):
13
13
  model_value = str(self.model.value)
14
+
14
15
  if prev and prev.ui:
15
16
  self.editing = prev.editing
16
17
  self.ui = prev.ui
17
18
  self.curr_value = prev.curr_value
19
+ self.changing = prev.changing
18
20
 
19
21
  if self.curr_value.set(model_value) and not self.editing:
22
+ self.changing = True # block changed event from next line
20
23
  self.ui.value = model_value
21
24
  else:
22
25
  self.ui = widgets.Input(model_value)
23
26
  self.curr_value = Prop(model_value)
27
+ self.changing = True # block changed event from initialization
24
28
 
25
29
  if self.edit_model and not self.editing:
26
30
  self.edit_model.value = model_value
@@ -28,19 +32,19 @@ class TextField(TBase):
28
32
  self.ui.puinode = self
29
33
  super().update(prev)
30
34
 
31
-
32
- def _changed(self, value):
35
+ def _tchanged(self, value): # editing
36
+ if self.changing:
37
+ self.changing = False
38
+ return
33
39
  node = self.get_node()
40
+ node.editing = True
34
41
  if node.edit_model:
35
- node.editing = True
36
42
  node.edit_model.value = value
37
- else:
38
- node.model.value = value
39
43
  e = PUIEvent()
40
44
  e.value = value
41
45
  self._input(e)
42
46
 
43
- def _submitted(self, value):
47
+ def _tsubmitted(self, value): # finish editing
44
48
  node = self.get_node()
45
49
  node.editing = False
46
50
  node.model.value = value
PUI/tkinter/textfield.py CHANGED
@@ -30,16 +30,14 @@ class TextField(TkBaseWidget):
30
30
 
31
31
  super().update(prev)
32
32
 
33
- def on_variable_changed(self, var, index, mode):
33
+ def on_variable_changed(self, var, index, mode): # editing
34
34
  node = self.get_node()
35
+ node.editing = True
35
36
  if node.edit_model:
36
- node.editing = True
37
37
  node.edit_model.value = self.variable.get()
38
- else:
39
- node.model.value = self.variable.get()
40
38
  self._input()
41
39
 
42
- def on_change(self):
40
+ def on_change(self): # finish editing
43
41
  node = self.get_node()
44
42
  node.editing = False
45
43
  value = self.variable.get()
PUI/wx/base.py CHANGED
@@ -193,9 +193,9 @@ class WxBaseLayout(WXBase):
193
193
 
194
194
  weight = child.layout_weight
195
195
  if self.container_x and child.expand_x:
196
- si.SetProportion(weight if weight else 1 if child.expand_x else 0)
196
+ si.SetProportion(weight if weight else 1 if child.expand_x else 0)
197
197
  elif self.container_y and child.expand_y:
198
- si.SetProportion(weight if weight else 1 if child.expand_y else 0)
198
+ si.SetProportion(weight if weight else 1 if child.expand_y else 0)
199
199
 
200
200
  p = 0
201
201
  if child.layout_padding:
PUI/wx/progressbar.py CHANGED
@@ -2,6 +2,8 @@ from .. import *
2
2
  from .base import *
3
3
 
4
4
  class ProgressBar(WxBaseWidget):
5
+ expand_x_prio = 1
6
+
5
7
  def __init__(self, progress, maximum=1):
6
8
  super().__init__()
7
9
  self.progress = progress
PUI/wx/textfield.py CHANGED
@@ -21,10 +21,11 @@ class TextField(WxBaseWidget):
21
21
  self.ui.SetValue(model_value)
22
22
  else:
23
23
  self.curr_value = Prop(model_value)
24
- self.ui = wx.TextCtrl(getWindow(self.parent))
24
+ self.ui = wx.TextCtrl(getWindow(self.parent), style=wx.TE_PROCESS_ENTER)
25
25
  self.ui.SetValue(model_value)
26
26
  self.ui.Bind(wx.EVT_TEXT, self.on_textchanged)
27
27
  self.ui.Bind(wx.EVT_KILL_FOCUS, self.on_kill_focus)
28
+ self.ui.Bind(wx.EVT_TEXT_ENTER, self.on_enter)
28
29
 
29
30
  self.ui.SetMinSize((self.layout_width, self.layout_height))
30
31
 
@@ -33,7 +34,17 @@ class TextField(WxBaseWidget):
33
34
 
34
35
  super().update(prev)
35
36
 
36
- def on_textchanged(self, *args):
37
+ def on_enter(self, event):
38
+ from .window import Window
39
+ p = self.parent
40
+ while p:
41
+ if isinstance(p, Window):
42
+ p.panel.SetFocus()
43
+ break
44
+ p = p.parent
45
+ event.Skip()
46
+
47
+ def on_textchanged(self, event): # editing
37
48
  node = self.get_node()
38
49
  node.editing = True
39
50
  value = self.ui.GetValue()
@@ -43,15 +54,13 @@ class TextField(WxBaseWidget):
43
54
  e.value = value
44
55
  self._input(e)
45
56
 
46
- def on_kill_focus(self, *args):
57
+ def on_kill_focus(self, event): # finish editing
47
58
  node = self.get_node()
59
+ node.editing = False
48
60
  value = self.ui.GetValue()
49
61
  node.model.value = value
50
62
  if node.edit_model:
51
- node.editing = True
52
63
  node.edit_model.value = value
53
- else:
54
- node.model.value = value
55
64
  e = PUIEvent()
56
65
  e.value = value
57
66
  self._change(e)
PUI/wx/window.py CHANGED
@@ -16,15 +16,21 @@ class Window(WxBaseWidget):
16
16
  self.fullscreen = fullscreen
17
17
  self.curr_fullscreen = None
18
18
 
19
+ @property
20
+ def inner(self):
21
+ return self.panel
22
+
19
23
  def update(self, prev=None):
20
24
  if prev and prev.ui:
21
25
  self.ui = prev.ui
26
+ self.panel = prev.panel
22
27
  self.curr_icon = prev.curr_icon
23
28
  self.curr_size = prev.curr_size
24
29
  self.curr_maximize = prev.curr_maximize
25
30
  self.curr_fullscreen = prev.curr_fullscreen
26
31
  else:
27
32
  self.ui = wx.Frame(None)
33
+ self.panel = wx.Panel(self.ui) # to grab focus when clicked
28
34
  self.curr_icon = Prop()
29
35
  self.curr_size = Prop()
30
36
  self.curr_maximize = Prop()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qpuiq
3
- Version: 0.15
3
+ Version: 0.17
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
- PUI/__init__.py,sha256=2Jbb5tT35Wh-P7iIVZvi104eGc8KVBOYVdQa0Yj5EhU,966
1
+ PUI/__init__.py,sha256=aR2JMZVOEJKYm0DSrzHM35XqpSEE9ReRHh_mJlma-nk,966
2
2
  PUI/common.py,sha256=fUJmHOu5lSCeiOhFDF6YqulJxFqWmsneqnDZ2kZFFmM,581
3
3
  PUI/decorator.py,sha256=BN3POYv69QCDomoHENN-UA-d4wY_vfARIb5RJ2qEnS8,483
4
4
  PUI/dom.py,sha256=RgdDyv6vSFgkCoj9G2cjzQQOiymG8DwmmSoAZfxYvJM,10141
@@ -10,9 +10,9 @@ PUI/utils.py,sha256=canb7_Uz0sQ1UZDzyDuIsfAVXzEfZCkc9F81sMY4rTE,505
10
10
  PUI/view.py,sha256=Oe6sXLHD554GnlLlO5QpY7kegngkzrmMEYRHrdzGZUQ,4623
11
11
  PUI/PySide6/__init__.py,sha256=z895ldBVUaEqfGQW4CvYhWh2F6L0qGQA1MXUHVMf9Ms,1110
12
12
  PUI/PySide6/application.py,sha256=OsIE47efST4I13txD-7rS1cTWAGhynckl45Wdb1bafk,1471
13
- PUI/PySide6/base.py,sha256=bhIxbw16l78lgkSpN4_s2cV33pObj3O3yGhtiNIJ10w,7916
13
+ PUI/PySide6/base.py,sha256=zhRrm5vDkieIXTEKpBRkVjSxfm0yBW-yMrqoMDw0Gvg,8564
14
14
  PUI/PySide6/button.py,sha256=mHfcH98dABYgksuT58fK0amSwtCM9aaYwr7Y2EArEJA,561
15
- PUI/PySide6/canvas.py,sha256=Qad87bLpQJoh8U5hjqH3g3mSbodPwweT0TOqnB5LPyI,10416
15
+ PUI/PySide6/canvas.py,sha256=8sBsxs7qu63xbalCeem6hWLk3s7QPHOoX738N5Gqxaw,11155
16
16
  PUI/PySide6/checkbox.py,sha256=Rsns0BleE4g9yTDdlsD8IADU3qcQkVO2VsFVvYlNL88,900
17
17
  PUI/PySide6/combobox.py,sha256=4FvMt8D9MSyGk_oNHZ0jDuop7A-dkrxEesUXMdKghuw,2503
18
18
  PUI/PySide6/dialog.py,sha256=4rAyLMqd47ALDxrBGLFHS5FD75SP1I8tkMSKBdaPkv0,2364
@@ -31,7 +31,7 @@ PUI/PySide6/splitter.py,sha256=ObjcC8UgkAL7o-xXhi4XIkDEKhC4s5Ukk7tKMNa023Q,797
31
31
  PUI/PySide6/tab.py,sha256=tMkhEfD4Wb_7Hs4-u4nOzm87GSHqmehcnwcFm24qRIg,953
32
32
  PUI/PySide6/table.py,sha256=TTCMf_YNKmkFiqs_qLqw3qbvFsxoBNnz9VMObx_2l3s,4800
33
33
  PUI/PySide6/text.py,sha256=4kRRZiuH-bLLJMNZ6hK9zAWOorsG-l4uujHbG6I5S20,1069
34
- PUI/PySide6/textfield.py,sha256=Us-UZMDCwrREwFLjPKKa3e3c_1U4WWD2kzFCe3xiY0k,2140
34
+ PUI/PySide6/textfield.py,sha256=mjaQErUTqJ1VUeWXLfzoInTbCuKICX5o-tXAAQQS04s,2112
35
35
  PUI/PySide6/toolbar.py,sha256=NPkn99D5xK4RLBA0vxLD7EqYu5eh9ucCL2y1vSJWQl4,1800
36
36
  PUI/PySide6/tree.py,sha256=skMsCykh8kWXFTg4Yv--PevJ58fqEeZV566ICjBVO4E,9324
37
37
  PUI/PySide6/window.py,sha256=8_Y1DV_KobKeh5TS4VP9MV1hluz7pJr8jNakTVyrQlM,2845
@@ -48,10 +48,10 @@ PUI/flet/radiobutton.py,sha256=IrgP_SvOImhZvFAZ6ZeAXv6KTUw3bEaGAIsxfODiO9I,830
48
48
  PUI/flet/scroll.py,sha256=B2IKoE6yo5CB8BykH_wAh3hbEavTnboYtajdknpp3b4,2212
49
49
  PUI/flet/tab.py,sha256=T26PZ-Ma_LPUx7u9qbxEnYqxuR1-qlytWiB9TDpu7G8,997
50
50
  PUI/flet/text.py,sha256=HGnhOTDwG5pqceK8x_C6wCZj1AKuqZ9vEZB_NFwXZo4,1465
51
- PUI/flet/textfield.py,sha256=7BPRrdf4pv8rDM5BpZzMQ9b456kZpXm81y7sVW3K4XM,1802
51
+ PUI/flet/textfield.py,sha256=1N3WwKrDkTkQGtA8pNAXeSL-CZhfpg1TDYhFFjbhnL0,1774
52
52
  PUI/flet/window.py,sha256=NqUnGYvhk2Mpo_G2WthZOEvlU6VMx6AM-jWMKcUqGDM,650
53
53
  PUI/textual/__init__.py,sha256=cPf0_BXd2Q-6w-0UHyxFQ6QLfTVDaoo7XmSCW_1kpyc,732
54
- PUI/textual/application.py,sha256=FNpZ1j05EbE3XNxqMBDfsU_IPQ1k2Y7xw-5KLtwuFnI,2514
54
+ PUI/textual/application.py,sha256=ot7H0RRNf65PU9tF6EU6x2qLq7Yhv9tCA9Q4ZyZ7doo,2516
55
55
  PUI/textual/base.py,sha256=W0tfxGlZErrsCoLb9IuFjgmNa93vZFCYNgZr1V6VEjE,4821
56
56
  PUI/textual/button.py,sha256=VF7fmgi5mHeOzptZzy4oBfcuCeUURq5eFrLvN4Fgg30,436
57
57
  PUI/textual/checkbox.py,sha256=pkBxZz0qXl2KUz2-Lqap-r2Y3DBI0CET3wQgEpYKb7U,518
@@ -62,7 +62,7 @@ PUI/textual/radiobutton.py,sha256=zFKG2LeUnPXnxpxeW3cYqPwd91DQZWFUctundau-4b0,62
62
62
  PUI/textual/scroll.py,sha256=u6-tFygXZR_giVsCaePahKxTb0xTbdBHCNisQA9jpWc,1974
63
63
  PUI/textual/tab.py,sha256=wcvyH1MZZNwwout8iJDifty_lqe6YuhfRpE3F0lUTBM,2158
64
64
  PUI/textual/text.py,sha256=BHvgK3JqBU_LrnWbaaKBFxQ_50Z9lFhcdEJoVJqbcSc,782
65
- PUI/textual/textfield.py,sha256=u01i-fhtSEMi_6F_bPWgf5TvRUQvuudaxi58Yp6WTbg,1412
65
+ PUI/textual/textfield.py,sha256=SVSOfVcdr0XtI9jyDwWgxDX5umSEbqL7_f7XC76A6Ak,1656
66
66
  PUI/textual/window.py,sha256=ygb1txNlo2bjQkKVzSD4UgU2OTzJ-zeEjM0p8wcYZJA,181
67
67
  PUI/tkinter/__init__.py,sha256=VQjdak9UO-zI7n9Kr4q_B-kgCXgag2DVoWWP_QdH2uk,982
68
68
  PUI/tkinter/application.py,sha256=NxWfU9NHJuceKMdLiGeklUKU5WjYVUomGL_hJpRtrbs,1141
@@ -77,11 +77,11 @@ PUI/tkinter/radiobutton.py,sha256=RBcC9u9v1N5RDTn6GxEwbJr0kYh43j-r7zB6Ic1pIqI,75
77
77
  PUI/tkinter/scroll.py,sha256=MhBuGcKRlqiMiNG1I5bI_wCJT4rwLQbB4ViOsXHcdi8,6685
78
78
  PUI/tkinter/tab.py,sha256=-1r95U0q3hnSLokD1QU3hsQ2wiDteZ6KZwula7rwbVQ,1426
79
79
  PUI/tkinter/text.py,sha256=5IJOD86iodYqUD-lFnLUnD4vYvUw-8wUPoLNq_RuBsA,501
80
- PUI/tkinter/textfield.py,sha256=-jab7t5-wpIejINRftXczv0685cze-H7pm3lWigOT5w,1788
80
+ PUI/tkinter/textfield.py,sha256=R4YNLfoxC7VSCuAFyVqaqKPTno7fUGO1u5YjkMrQ1Zk,1746
81
81
  PUI/tkinter/window.py,sha256=IIieSxxanhGIvPy0krQuLrStsL_jTUdx6TKbEf64nyQ,1606
82
82
  PUI/wx/__init__.py,sha256=j8L1kzL4CK_xeF0x5_NZekGETYP_1Dhq3-BuV1LtXoY,391
83
83
  PUI/wx/application.py,sha256=Ku_mloCyiw-KTl8a09uTIhV7uupG_7urqw8jXIwQMLc,965
84
- PUI/wx/base.py,sha256=3NKfMbfuH9qClFBP5bVIQtJyhnGRqsNuXwY0vvlyFnU,7596
84
+ PUI/wx/base.py,sha256=geBeTK_iyBC_0Wj7rK4tX6FZY4i5_MYAU52wERxv3rg,7594
85
85
  PUI/wx/button.py,sha256=ww3Iyn16zomP4zkQhvXTirmHBvlVMJxmiV1pfXtgrSo,447
86
86
  PUI/wx/canvas.py,sha256=uL4z0ghM15IWNlvmDyV3lVw8Li4RNMJWXHvwd7jZSiw,8487
87
87
  PUI/wx/checkbox.py,sha256=XgLxsi-tk2f9bnlEvhvEZV4boBGFB3u62ZE1cs8X9tU,674
@@ -90,14 +90,14 @@ PUI/wx/dialog.py,sha256=HVLVdzRkZhRndkHTYl0RgNfzIQBdtik7DIDg93Dp9JA,2572
90
90
  PUI/wx/divider.py,sha256=qnaUVpspAOND6YhZyQsZeos1LC02L-ljfdAtVp1vdzw,516
91
91
  PUI/wx/label.py,sha256=qr3hGfHtjvYjeXJSB2cD5u30LYodEzix4Q0FYw8p6p0,509
92
92
  PUI/wx/layout.py,sha256=nVO31_Xu4aDcTLxlz66DJ5PK2RPHk0yq6qdzyWuGVz8,1460
93
- PUI/wx/progressbar.py,sha256=gj5j6f-zG78XW1mEIRqiOEYMoYjG16jzS44Vnh4i148,472
93
+ PUI/wx/progressbar.py,sha256=OXLZRiBy9oYzBiI-mhQhARcoeSoawEa1Ur8b0CjWr2U,495
94
94
  PUI/wx/radiobutton.py,sha256=x7WnCGXuNPV98MqF-tRLzMOOExim22rayNL8jAYVZWk,769
95
95
  PUI/wx/scroll.py,sha256=pvRmt04XEgObpIgwl9i52Kf1wI9ubUfZM77fPHGW9zU,1494
96
96
  PUI/wx/text.py,sha256=YeIyDyHH0xBcD_iXbYSTtvL25YDtug1QJNVPvCSAqEk,544
97
- PUI/wx/textfield.py,sha256=BmMebfqlDJqacaKdh2SON88xF73l0csC7L7hoNjz-qs,1778
98
- PUI/wx/window.py,sha256=juAsn3W4SzmH8f5LDGvjwppvPD8fDObRUJ_MkQFKCIE,1847
99
- qpuiq-0.15.dist-info/licenses/LICENSE.txt,sha256=1Xwik2AmLNGoIYhAPzvNC28M08Q3EvkOe4TtlQuSd_E,1072
100
- qpuiq-0.15.dist-info/METADATA,sha256=81rbs87gprJ8SDPPbK6UVwCh59ZCQuzkrf32_uGZ2to,5994
101
- qpuiq-0.15.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
102
- qpuiq-0.15.dist-info/top_level.txt,sha256=zMudhifPite0CEVGYvdi-5W3P_dpum71xjU7_g-ZHS0,4
103
- qpuiq-0.15.dist-info/RECORD,,
97
+ PUI/wx/textfield.py,sha256=v3cSnmsyBix_G8xFXgZZrNLydlLTA6gQQPpkTdJ29hk,2086
98
+ PUI/wx/window.py,sha256=HBiWRpuhjSS89pjbdlbstjQmfR0mSECTsOPLu7ymLjo,2017
99
+ qpuiq-0.17.dist-info/licenses/LICENSE.txt,sha256=1Xwik2AmLNGoIYhAPzvNC28M08Q3EvkOe4TtlQuSd_E,1072
100
+ qpuiq-0.17.dist-info/METADATA,sha256=VXDMh8zCK84F5_hoCM002RaUHfLdJacO1qa2St3BUnA,5994
101
+ qpuiq-0.17.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
102
+ qpuiq-0.17.dist-info/top_level.txt,sha256=zMudhifPite0CEVGYvdi-5W3P_dpum71xjU7_g-ZHS0,4
103
+ qpuiq-0.17.dist-info/RECORD,,
File without changes