easycoder 250820.1__py2.py3-none-any.whl → 250824.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 +2 -1
- easycoder/ec_border.py +63 -0
- easycoder/ec_keyboard.py +2 -61
- easycoder/ec_pyside.py +106 -48
- {easycoder-250820.1.dist-info → easycoder-250824.2.dist-info}/METADATA +1 -1
- {easycoder-250820.1.dist-info → easycoder-250824.2.dist-info}/RECORD +9 -8
- {easycoder-250820.1.dist-info → easycoder-250824.2.dist-info}/WHEEL +0 -0
- {easycoder-250820.1.dist-info → easycoder-250824.2.dist-info}/entry_points.txt +0 -0
- {easycoder-250820.1.dist-info → easycoder-250824.2.dist-info}/licenses/LICENSE +0 -0
easycoder/__init__.py
CHANGED
|
@@ -6,9 +6,10 @@ from .ec_condition import *
|
|
|
6
6
|
from .ec_core import *
|
|
7
7
|
from .ec_handler import *
|
|
8
8
|
from .ec_keyboard import *
|
|
9
|
+
from .ec_border import *
|
|
9
10
|
from .ec_program import *
|
|
10
11
|
from .ec_pyside import *
|
|
11
12
|
from .ec_timestamp import *
|
|
12
13
|
from .ec_value import *
|
|
13
14
|
|
|
14
|
-
__version__ = "
|
|
15
|
+
__version__ = "250824.2"
|
easycoder/ec_border.py
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from PySide6.QtWidgets import QWidget
|
|
3
|
+
from PySide6.QtGui import QPixmap, QPainter
|
|
4
|
+
from PySide6.QtCore import Qt, Signal, QRect
|
|
5
|
+
|
|
6
|
+
class Border(QWidget):
|
|
7
|
+
tickClicked = Signal()
|
|
8
|
+
closeClicked = Signal()
|
|
9
|
+
|
|
10
|
+
def __init__(self):
|
|
11
|
+
super().__init__()
|
|
12
|
+
self.size = 40
|
|
13
|
+
self.setFixedHeight(self.size)
|
|
14
|
+
self._drag_active = False
|
|
15
|
+
self._drag_start_pos = None
|
|
16
|
+
|
|
17
|
+
def paintEvent(self, event):
|
|
18
|
+
painter = QPainter(self)
|
|
19
|
+
painter.setRenderHint(QPainter.Antialiasing)
|
|
20
|
+
# Draw the tick icon
|
|
21
|
+
self.tick = QPixmap(f'{os.path.dirname(os.path.abspath(__file__))}/tick.png').scaled(self.size, self.size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
22
|
+
x = 0
|
|
23
|
+
y = 0
|
|
24
|
+
painter.drawPixmap(x, y, self.tick)
|
|
25
|
+
# Draw the close icon
|
|
26
|
+
self.close = QPixmap(f'{os.path.dirname(os.path.abspath(__file__))}/close.png').scaled(self.size, self.size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
27
|
+
x = self.width() - self.close.width()
|
|
28
|
+
y = 0
|
|
29
|
+
painter.drawPixmap(x, y, self.close)
|
|
30
|
+
|
|
31
|
+
def mousePressEvent(self, event):
|
|
32
|
+
# Tick icon
|
|
33
|
+
x = 0
|
|
34
|
+
y = 0
|
|
35
|
+
tickRect = self.tick.rect().translated(x, y)
|
|
36
|
+
# Close icon
|
|
37
|
+
x = self.width() - self.close.width()
|
|
38
|
+
y = 0
|
|
39
|
+
closeRect = self.close.rect().translated(x, y)
|
|
40
|
+
if tickRect.contains(event.pos()):
|
|
41
|
+
self.tickClicked.emit()
|
|
42
|
+
if closeRect.contains(event.pos()):
|
|
43
|
+
self.closeClicked.emit()
|
|
44
|
+
elif QRect(0, 0, self.width(), self.height()).contains(event.pos()):
|
|
45
|
+
if hasattr(self.window().windowHandle(), 'startSystemMove'):
|
|
46
|
+
self.window().windowHandle().startSystemMove()
|
|
47
|
+
else:
|
|
48
|
+
self._drag_active = True
|
|
49
|
+
self._drag_start_pos = event.globalPosition().toPoint()
|
|
50
|
+
self._dialog_start_pos = self.window().pos()
|
|
51
|
+
else:
|
|
52
|
+
super().mousePressEvent(event)
|
|
53
|
+
|
|
54
|
+
def mouseMoveEvent(self, event):
|
|
55
|
+
if self._drag_active:
|
|
56
|
+
delta = event.globalPosition().toPoint() - self._drag_start_pos
|
|
57
|
+
self.window().move(self._dialog_start_pos + delta)
|
|
58
|
+
else:
|
|
59
|
+
super().mouseMoveEvent(event)
|
|
60
|
+
|
|
61
|
+
def mouseReleaseEvent(self, event):
|
|
62
|
+
self._drag_active = False
|
|
63
|
+
super().mouseReleaseEvent(event)
|
easycoder/ec_keyboard.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import os
|
|
2
1
|
from .ec_handler import Handler
|
|
2
|
+
from .ec_border import Border
|
|
3
3
|
from PySide6.QtWidgets import (
|
|
4
4
|
QDialog,
|
|
5
5
|
QVBoxLayout,
|
|
@@ -18,65 +18,6 @@ from PySide6.QtCore import Qt, QTimer, Signal, QRect
|
|
|
18
18
|
|
|
19
19
|
class Keyboard(Handler):
|
|
20
20
|
iconClicked = Signal()
|
|
21
|
-
|
|
22
|
-
class Border(QWidget):
|
|
23
|
-
tickClicked = Signal()
|
|
24
|
-
closeClicked = Signal()
|
|
25
|
-
|
|
26
|
-
def __init__(self):
|
|
27
|
-
super().__init__()
|
|
28
|
-
self.size = 40
|
|
29
|
-
self.setFixedHeight(self.size)
|
|
30
|
-
self._drag_active = False
|
|
31
|
-
self._drag_start_pos = None
|
|
32
|
-
|
|
33
|
-
def paintEvent(self, event):
|
|
34
|
-
painter = QPainter(self)
|
|
35
|
-
painter.setRenderHint(QPainter.Antialiasing)
|
|
36
|
-
# Draw the tick icon
|
|
37
|
-
self.tick = QPixmap(f'{os.path.dirname(os.path.abspath(__file__))}/tick.png').scaled(self.size, self.size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
38
|
-
x = 0
|
|
39
|
-
y = 0
|
|
40
|
-
painter.drawPixmap(x, y, self.tick)
|
|
41
|
-
# Draw the close icon
|
|
42
|
-
self.close = QPixmap(f'{os.path.dirname(os.path.abspath(__file__))}/close.png').scaled(self.size, self.size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
43
|
-
x = self.width() - self.close.width()
|
|
44
|
-
y = 0
|
|
45
|
-
painter.drawPixmap(x, y, self.close)
|
|
46
|
-
|
|
47
|
-
def mousePressEvent(self, event):
|
|
48
|
-
# Tick icon
|
|
49
|
-
x = 0
|
|
50
|
-
y = 0
|
|
51
|
-
tickRect = self.tick.rect().translated(x, y)
|
|
52
|
-
# Close icon
|
|
53
|
-
x = self.width() - self.close.width()
|
|
54
|
-
y = 0
|
|
55
|
-
closeRect = self.close.rect().translated(x, y)
|
|
56
|
-
if tickRect.contains(event.pos()):
|
|
57
|
-
self.tickClicked.emit()
|
|
58
|
-
if closeRect.contains(event.pos()):
|
|
59
|
-
self.closeClicked.emit()
|
|
60
|
-
elif QRect(0, 0, self.width(), self.height()).contains(event.pos()):
|
|
61
|
-
if hasattr(self.window().windowHandle(), 'startSystemMove'):
|
|
62
|
-
self.window().windowHandle().startSystemMove()
|
|
63
|
-
else:
|
|
64
|
-
self._drag_active = True
|
|
65
|
-
self._drag_start_pos = event.globalPosition().toPoint()
|
|
66
|
-
self._dialog_start_pos = self.window().pos()
|
|
67
|
-
else:
|
|
68
|
-
super().mousePressEvent(event)
|
|
69
|
-
|
|
70
|
-
def mouseMoveEvent(self, event):
|
|
71
|
-
if self._drag_active:
|
|
72
|
-
delta = event.globalPosition().toPoint() - self._drag_start_pos
|
|
73
|
-
self.window().move(self._dialog_start_pos + delta)
|
|
74
|
-
else:
|
|
75
|
-
super().mouseMoveEvent(event)
|
|
76
|
-
|
|
77
|
-
def mouseReleaseEvent(self, event):
|
|
78
|
-
self._drag_active = False
|
|
79
|
-
super().mouseReleaseEvent(event)
|
|
80
21
|
|
|
81
22
|
def __init__(self, program, keyboardType, receiverLayout, receivers, caller = None, parent=None):
|
|
82
23
|
super().__init__(program.compiler)
|
|
@@ -103,7 +44,7 @@ class Keyboard(Handler):
|
|
|
103
44
|
# Add the keyboard
|
|
104
45
|
layout = QVBoxLayout(dialog)
|
|
105
46
|
|
|
106
|
-
border =
|
|
47
|
+
border = Border()
|
|
107
48
|
border.tickClicked.connect(self.dialog.accept)
|
|
108
49
|
border.closeClicked.connect(self.reject)
|
|
109
50
|
layout.addWidget(border)
|
easycoder/ec_pyside.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import sys
|
|
1
|
+
import sys, os
|
|
2
2
|
from .ec_handler import Handler
|
|
3
3
|
from .ec_classes import RuntimeError
|
|
4
|
-
from
|
|
5
|
-
from PySide6.
|
|
4
|
+
from .ec_border import Border
|
|
5
|
+
from PySide6.QtCore import Qt, QTimer, Signal, QRect
|
|
6
|
+
from PySide6.QtGui import QPixmap, QPainter
|
|
6
7
|
from PySide6.QtWidgets import (
|
|
7
8
|
QApplication,
|
|
8
9
|
QCheckBox,
|
|
@@ -34,7 +35,8 @@ from PySide6.QtWidgets import (
|
|
|
34
35
|
QSizePolicy,
|
|
35
36
|
QDialog,
|
|
36
37
|
QMessageBox,
|
|
37
|
-
QDialogButtonBox
|
|
38
|
+
QDialogButtonBox,
|
|
39
|
+
QGraphicsDropShadowEffect
|
|
38
40
|
)
|
|
39
41
|
|
|
40
42
|
class Graphics(Handler):
|
|
@@ -65,19 +67,7 @@ class Graphics(Handler):
|
|
|
65
67
|
]
|
|
66
68
|
|
|
67
69
|
def dialogTypes(self):
|
|
68
|
-
return ['confirm', 'lineedit', 'multiline']
|
|
69
|
-
|
|
70
|
-
class ECDialog(QDialog):
|
|
71
|
-
def __init__(self, parent, record):
|
|
72
|
-
super().__init__(parent)
|
|
73
|
-
self.record = record
|
|
74
|
-
|
|
75
|
-
def showEvent(self, event):
|
|
76
|
-
super().showEvent(event)
|
|
77
|
-
QTimer.singleShot(100, self.afterShown)
|
|
78
|
-
|
|
79
|
-
def afterShown(self):
|
|
80
|
-
if 'action' in self.record: self.record['action']()
|
|
70
|
+
return ['confirm', 'lineedit', 'multiline', 'generic']
|
|
81
71
|
|
|
82
72
|
class ClickableLineEdit(QLineEdit):
|
|
83
73
|
clicked = Signal()
|
|
@@ -300,7 +290,7 @@ class Graphics(Handler):
|
|
|
300
290
|
|
|
301
291
|
# Create a window
|
|
302
292
|
def k_createWindow(self, command):
|
|
303
|
-
|
|
293
|
+
title = None
|
|
304
294
|
x = None
|
|
305
295
|
y = None
|
|
306
296
|
w = self.compileConstant(640)
|
|
@@ -309,7 +299,7 @@ class Graphics(Handler):
|
|
|
309
299
|
token = self.peek()
|
|
310
300
|
if token in ['title', 'at', 'size', 'layout']:
|
|
311
301
|
self.nextToken()
|
|
312
|
-
if token == 'title':
|
|
302
|
+
if token == 'title': title = self.nextValue()
|
|
313
303
|
elif token == 'at':
|
|
314
304
|
x = self.nextValue()
|
|
315
305
|
y = self.nextValue()
|
|
@@ -323,6 +313,7 @@ class Graphics(Handler):
|
|
|
323
313
|
command['layout'] = record['name']
|
|
324
314
|
else: return False
|
|
325
315
|
else: break
|
|
316
|
+
command['title'] = title
|
|
326
317
|
command['x'] = x
|
|
327
318
|
command['y'] = y
|
|
328
319
|
command['w'] = w
|
|
@@ -456,6 +447,9 @@ class Graphics(Handler):
|
|
|
456
447
|
elif self.peek() == 'value':
|
|
457
448
|
self.nextToken()
|
|
458
449
|
command['value'] = self.nextValue()
|
|
450
|
+
elif self.peek() == 'with':
|
|
451
|
+
self.nextToken()
|
|
452
|
+
command['layout'] = self.nextToken()
|
|
459
453
|
else: break
|
|
460
454
|
if not 'title' in command: command['title'] = self.compileConstant('')
|
|
461
455
|
if not 'value' in command: command['value'] = self.compileConstant('')
|
|
@@ -510,7 +504,9 @@ class Graphics(Handler):
|
|
|
510
504
|
|
|
511
505
|
def r_createWindow(self, command, record):
|
|
512
506
|
window = QMainWindow()
|
|
513
|
-
|
|
507
|
+
title = self.getRuntimeValue(command['title'])
|
|
508
|
+
if title == None: title = 'EasyCoder Main Window'
|
|
509
|
+
window.setWindowTitle(title)
|
|
514
510
|
w = self.getRuntimeValue(command['w'])
|
|
515
511
|
h = self.getRuntimeValue(command['h'])
|
|
516
512
|
x = command['x']
|
|
@@ -629,32 +625,61 @@ class Graphics(Handler):
|
|
|
629
625
|
return self.nextPC()
|
|
630
626
|
|
|
631
627
|
def r_createDialog(self, command, record):
|
|
628
|
+
|
|
629
|
+
class ECDialog(QDialog):
|
|
630
|
+
def __init__(self, parent, record):
|
|
631
|
+
super().__init__(parent)
|
|
632
|
+
self.record = record
|
|
633
|
+
|
|
634
|
+
def showEvent(self, event):
|
|
635
|
+
super().showEvent(event)
|
|
636
|
+
QTimer.singleShot(100, self.afterShown)
|
|
637
|
+
|
|
638
|
+
def afterShown(self):
|
|
639
|
+
if 'action' in self.record: self.record['action']()
|
|
640
|
+
|
|
632
641
|
win = command['window']
|
|
633
642
|
if win != None:
|
|
634
643
|
win = self.getVariable(win)['window']
|
|
635
|
-
dialog =
|
|
636
|
-
mainLayout = QVBoxLayout(dialog)
|
|
637
|
-
dialog.setWindowTitle(self.getRuntimeValue(command['title']))
|
|
644
|
+
dialog = ECDialog(win, record)
|
|
638
645
|
dialogType = command['type'].lower()
|
|
639
646
|
dialog.dialogType = dialogType
|
|
640
|
-
|
|
641
|
-
if dialogType == '
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
dialog.
|
|
646
|
-
dialog.
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
647
|
+
mainLayout = QVBoxLayout(dialog)
|
|
648
|
+
if dialogType == 'generic':
|
|
649
|
+
dialog.setFixedWidth(500)
|
|
650
|
+
dialog.setFixedHeight(500)
|
|
651
|
+
dialog.setWindowFlags(Qt.FramelessWindowHint)
|
|
652
|
+
dialog.setModal(True)
|
|
653
|
+
dialog.setStyleSheet('background-color: white;border:1px solid black;')
|
|
654
|
+
|
|
655
|
+
border = Border()
|
|
656
|
+
border.tickClicked.connect(dialog.accept)
|
|
657
|
+
border.closeClicked.connect(dialog.reject)
|
|
658
|
+
mainLayout.addWidget(border)
|
|
659
|
+
if 'layout' in command:
|
|
660
|
+
layout = self.getVariable(command['layout'])['widget']
|
|
661
|
+
mainLayout.addLayout(layout)
|
|
662
|
+
dialog.setLayout(mainLayout)
|
|
663
|
+
else:
|
|
664
|
+
dialog.setWindowTitle(self.getRuntimeValue(command['title']))
|
|
665
|
+
prompt = self.getRuntimeValue(command['prompt'])
|
|
666
|
+
if dialogType == 'confirm':
|
|
667
|
+
mainLayout.addWidget(QLabel(prompt))
|
|
668
|
+
elif dialogType == 'lineedit':
|
|
669
|
+
mainLayout.addWidget(QLabel(prompt))
|
|
670
|
+
dialog.lineEdit = self.ClickableLineEdit(dialog)
|
|
671
|
+
dialog.value = self.getRuntimeValue(command['value'])
|
|
672
|
+
dialog.lineEdit.setText(dialog.value)
|
|
673
|
+
mainLayout.addWidget(dialog.lineEdit)
|
|
674
|
+
elif dialogType == 'multiline':
|
|
675
|
+
mainLayout.addWidget(QLabel(prompt))
|
|
676
|
+
dialog.textEdit = self.ClickablePlainTextEdit(self)
|
|
677
|
+
dialog.textEdit.setText(dialog.value)
|
|
678
|
+
mainLayout.addWidget(dialog.textEdit)
|
|
679
|
+
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
|
|
680
|
+
buttonBox.accepted.connect(dialog.accept)
|
|
681
|
+
buttonBox.rejected.connect(dialog.reject)
|
|
682
|
+
mainLayout.addWidget(buttonBox, alignment=Qt.AlignHCenter)
|
|
658
683
|
record['dialog'] = dialog
|
|
659
684
|
return self.nextPC()
|
|
660
685
|
|
|
@@ -938,11 +963,12 @@ class Graphics(Handler):
|
|
|
938
963
|
return self.nextPC()
|
|
939
964
|
|
|
940
965
|
# set [the] width/height [of] {widget} [to] {value}
|
|
941
|
-
# set [the] layout of {window} to {layout}
|
|
966
|
+
# set [the] layout of {window}/{widget} to {layout}
|
|
942
967
|
# set [the] spacing of {layout} to {value}
|
|
943
968
|
# set [the] text [of] {label}/{button}/{lineinput}/{multiline} [to] {text}
|
|
944
969
|
# set [the] color [of] {label}/{button}/{lineinput}/{multiline} [to] {color}
|
|
945
970
|
# set [the] state [of] {checkbox} [to] {state}
|
|
971
|
+
# set [the] style of {widget} to {style}
|
|
946
972
|
# set {listbox} to {list}
|
|
947
973
|
# set blocked true/false
|
|
948
974
|
def k_set(self, command):
|
|
@@ -963,7 +989,8 @@ class Graphics(Handler):
|
|
|
963
989
|
self.skip('of')
|
|
964
990
|
if self.nextIsSymbol():
|
|
965
991
|
record = self.getSymbolRecord()
|
|
966
|
-
|
|
992
|
+
keyword = record['keyword']
|
|
993
|
+
if keyword in ['window', 'widget']:
|
|
967
994
|
command['name'] = record['name']
|
|
968
995
|
self.skip('to')
|
|
969
996
|
if self.nextIsSymbol():
|
|
@@ -996,6 +1023,22 @@ class Graphics(Handler):
|
|
|
996
1023
|
if self.nextIsSymbol():
|
|
997
1024
|
record = self.getSymbolRecord()
|
|
998
1025
|
if record['keyword'] == 'checkbox':
|
|
1026
|
+
command['name'] = record['name']
|
|
1027
|
+
self.skip('to')
|
|
1028
|
+
if self.peek() == 'checked':
|
|
1029
|
+
command['value'] = self.compileConstant(True)
|
|
1030
|
+
self.nextToken()
|
|
1031
|
+
elif self.peek() == 'unchecked':
|
|
1032
|
+
command['value'] = self.compileConstant(False)
|
|
1033
|
+
self.nextToken()
|
|
1034
|
+
else: command['value'] = self.nextValue()
|
|
1035
|
+
self.add(command)
|
|
1036
|
+
return True
|
|
1037
|
+
elif token == 'style':
|
|
1038
|
+
self.skip('of')
|
|
1039
|
+
if self.nextIsSymbol():
|
|
1040
|
+
record = self.getSymbolRecord()
|
|
1041
|
+
if record['extra'] == 'gui':
|
|
999
1042
|
command['name'] = record['name']
|
|
1000
1043
|
self.skip('to')
|
|
1001
1044
|
command['value'] = self.nextValue()
|
|
@@ -1068,11 +1111,17 @@ class Graphics(Handler):
|
|
|
1068
1111
|
widget = self.getVariable(command['name'])['widget']
|
|
1069
1112
|
widget.setFixedWidth(self.getRuntimeValue(command['value']))
|
|
1070
1113
|
elif what == 'layout':
|
|
1071
|
-
window = self.getVariable(command['name'])['window']
|
|
1072
1114
|
content = self.getVariable(command['layout'])['widget']
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
window
|
|
1115
|
+
record = self.getVariable(command['name'])
|
|
1116
|
+
keyword = record['keyword']
|
|
1117
|
+
if keyword == 'window':
|
|
1118
|
+
window = record['widget']
|
|
1119
|
+
container = QWidget()
|
|
1120
|
+
container.setLayout(content)
|
|
1121
|
+
window.setCentralWidget(container)
|
|
1122
|
+
elif keyword == 'widget':
|
|
1123
|
+
widget = record['widget']
|
|
1124
|
+
widget.setLayout(content)
|
|
1076
1125
|
elif what == 'spacing':
|
|
1077
1126
|
layout = self.getVariable(command['name'])['widget']
|
|
1078
1127
|
layout.setSpacing(self.getRuntimeValue(command['value']))
|
|
@@ -1188,7 +1237,9 @@ class Graphics(Handler):
|
|
|
1188
1237
|
elif 'dialog' in command:
|
|
1189
1238
|
record = self.getVariable(command['dialog'])
|
|
1190
1239
|
dialog = record['dialog']
|
|
1191
|
-
if dialog.dialogType == '
|
|
1240
|
+
if dialog.dialogType == 'generic':
|
|
1241
|
+
record['result'] = dialog.exec()
|
|
1242
|
+
elif dialog.dialogType == 'confirm':
|
|
1192
1243
|
record['result'] = True if dialog.exec() == QDialog.Accepted else False
|
|
1193
1244
|
elif dialog.dialogType == 'lineedit':
|
|
1194
1245
|
if dialog.exec() == QDialog.Accepted:
|
|
@@ -1224,6 +1275,13 @@ class Graphics(Handler):
|
|
|
1224
1275
|
self.app.lastWindowClosed.connect(on_last_window_closed)
|
|
1225
1276
|
self.app.exec()
|
|
1226
1277
|
|
|
1278
|
+
# Declare a widget variable
|
|
1279
|
+
def k_widget(self, command):
|
|
1280
|
+
return self.compileVariable(command, 'gui')
|
|
1281
|
+
|
|
1282
|
+
def r_widget(self, command):
|
|
1283
|
+
return self.nextPC()
|
|
1284
|
+
|
|
1227
1285
|
# Declare a window variable
|
|
1228
1286
|
def k_window(self, command):
|
|
1229
1287
|
return self.compileVariable(command)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: easycoder
|
|
3
|
-
Version:
|
|
3
|
+
Version: 250824.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>
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
easycoder/__init__.py,sha256=
|
|
1
|
+
easycoder/__init__.py,sha256=FBDKkZRmKr4-4O6k4qlAGQdcF1e9_WuEOOjNatbcRXo,339
|
|
2
2
|
easycoder/close.png,sha256=3B9ueRNtEu9E4QNmZhdyC4VL6uqKvGmdfeFxIV9aO_Y,9847
|
|
3
|
+
easycoder/ec_border.py,sha256=KpOy0Jq8jI_6DYGo4jaFvoBP_jTIoAYWrmuHhl-FXA4,2355
|
|
3
4
|
easycoder/ec_classes.py,sha256=PWPaJuTfaWD4-tgT-2WWOgeFV_jXxlxyKCxvXyylCUU,1824
|
|
4
5
|
easycoder/ec_compiler.py,sha256=-uuXDbfgFBGXSrr7EneDnnneFOFsU-UuCIpNHsCqY0s,5289
|
|
5
6
|
easycoder/ec_condition.py,sha256=YXvSBQKEzKGCcgUGo3Qp8iHolXmm2BpEm0NimSDszIM,785
|
|
6
7
|
easycoder/ec_core.py,sha256=r0bFQV3LXCCh4CP6289h6UvK6gpq4L0BQDrEWkeVo_0,98040
|
|
7
8
|
easycoder/ec_handler.py,sha256=ohf3xUuWw_Qb5SZnulGtDhvCb11kvWtYfgbQTiOXpIY,2261
|
|
8
|
-
easycoder/ec_keyboard.py,sha256=
|
|
9
|
+
easycoder/ec_keyboard.py,sha256=ru-HdWolBMZJPyck2s72In9tXFeLJQSPtR1TpjmIo90,18350
|
|
9
10
|
easycoder/ec_program.py,sha256=7h2QKGunsiu5l2OKn-sw-Dd70kZJrb4b2idHubeSXDs,9989
|
|
10
|
-
easycoder/ec_pyside.py,sha256=
|
|
11
|
+
easycoder/ec_pyside.py,sha256=0hIyQRWiYu-cTZiekVXg0CuIVWOrFrAI7R1fk12lYMQ,53342
|
|
11
12
|
easycoder/ec_timestamp.py,sha256=myQnnF-mT31_1dpQKv2VEAu4BCcbypvMdzq7_DUi1xc,277
|
|
12
13
|
easycoder/ec_value.py,sha256=zgDJTJhIg3yOvmnnKIfccIizmIhGbtvL_ghLTL1T5fg,2516
|
|
13
14
|
easycoder/tick.png,sha256=OedASXJJTYvnza4J6Kv5m5lz6DrBfy667zX_WGgtbmM,9127
|
|
14
|
-
easycoder-
|
|
15
|
-
easycoder-
|
|
16
|
-
easycoder-
|
|
17
|
-
easycoder-
|
|
18
|
-
easycoder-
|
|
15
|
+
easycoder-250824.2.dist-info/entry_points.txt,sha256=JXAZbenl0TnsIft2FcGJbJ-4qoztVu2FuT8PFmWFexM,44
|
|
16
|
+
easycoder-250824.2.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
17
|
+
easycoder-250824.2.dist-info/WHEEL,sha256=Dyt6SBfaasWElUrURkknVFAZDHSTwxg3PaTza7RSbkY,100
|
|
18
|
+
easycoder-250824.2.dist-info/METADATA,sha256=vWzjOLuY0i8teLLIPL_NJ3JsoOVOJHVd3A6r3aQl_Wo,6897
|
|
19
|
+
easycoder-250824.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|