easycoder 250423.1__py2.py3-none-any.whl → 250423.2__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_compiler.py +4 -4
- easycoder/ec_core.py +29 -28
- easycoder/ec_graphics.py +2 -2
- easycoder/ec_program.py +1 -1
- easycoder/ec_pyside6.py +72 -29
- {easycoder-250423.1.dist-info → easycoder-250423.2.dist-info}/METADATA +1 -1
- easycoder-250423.2.dist-info/RECORD +18 -0
- easycoder-250423.1.dist-info/RECORD +0 -18
- {easycoder-250423.1.dist-info → easycoder-250423.2.dist-info}/LICENSE +0 -0
- {easycoder-250423.1.dist-info → easycoder-250423.2.dist-info}/WHEEL +0 -0
- {easycoder-250423.1.dist-info → easycoder-250423.2.dist-info}/entry_points.txt +0 -0
easycoder/__init__.py
CHANGED
easycoder/ec_compiler.py
CHANGED
|
@@ -114,10 +114,10 @@ class Compiler:
|
|
|
114
114
|
def compileLabel(self, command):
|
|
115
115
|
return self.compileSymbol(command, self.getToken(), False)
|
|
116
116
|
|
|
117
|
-
def compileVariable(self, command,
|
|
118
|
-
return self.compileSymbol(command, self.nextToken(),
|
|
117
|
+
def compileVariable(self, command, hasValue = False):
|
|
118
|
+
return self.compileSymbol(command, self.nextToken(), hasValue)
|
|
119
119
|
|
|
120
|
-
def compileSymbol(self, command, name,
|
|
120
|
+
def compileSymbol(self, command, name, hasValue):
|
|
121
121
|
try:
|
|
122
122
|
v = self.symbols[name]
|
|
123
123
|
except:
|
|
@@ -128,7 +128,7 @@ class Compiler:
|
|
|
128
128
|
self.symbols[name] = self.getPC()
|
|
129
129
|
command['program'] = self.program
|
|
130
130
|
command['type'] = 'symbol'
|
|
131
|
-
command['
|
|
131
|
+
command['hasValue'] = hasValue
|
|
132
132
|
command['name'] = name
|
|
133
133
|
command['elements'] = 1
|
|
134
134
|
command['index'] = 0
|
easycoder/ec_core.py
CHANGED
|
@@ -26,7 +26,7 @@ class Core(Handler):
|
|
|
26
26
|
if self.nextToken() == 'to':
|
|
27
27
|
if self.nextIsSymbol():
|
|
28
28
|
symbolRecord = self.getSymbolRecord()
|
|
29
|
-
if symbolRecord['
|
|
29
|
+
if symbolRecord['hasValue']:
|
|
30
30
|
if self.peek() == 'giving':
|
|
31
31
|
# This variable must be treated as a second value
|
|
32
32
|
command['value2'] = self.getValue()
|
|
@@ -57,7 +57,7 @@ class Core(Handler):
|
|
|
57
57
|
except:
|
|
58
58
|
value2 = None
|
|
59
59
|
target = self.getVariable(command['target'])
|
|
60
|
-
if not target['
|
|
60
|
+
if not target['hasValue']:
|
|
61
61
|
self.variableDoesNotHoldAValueError(target['name'])
|
|
62
62
|
targetValue = self.getSymbolValue(target)
|
|
63
63
|
if targetValue == None:
|
|
@@ -87,7 +87,7 @@ class Core(Handler):
|
|
|
87
87
|
if self.nextIs('to'):
|
|
88
88
|
if self.nextIsSymbol():
|
|
89
89
|
symbolRecord = self.getSymbolRecord()
|
|
90
|
-
if symbolRecord['
|
|
90
|
+
if symbolRecord['hasValue']:
|
|
91
91
|
command['target'] = symbolRecord['name']
|
|
92
92
|
self.add(command)
|
|
93
93
|
return True
|
|
@@ -149,7 +149,7 @@ class Core(Handler):
|
|
|
149
149
|
def k_clear(self, command):
|
|
150
150
|
if self.nextIsSymbol():
|
|
151
151
|
target = self.getSymbolRecord()
|
|
152
|
-
if target['
|
|
152
|
+
if target['hasValue']:
|
|
153
153
|
command['target'] = target['name']
|
|
154
154
|
self.add(command)
|
|
155
155
|
return True
|
|
@@ -245,7 +245,7 @@ class Core(Handler):
|
|
|
245
245
|
def k_decrement(self, command):
|
|
246
246
|
if self.nextIsSymbol():
|
|
247
247
|
symbolRecord = self.getSymbolRecord()
|
|
248
|
-
if symbolRecord['
|
|
248
|
+
if symbolRecord['hasValue']:
|
|
249
249
|
command['target'] = self.getToken()
|
|
250
250
|
self.add(command)
|
|
251
251
|
return True
|
|
@@ -325,7 +325,7 @@ class Core(Handler):
|
|
|
325
325
|
except:
|
|
326
326
|
value2 = None
|
|
327
327
|
target = self.getVariable(command['target'])
|
|
328
|
-
if not target['
|
|
328
|
+
if not target['hasValue']:
|
|
329
329
|
self.variableDoesNotHoldAValueError(target['name'])
|
|
330
330
|
return None
|
|
331
331
|
value = self.getSymbolValue(target)
|
|
@@ -400,7 +400,7 @@ class Core(Handler):
|
|
|
400
400
|
def k_get(self, command):
|
|
401
401
|
if self.nextIsSymbol():
|
|
402
402
|
symbolRecord = self.getSymbolRecord()
|
|
403
|
-
if symbolRecord['
|
|
403
|
+
if symbolRecord['hasValue']:
|
|
404
404
|
command['target'] = self.getToken()
|
|
405
405
|
else:
|
|
406
406
|
FatalError(self.compiler, f'Variable "{symbolRecord["name"]}" does not hold a value')
|
|
@@ -610,7 +610,7 @@ class Core(Handler):
|
|
|
610
610
|
def k_increment(self, command):
|
|
611
611
|
if self.nextIsSymbol():
|
|
612
612
|
symbolRecord = self.getSymbolRecord()
|
|
613
|
-
if symbolRecord['
|
|
613
|
+
if symbolRecord['hasValue']:
|
|
614
614
|
command['target'] = self.getToken()
|
|
615
615
|
self.add(command)
|
|
616
616
|
return True
|
|
@@ -701,7 +701,7 @@ class Core(Handler):
|
|
|
701
701
|
return True
|
|
702
702
|
elif self.isSymbol():
|
|
703
703
|
symbolRecord = self.getSymbolRecord()
|
|
704
|
-
if symbolRecord['
|
|
704
|
+
if symbolRecord['hasValue']:
|
|
705
705
|
command['target'] = symbolRecord['name']
|
|
706
706
|
if self.nextIs('from'):
|
|
707
707
|
command['file'] = self.nextValue()
|
|
@@ -785,7 +785,7 @@ class Core(Handler):
|
|
|
785
785
|
except:
|
|
786
786
|
value2 = None
|
|
787
787
|
target = self.getVariable(command['target'])
|
|
788
|
-
if not target['
|
|
788
|
+
if not target['hasValue']:
|
|
789
789
|
self.variableDoesNotHoldAValueError(target['name'])
|
|
790
790
|
return None
|
|
791
791
|
value = self.getSymbolValue(target)
|
|
@@ -810,7 +810,7 @@ class Core(Handler):
|
|
|
810
810
|
def k_negate(self, command):
|
|
811
811
|
if self.nextIsSymbol():
|
|
812
812
|
symbolRecord = self.getSymbolRecord()
|
|
813
|
-
if symbolRecord['
|
|
813
|
+
if symbolRecord['hasValue']:
|
|
814
814
|
command['target'] = self.getToken()
|
|
815
815
|
self.add(command)
|
|
816
816
|
return True
|
|
@@ -819,7 +819,7 @@ class Core(Handler):
|
|
|
819
819
|
|
|
820
820
|
def r_negate(self, command):
|
|
821
821
|
symbolRecord = self.getVariable(command['target'])
|
|
822
|
-
if not symbolRecord['
|
|
822
|
+
if not symbolRecord['hasValue']:
|
|
823
823
|
RuntimeError(self.program, f'{symbolRecord["name"]} does not hold a value')
|
|
824
824
|
return None
|
|
825
825
|
value = self.getSymbolValue(symbolRecord)
|
|
@@ -921,7 +921,7 @@ class Core(Handler):
|
|
|
921
921
|
|
|
922
922
|
def r_pop(self, command):
|
|
923
923
|
symbolRecord = self.getVariable(command['target'])
|
|
924
|
-
if not symbolRecord['
|
|
924
|
+
if not symbolRecord['hasValue']:
|
|
925
925
|
RuntimeError(self.program, f'{symbolRecord["name"]} does not hold a value')
|
|
926
926
|
stackRecord = self.getVariable(command['from'])
|
|
927
927
|
stack = self.getSymbolValue(stackRecord)
|
|
@@ -1060,7 +1060,7 @@ class Core(Handler):
|
|
|
1060
1060
|
if self.nextIsSymbol():
|
|
1061
1061
|
symbolRecord = self.getSymbolRecord()
|
|
1062
1062
|
command['target'] = symbolRecord['name']
|
|
1063
|
-
if '
|
|
1063
|
+
if 'hasValue' in symbolRecord and symbolRecord['hasValue'] == False:
|
|
1064
1064
|
FatalError(self.compiler, f'Symbol {symbolRecord["name"]} is not a value holder')
|
|
1065
1065
|
else:
|
|
1066
1066
|
self.add(command)
|
|
@@ -1074,7 +1074,7 @@ class Core(Handler):
|
|
|
1074
1074
|
if value == None:
|
|
1075
1075
|
return -1
|
|
1076
1076
|
symbolRecord = self.getVariable(command['target'])
|
|
1077
|
-
if not symbolRecord['
|
|
1077
|
+
if not symbolRecord['hasValue']:
|
|
1078
1078
|
RuntimeError(self.program, f'{symbolRecord["name"]} does not hold a value')
|
|
1079
1079
|
return -1
|
|
1080
1080
|
self.putSymbolValue(symbolRecord, value)
|
|
@@ -1090,7 +1090,7 @@ class Core(Handler):
|
|
|
1090
1090
|
command['line'] = False
|
|
1091
1091
|
if self.nextIsSymbol():
|
|
1092
1092
|
symbolRecord = self.getSymbolRecord()
|
|
1093
|
-
if symbolRecord['
|
|
1093
|
+
if symbolRecord['hasValue']:
|
|
1094
1094
|
if self.peek() == 'from':
|
|
1095
1095
|
self.nextToken()
|
|
1096
1096
|
if self.nextIsSymbol():
|
|
@@ -1259,7 +1259,7 @@ class Core(Handler):
|
|
|
1259
1259
|
def k_set(self, command):
|
|
1260
1260
|
if self.nextIsSymbol():
|
|
1261
1261
|
target = self.getSymbolRecord()
|
|
1262
|
-
if target['
|
|
1262
|
+
if target['hasValue']:
|
|
1263
1263
|
command['type'] = 'set'
|
|
1264
1264
|
command['target'] = target['name']
|
|
1265
1265
|
self.add(command)
|
|
@@ -1384,7 +1384,7 @@ class Core(Handler):
|
|
|
1384
1384
|
def k_split(self, command):
|
|
1385
1385
|
if self.nextIsSymbol():
|
|
1386
1386
|
symbolRecord = self.getSymbolRecord()
|
|
1387
|
-
if symbolRecord['
|
|
1387
|
+
if symbolRecord['hasValue']:
|
|
1388
1388
|
command['target'] = symbolRecord['name']
|
|
1389
1389
|
value = {}
|
|
1390
1390
|
value['type'] = 'text'
|
|
@@ -1423,7 +1423,7 @@ class Core(Handler):
|
|
|
1423
1423
|
def k_shuffle(self, command):
|
|
1424
1424
|
if self.nextIsSymbol():
|
|
1425
1425
|
symbolRecord = self.getSymbolRecord()
|
|
1426
|
-
if symbolRecord['
|
|
1426
|
+
if symbolRecord['hasValue']:
|
|
1427
1427
|
command['target'] = self.getToken()
|
|
1428
1428
|
self.add(command)
|
|
1429
1429
|
return True
|
|
@@ -1432,7 +1432,7 @@ class Core(Handler):
|
|
|
1432
1432
|
|
|
1433
1433
|
def r_shuffle(self, command):
|
|
1434
1434
|
symbolRecord = self.getVariable(command['target'])
|
|
1435
|
-
if not symbolRecord['
|
|
1435
|
+
if not symbolRecord['hasValue']:
|
|
1436
1436
|
RuntimeError(self.program, f'{symbolRecord["name"]} does not hold a value')
|
|
1437
1437
|
return None
|
|
1438
1438
|
value = self.getSymbolValue(symbolRecord)
|
|
@@ -1495,7 +1495,7 @@ class Core(Handler):
|
|
|
1495
1495
|
if self.nextToken() == 'from':
|
|
1496
1496
|
if self.nextIsSymbol():
|
|
1497
1497
|
symbolRecord = self.getSymbolRecord()
|
|
1498
|
-
if symbolRecord['
|
|
1498
|
+
if symbolRecord['hasValue']:
|
|
1499
1499
|
if self.peek() == 'giving':
|
|
1500
1500
|
# This variable must be treated as a second value
|
|
1501
1501
|
command['value2'] = self.getValue()
|
|
@@ -1530,7 +1530,7 @@ class Core(Handler):
|
|
|
1530
1530
|
except:
|
|
1531
1531
|
value2 = None
|
|
1532
1532
|
target = self.getVariable(command['target'])
|
|
1533
|
-
if not target['
|
|
1533
|
+
if not target['hasValue']:
|
|
1534
1534
|
self.variableDoesNotHoldAValueError(target['name'])
|
|
1535
1535
|
return None
|
|
1536
1536
|
value = self.getSymbolValue(target)
|
|
@@ -1552,7 +1552,7 @@ class Core(Handler):
|
|
|
1552
1552
|
def k_toggle(self, command):
|
|
1553
1553
|
if self.nextIsSymbol():
|
|
1554
1554
|
target = self.getSymbolRecord()
|
|
1555
|
-
if target['
|
|
1555
|
+
if target['hasValue']:
|
|
1556
1556
|
command['target'] = target['name']
|
|
1557
1557
|
self.add(command)
|
|
1558
1558
|
return True
|
|
@@ -1712,7 +1712,7 @@ class Core(Handler):
|
|
|
1712
1712
|
|
|
1713
1713
|
def incdec(self, command, mode):
|
|
1714
1714
|
symbolRecord = self.getVariable(command['target'])
|
|
1715
|
-
if not symbolRecord['
|
|
1715
|
+
if not symbolRecord['hasValue']:
|
|
1716
1716
|
RuntimeError(self.program, f'{symbolRecord["name"]} does not hold a value')
|
|
1717
1717
|
return None
|
|
1718
1718
|
value = self.getSymbolValue(symbolRecord)
|
|
@@ -1781,7 +1781,7 @@ class Core(Handler):
|
|
|
1781
1781
|
if self.nextToken() == 'of':
|
|
1782
1782
|
if self.nextIsSymbol():
|
|
1783
1783
|
symbolRecord = self.getSymbolRecord()
|
|
1784
|
-
if symbolRecord['
|
|
1784
|
+
if symbolRecord['hasValue']:
|
|
1785
1785
|
value['target'] = symbolRecord['name']
|
|
1786
1786
|
return value
|
|
1787
1787
|
self.warning(f'Core.compileValue: Token \'{self.getToken()}\' does not hold a value')
|
|
@@ -1792,7 +1792,7 @@ class Core(Handler):
|
|
|
1792
1792
|
if self.nextToken() == 'of':
|
|
1793
1793
|
if self.nextIsSymbol():
|
|
1794
1794
|
symbolRecord = self.getSymbolRecord()
|
|
1795
|
-
if symbolRecord['
|
|
1795
|
+
if symbolRecord['hasValue']:
|
|
1796
1796
|
value['target'] = symbolRecord['name']
|
|
1797
1797
|
return value
|
|
1798
1798
|
FatalError(self.compiler, 'Variable does not hold a value')
|
|
@@ -1838,8 +1838,9 @@ class Core(Handler):
|
|
|
1838
1838
|
if token == 'count':
|
|
1839
1839
|
if self.nextIs('of'):
|
|
1840
1840
|
if self.nextIsSymbol():
|
|
1841
|
-
|
|
1842
|
-
|
|
1841
|
+
if self.getSymbolRecord()['hasValue']:
|
|
1842
|
+
value['name'] = self.getToken()
|
|
1843
|
+
return value
|
|
1843
1844
|
return None
|
|
1844
1845
|
|
|
1845
1846
|
if token == 'index':
|
easycoder/ec_graphics.py
CHANGED
|
@@ -165,11 +165,11 @@ class Graphics(Handler):
|
|
|
165
165
|
def k_get(self, command):
|
|
166
166
|
if self.nextIsSymbol():
|
|
167
167
|
symbolRecord = self.getSymbolRecord()
|
|
168
|
-
if symbolRecord['
|
|
168
|
+
if symbolRecord['hasValue']:
|
|
169
169
|
command['target'] = self.getToken()
|
|
170
170
|
else:
|
|
171
171
|
FatalError(self.compiler, f'Variable "{symbolRecord["name"]}" does not hold a value')
|
|
172
|
-
if symbolRecord['
|
|
172
|
+
if symbolRecord['hasValue']:
|
|
173
173
|
if self.nextIs('from'):
|
|
174
174
|
if self.nextIs('popup'):
|
|
175
175
|
command['ptype'] = self.nextToken()
|
easycoder/ec_program.py
CHANGED
|
@@ -149,7 +149,7 @@ class Program:
|
|
|
149
149
|
elif valType == 'symbol':
|
|
150
150
|
name = value['name']
|
|
151
151
|
symbolRecord = self.getSymbolRecord(name)
|
|
152
|
-
if symbolRecord['
|
|
152
|
+
if symbolRecord['hasValue']:
|
|
153
153
|
handler = self.domainIndex[symbolRecord['domain']].valueHandler('symbol')
|
|
154
154
|
result = handler(symbolRecord)
|
|
155
155
|
else:
|
easycoder/ec_pyside6.py
CHANGED
|
@@ -424,6 +424,30 @@ class Graphics(Handler):
|
|
|
424
424
|
def r_dialog(self, command):
|
|
425
425
|
return self.nextPC()
|
|
426
426
|
|
|
427
|
+
# Disable a widget
|
|
428
|
+
def k_disable(self, command):
|
|
429
|
+
if self.nextIsSymbol():
|
|
430
|
+
command['name'] = self.getSymbolRecord()['name']
|
|
431
|
+
self.add(command)
|
|
432
|
+
return True
|
|
433
|
+
return False
|
|
434
|
+
|
|
435
|
+
def r_disable(self, command):
|
|
436
|
+
self.getVariable(command['name'])['widget'].setEnabled(False)
|
|
437
|
+
return self.nextPC()
|
|
438
|
+
|
|
439
|
+
# Enable a widget
|
|
440
|
+
def k_enable(self, command):
|
|
441
|
+
if self.nextIsSymbol():
|
|
442
|
+
command['name'] = self.getSymbolRecord()['name']
|
|
443
|
+
self.add(command)
|
|
444
|
+
return True
|
|
445
|
+
return False
|
|
446
|
+
|
|
447
|
+
def r_enable(self, command):
|
|
448
|
+
self.getVariable(command['name'])['widget'].setEnabled(True)
|
|
449
|
+
return self.nextPC()
|
|
450
|
+
|
|
427
451
|
# Create a group box
|
|
428
452
|
def k_groupbox(self, command):
|
|
429
453
|
return self.compileVariable(command, False)
|
|
@@ -525,19 +549,33 @@ class Graphics(Handler):
|
|
|
525
549
|
def r_pushbutton(self, command):
|
|
526
550
|
return self.nextPC()
|
|
527
551
|
|
|
528
|
-
#
|
|
529
|
-
def
|
|
530
|
-
|
|
531
|
-
self.
|
|
552
|
+
# remove current item from {combobox}
|
|
553
|
+
def k_remove(self, command):
|
|
554
|
+
command['variant'] = None
|
|
555
|
+
if self.nextIs('current'):
|
|
556
|
+
if self.nextIs('item'):
|
|
557
|
+
if self.nextIs('from'):
|
|
558
|
+
if self.nextIsSymbol():
|
|
559
|
+
record = self.getSymbolRecord()
|
|
560
|
+
if record['keyword'] == 'combobox':
|
|
561
|
+
command['variant'] = 'current'
|
|
562
|
+
command['name'] = record['name']
|
|
563
|
+
self.addCommand(command)
|
|
564
|
+
return True
|
|
565
|
+
return False
|
|
566
|
+
|
|
567
|
+
def r_remove(self, command):
|
|
568
|
+
variant = command['variant']
|
|
569
|
+
record = self.getVariable(command['name'])
|
|
570
|
+
if record['keyword'] == 'combobox' and variant == 'current':
|
|
571
|
+
widget = record['widget']
|
|
572
|
+
widget.removeItem(widget.currentIndex())
|
|
573
|
+
return self.nextPC()
|
|
532
574
|
|
|
533
575
|
# This is called every 10ms to keep the main application running
|
|
534
576
|
def flush(self):
|
|
535
577
|
self.program.flushCB()
|
|
536
578
|
|
|
537
|
-
# Resume execution at the line following 'start graphics'
|
|
538
|
-
def resume(self):
|
|
539
|
-
self.program.flush(self.nextPC())
|
|
540
|
-
|
|
541
579
|
# Set something
|
|
542
580
|
def k_set(self, command):
|
|
543
581
|
token = self.nextToken()
|
|
@@ -637,11 +675,16 @@ class Graphics(Handler):
|
|
|
637
675
|
return False
|
|
638
676
|
|
|
639
677
|
def r_start(self, command):
|
|
678
|
+
def on_last_window_closed():
|
|
679
|
+
print("Performing cleanup...")
|
|
680
|
+
self.program.kill()
|
|
681
|
+
def resume():
|
|
682
|
+
self.program.flush(self.nextPC())
|
|
640
683
|
timer = QTimer()
|
|
641
684
|
timer.timeout.connect(self.flush)
|
|
642
685
|
timer.start(10)
|
|
643
|
-
QTimer.singleShot(500,
|
|
644
|
-
self.app.lastWindowClosed.connect(
|
|
686
|
+
QTimer.singleShot(500, resume)
|
|
687
|
+
self.app.lastWindowClosed.connect(on_last_window_closed)
|
|
645
688
|
self.app.exec()
|
|
646
689
|
|
|
647
690
|
# Declare a window variable
|
|
@@ -665,8 +708,17 @@ class Graphics(Handler):
|
|
|
665
708
|
if self.tokenIs('the'):
|
|
666
709
|
self.nextToken()
|
|
667
710
|
token = self.getToken()
|
|
668
|
-
|
|
669
|
-
|
|
711
|
+
|
|
712
|
+
if token == 'count':
|
|
713
|
+
if self.nextIs('of'):
|
|
714
|
+
if self.nextIsSymbol():
|
|
715
|
+
value['type'] = 'symbol'
|
|
716
|
+
record = self.getSymbolRecord()
|
|
717
|
+
keyword = record['keyword']
|
|
718
|
+
if keyword == 'combobox':
|
|
719
|
+
value['type'] = 'count'
|
|
720
|
+
value['name'] = record['name']
|
|
721
|
+
return value
|
|
670
722
|
|
|
671
723
|
return None
|
|
672
724
|
|
|
@@ -682,22 +734,7 @@ class Graphics(Handler):
|
|
|
682
734
|
def v_symbol(self, symbolRecord):
|
|
683
735
|
symbolRecord = self.getVariable(symbolRecord['name'])
|
|
684
736
|
keyword = symbolRecord['keyword']
|
|
685
|
-
if keyword == '
|
|
686
|
-
data = symbolRecord['data']
|
|
687
|
-
window = self.getVariable(data['window'])['window']
|
|
688
|
-
style = data['style']
|
|
689
|
-
title = data['title']
|
|
690
|
-
message = data['message']
|
|
691
|
-
if style == 'question':
|
|
692
|
-
button = QMessageBox.question(window, title, message)
|
|
693
|
-
elif style == 'warning':
|
|
694
|
-
button = QMessageBox.warning(window, title, message)
|
|
695
|
-
content = True if button == QMessageBox.Ok else False
|
|
696
|
-
v = {}
|
|
697
|
-
v['type'] = 'bool'
|
|
698
|
-
v['content'] = content
|
|
699
|
-
return v
|
|
700
|
-
elif keyword == 'combobox':
|
|
737
|
+
if keyword == 'combobox':
|
|
701
738
|
combobox = symbolRecord['widget']
|
|
702
739
|
v = {}
|
|
703
740
|
v['type'] = 'text'
|
|
@@ -705,8 +742,14 @@ class Graphics(Handler):
|
|
|
705
742
|
return v
|
|
706
743
|
return None
|
|
707
744
|
|
|
708
|
-
def
|
|
745
|
+
def v_count(self, v):
|
|
746
|
+
record = self.getVariable(v['name'])
|
|
747
|
+
keyword = record['keyword']
|
|
748
|
+
widget = record['widget']
|
|
749
|
+
if keyword == 'combobox': content = widget.count()
|
|
709
750
|
value = {}
|
|
751
|
+
value['type'] = 'int'
|
|
752
|
+
value['content'] = content
|
|
710
753
|
return value
|
|
711
754
|
|
|
712
755
|
#############################################################################
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: easycoder
|
|
3
|
-
Version: 250423.
|
|
3
|
+
Version: 250423.2
|
|
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>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
easycoder/README.md,sha256=BVXmYphcTJ6q6RN_9L6HtQukgCnOjSLVIsTM3lk-9aM,587
|
|
2
|
+
easycoder/__init__.py,sha256=rXpc2iuRmzM8KsgUZWefLoHMii_uABr61154GK0iZ_0,262
|
|
3
|
+
easycoder/ec_classes.py,sha256=xnWBNak8oKydkFoxHLlq9wo3lIsB3aMnTDrqbtCfoWo,1512
|
|
4
|
+
easycoder/ec_compiler.py,sha256=WN4DMTU66kzOAwOGJe3KDoXj2nPvq19ACegQ-RSMglo,4780
|
|
5
|
+
easycoder/ec_condition.py,sha256=YXvSBQKEzKGCcgUGo3Qp8iHolXmm2BpEm0NimSDszIM,785
|
|
6
|
+
easycoder/ec_core.py,sha256=X66TBECPnp-82lEcCpaiJuXSy4Ex519iBK2BM-wGHaQ,90611
|
|
7
|
+
easycoder/ec_graphics.py,sha256=WXxKMB4GJSmxvk-FVbOTyufiUx4TYIzyDoB1PCAO3JY,16067
|
|
8
|
+
easycoder/ec_gutils.py,sha256=yqu4RRQ6VdRkC5B2ADBYsXzgNu76dLnekd9aUjdEgPw,6399
|
|
9
|
+
easycoder/ec_handler.py,sha256=K7nBuQTH8l0k8hX1o2b4KhTnhZHGdf2fkEuX4FJXJs8,2277
|
|
10
|
+
easycoder/ec_program.py,sha256=ZCcvI36iq9HG4o8rFwFxzVElzZ7PEeNOPMr8eqwz8ns,10010
|
|
11
|
+
easycoder/ec_pyside6.py,sha256=0Z-uWrCq7Uz_C6WjN-9E0TDI-IHny14-j5sTc1a3LLg,26627
|
|
12
|
+
easycoder/ec_timestamp.py,sha256=_3QFJPzIWZ9Rzk3SQOQJ-gwmvB07pg78k23SPntoZtY,288
|
|
13
|
+
easycoder/ec_value.py,sha256=zgDJTJhIg3yOvmnnKIfccIizmIhGbtvL_ghLTL1T5fg,2516
|
|
14
|
+
easycoder-250423.2.dist-info/entry_points.txt,sha256=JXAZbenl0TnsIft2FcGJbJ-4qoztVu2FuT8PFmWFexM,44
|
|
15
|
+
easycoder-250423.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
16
|
+
easycoder-250423.2.dist-info/WHEEL,sha256=ssQ84EZ5gH1pCOujd3iW7HClo_O_aDaClUbX4B8bjKY,100
|
|
17
|
+
easycoder-250423.2.dist-info/METADATA,sha256=XZhRQ-0z-KpgImt8Nvyk46I6V_lZ1M2aet5VoR8hHYs,5617
|
|
18
|
+
easycoder-250423.2.dist-info/RECORD,,
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
easycoder/README.md,sha256=BVXmYphcTJ6q6RN_9L6HtQukgCnOjSLVIsTM3lk-9aM,587
|
|
2
|
-
easycoder/__init__.py,sha256=fcdquenJKFAbAFQBvEtkEG-Mozj93phUG4RxL1kmjps,262
|
|
3
|
-
easycoder/ec_classes.py,sha256=xnWBNak8oKydkFoxHLlq9wo3lIsB3aMnTDrqbtCfoWo,1512
|
|
4
|
-
easycoder/ec_compiler.py,sha256=rtxFEWnhW0550MtWEDvYHOw9cYkeTcR0oG3t-kmgnBk,4795
|
|
5
|
-
easycoder/ec_condition.py,sha256=YXvSBQKEzKGCcgUGo3Qp8iHolXmm2BpEm0NimSDszIM,785
|
|
6
|
-
easycoder/ec_core.py,sha256=-nSX_KA_VBximHI1GIuXA-FhsqcyTNp9-HFrv6Dy64M,90625
|
|
7
|
-
easycoder/ec_graphics.py,sha256=ScGLNxW_sxu0WyoO-Od-9MM0bhpVvf-vGa5UmoHYRCA,16073
|
|
8
|
-
easycoder/ec_gutils.py,sha256=yqu4RRQ6VdRkC5B2ADBYsXzgNu76dLnekd9aUjdEgPw,6399
|
|
9
|
-
easycoder/ec_handler.py,sha256=K7nBuQTH8l0k8hX1o2b4KhTnhZHGdf2fkEuX4FJXJs8,2277
|
|
10
|
-
easycoder/ec_program.py,sha256=BDwU7aGHiaw6WdbQvVFDhGVaHsvwQ1CWa4wb5MPmOe8,10013
|
|
11
|
-
easycoder/ec_pyside6.py,sha256=HFjUZHbVNichHnetPK2IxNSAiR01TZbeQsq3NX43SuM,25080
|
|
12
|
-
easycoder/ec_timestamp.py,sha256=_3QFJPzIWZ9Rzk3SQOQJ-gwmvB07pg78k23SPntoZtY,288
|
|
13
|
-
easycoder/ec_value.py,sha256=zgDJTJhIg3yOvmnnKIfccIizmIhGbtvL_ghLTL1T5fg,2516
|
|
14
|
-
easycoder-250423.1.dist-info/entry_points.txt,sha256=JXAZbenl0TnsIft2FcGJbJ-4qoztVu2FuT8PFmWFexM,44
|
|
15
|
-
easycoder-250423.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
16
|
-
easycoder-250423.1.dist-info/WHEEL,sha256=ssQ84EZ5gH1pCOujd3iW7HClo_O_aDaClUbX4B8bjKY,100
|
|
17
|
-
easycoder-250423.1.dist-info/METADATA,sha256=57xCBptE9U7miwDGAm4NjL4Us_o-L5x0f9FxMRrjIPs,5617
|
|
18
|
-
easycoder-250423.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|