easycoder 251018.1__py2.py3-none-any.whl → 251021.1__py2.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 easycoder might be problematic. Click here for more details.
- easycoder/__init__.py +1 -1
- easycoder/ec_core.py +2 -1
- easycoder/ec_pyside.py +36 -2
- {easycoder-251018.1.dist-info → easycoder-251021.1.dist-info}/METADATA +1 -1
- {easycoder-251018.1.dist-info → easycoder-251021.1.dist-info}/RECORD +8 -8
- {easycoder-251018.1.dist-info → easycoder-251021.1.dist-info}/WHEEL +0 -0
- {easycoder-251018.1.dist-info → easycoder-251021.1.dist-info}/entry_points.txt +0 -0
- {easycoder-251018.1.dist-info → easycoder-251021.1.dist-info}/licenses/LICENSE +0 -0
easycoder/__init__.py
CHANGED
easycoder/ec_core.py
CHANGED
|
@@ -323,7 +323,8 @@ class Core(Handler):
|
|
|
323
323
|
symbolRecord = self.getVariable(command['var'])
|
|
324
324
|
value = self.getSymbolValue(symbolRecord)
|
|
325
325
|
content = value['content']
|
|
326
|
-
content
|
|
326
|
+
if key >= 0 and key < len(content): del(content[key])
|
|
327
|
+
else: RuntimeError(self.program, f'Index {key} out of range')
|
|
327
328
|
value['content'] = content
|
|
328
329
|
self.putSymbolValue(symbolRecord, value)
|
|
329
330
|
return self.nextPC()
|
easycoder/ec_pyside.py
CHANGED
|
@@ -26,6 +26,7 @@ from PySide6.QtWidgets import (
|
|
|
26
26
|
QSlider,
|
|
27
27
|
QSpinBox,
|
|
28
28
|
QTimeEdit,
|
|
29
|
+
QLayout,
|
|
29
30
|
QVBoxLayout,
|
|
30
31
|
QHBoxLayout,
|
|
31
32
|
QGridLayout,
|
|
@@ -281,8 +282,41 @@ class Graphics(Handler):
|
|
|
281
282
|
return False
|
|
282
283
|
|
|
283
284
|
def r_clear(self, command):
|
|
285
|
+
|
|
286
|
+
def clearLayout(layout: QLayout) -> None:
|
|
287
|
+
if layout is None:
|
|
288
|
+
return
|
|
289
|
+
while layout.count() > 0:
|
|
290
|
+
item = layout.takeAt(0)
|
|
291
|
+
if item is None:
|
|
292
|
+
continue
|
|
293
|
+
widget = item.widget()
|
|
294
|
+
if widget is not None:
|
|
295
|
+
# Delete the widget
|
|
296
|
+
widget.deleteLater()
|
|
297
|
+
elif item.layout() is not None:
|
|
298
|
+
# Recursively clear sub-layout
|
|
299
|
+
clearLayout(item.layout())
|
|
300
|
+
item.layout().deleteLater()
|
|
301
|
+
# The QLayoutItem will be automatically cleaned up by Qt
|
|
302
|
+
|
|
303
|
+
def clearWidget(widget: QWidget) -> None:
|
|
304
|
+
if widget is None:
|
|
305
|
+
return
|
|
306
|
+
# Clear the layout first
|
|
307
|
+
layout = widget.layout()
|
|
308
|
+
if layout is not None:
|
|
309
|
+
clearLayout(layout)
|
|
310
|
+
layout.deleteLater()
|
|
311
|
+
# Clear any remaining child widgets
|
|
312
|
+
child_widgets = widget.findChildren(QWidget, "", Qt.FindDirectChildrenOnly)
|
|
313
|
+
for child in child_widgets:
|
|
314
|
+
child.deleteLater()
|
|
315
|
+
|
|
284
316
|
widget = self.getWidget(self.getVariable(command['name']))
|
|
285
|
-
widget
|
|
317
|
+
clearWidget(widget)
|
|
318
|
+
return self.nextPC()
|
|
319
|
+
|
|
286
320
|
return self.nextPC()
|
|
287
321
|
|
|
288
322
|
# close {window}
|
|
@@ -1491,4 +1525,4 @@ class Graphics(Handler):
|
|
|
1491
1525
|
# Force the application to exit
|
|
1492
1526
|
def force_exit(self):
|
|
1493
1527
|
QApplication.quit() # Gracefully close the application
|
|
1494
|
-
sys.exit(0) # Force a complete system exit
|
|
1528
|
+
sys.exit(0) # Force a complete system exit
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: easycoder
|
|
3
|
-
Version:
|
|
3
|
+
Version: 251021.1
|
|
4
4
|
Summary: Rapid scripting in English
|
|
5
5
|
Keywords: compiler,scripting,prototyping,programming,coding,python,low code,hypertalk,computer language,learn to code
|
|
6
6
|
Author-email: Graham Trott <gtanyware@gmail.com>
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
easycoder/__init__.py,sha256=
|
|
1
|
+
easycoder/__init__.py,sha256=DJ3kZP8Psi4ElD1WHZmQhjMGB0ChfAPRt50pt2JIxdg,339
|
|
2
2
|
easycoder/close.png,sha256=3B9ueRNtEu9E4QNmZhdyC4VL6uqKvGmdfeFxIV9aO_Y,9847
|
|
3
3
|
easycoder/ec_border.py,sha256=KpOy0Jq8jI_6DYGo4jaFvoBP_jTIoAYWrmuHhl-FXA4,2355
|
|
4
4
|
easycoder/ec_classes.py,sha256=bejrby7mLHTeAQXhhz-1l8iv6LSbNSy30lW21KJKjXE,1832
|
|
5
5
|
easycoder/ec_compiler.py,sha256=LYwGNs8dcHKXI_nnu1sVFe1N36vjvylcUO_tX_bLjrk,5359
|
|
6
6
|
easycoder/ec_condition.py,sha256=YXvSBQKEzKGCcgUGo3Qp8iHolXmm2BpEm0NimSDszIM,785
|
|
7
|
-
easycoder/ec_core.py,sha256=
|
|
7
|
+
easycoder/ec_core.py,sha256=44QeY8S2P4oRcgYAiOdDfYy-urF4YfXUuS_HV2jH6BA,99758
|
|
8
8
|
easycoder/ec_handler.py,sha256=ED08ULiOlZkcs4XHxAguvdPZw_dFXuwGDFLbFuo0kLs,2317
|
|
9
9
|
easycoder/ec_keyboard.py,sha256=H8DhPT8-IvAIGgRxCs4qSaF_AQLaS6lxxtDteejbktM,19010
|
|
10
10
|
easycoder/ec_program.py,sha256=srVDRlELMElvnkjxmREczUVPkvPXPvanZglN4hKreLI,10324
|
|
11
|
-
easycoder/ec_pyside.py,sha256=
|
|
11
|
+
easycoder/ec_pyside.py,sha256=YtNWs3XMIa7FwTIxHe0ShEtFRyKrzD8bBSmKXxkQvUY,57476
|
|
12
12
|
easycoder/ec_timestamp.py,sha256=myQnnF-mT31_1dpQKv2VEAu4BCcbypvMdzq7_DUi1xc,277
|
|
13
13
|
easycoder/ec_value.py,sha256=zgDJTJhIg3yOvmnnKIfccIizmIhGbtvL_ghLTL1T5fg,2516
|
|
14
14
|
easycoder/tick.png,sha256=OedASXJJTYvnza4J6Kv5m5lz6DrBfy667zX_WGgtbmM,9127
|
|
15
|
-
easycoder-
|
|
16
|
-
easycoder-
|
|
17
|
-
easycoder-
|
|
18
|
-
easycoder-
|
|
19
|
-
easycoder-
|
|
15
|
+
easycoder-251021.1.dist-info/entry_points.txt,sha256=JXAZbenl0TnsIft2FcGJbJ-4qoztVu2FuT8PFmWFexM,44
|
|
16
|
+
easycoder-251021.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
17
|
+
easycoder-251021.1.dist-info/WHEEL,sha256=Dyt6SBfaasWElUrURkknVFAZDHSTwxg3PaTza7RSbkY,100
|
|
18
|
+
easycoder-251021.1.dist-info/METADATA,sha256=tK3XAF-X2zxpqURc0CS9iAge0U2AQbMO4PU82_YPWoY,6897
|
|
19
|
+
easycoder-251021.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|