easycoder 250107.1__tar.gz → 250107.2__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 easycoder might be problematic. Click here for more details.

Files changed (160) hide show
  1. {easycoder-250107.1 → easycoder-250107.2}/PKG-INFO +1 -1
  2. {easycoder-250107.1 → easycoder-250107.2}/easycoder/__init__.py +1 -1
  3. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_graphics.py +15 -6
  4. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_renderer.py +8 -7
  5. {easycoder-250107.1 → easycoder-250107.2}/scripts/wave.ecg +2 -0
  6. {easycoder-250107.1 → easycoder-250107.2}/LICENSE +0 -0
  7. {easycoder-250107.1 → easycoder-250107.2}/README.md +0 -0
  8. {easycoder-250107.1 → easycoder-250107.2}/doc/README.md +0 -0
  9. {easycoder-250107.1 → easycoder-250107.2}/doc/core/README.md +0 -0
  10. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/boolean.md +0 -0
  11. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/empty.md +0 -0
  12. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/ends.md +0 -0
  13. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/even.md +0 -0
  14. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/exists.md +0 -0
  15. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/greater.md +0 -0
  16. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/hasProperty.md +0 -0
  17. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/includes.md +0 -0
  18. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/is.md +0 -0
  19. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/less.md +0 -0
  20. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/list.md +0 -0
  21. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/none.md +0 -0
  22. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/not.md +0 -0
  23. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/numeric.md +0 -0
  24. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/object.md +0 -0
  25. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/odd.md +0 -0
  26. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/starts.md +0 -0
  27. {easycoder-250107.1 → easycoder-250107.2}/doc/core/conditions/string.md +0 -0
  28. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/add.md +0 -0
  29. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/append.md +0 -0
  30. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/assert.md +0 -0
  31. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/begin.md +0 -0
  32. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/clear.md +0 -0
  33. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/close.md +0 -0
  34. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/create.md +0 -0
  35. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/debug.md +0 -0
  36. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/decrement.md +0 -0
  37. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/delete.md +0 -0
  38. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/divide.md +0 -0
  39. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/exit.md +0 -0
  40. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/file.md +0 -0
  41. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/fork.md +0 -0
  42. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/get.md +0 -0
  43. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/go.md +0 -0
  44. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/gosub.md +0 -0
  45. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/if.md +0 -0
  46. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/import.md +0 -0
  47. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/increment.md +0 -0
  48. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/index.md +0 -0
  49. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/init.md +0 -0
  50. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/input.md +0 -0
  51. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/load.md +0 -0
  52. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/lock.md +0 -0
  53. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/module.md +0 -0
  54. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/multiply.md +0 -0
  55. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/negate.md +0 -0
  56. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/open.md +0 -0
  57. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/pop.md +0 -0
  58. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/post.md +0 -0
  59. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/print.md +0 -0
  60. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/push.md +0 -0
  61. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/put.md +0 -0
  62. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/read.md +0 -0
  63. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/release.md +0 -0
  64. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/replace.md +0 -0
  65. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/return.md +0 -0
  66. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/run.md +0 -0
  67. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/save.md +0 -0
  68. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/script.md +0 -0
  69. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/set.md +0 -0
  70. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/split.md +0 -0
  71. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/stack.md +0 -0
  72. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/stop.md +0 -0
  73. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/system.md +0 -0
  74. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/take.md +0 -0
  75. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/toggle.md +0 -0
  76. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/truncate.md +0 -0
  77. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/unlock.md +0 -0
  78. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/variable.md +0 -0
  79. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/wait.md +0 -0
  80. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/while.md +0 -0
  81. {easycoder-250107.1 → easycoder-250107.2}/doc/core/keywords/write.md +0 -0
  82. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/arg.md +0 -0
  83. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/args.md +0 -0
  84. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/cos.md +0 -0
  85. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/datime.md +0 -0
  86. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/decode.md +0 -0
  87. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/element.md +0 -0
  88. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/elements.md +0 -0
  89. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/empty.md +0 -0
  90. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/encode.md +0 -0
  91. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/error.md +0 -0
  92. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/files.md +0 -0
  93. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/float.md +0 -0
  94. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/from.md +0 -0
  95. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/hash.md +0 -0
  96. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/index.md +0 -0
  97. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/integer.md +0 -0
  98. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/json.md +0 -0
  99. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/keys.md +0 -0
  100. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/left.md +0 -0
  101. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/length.md +0 -0
  102. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/lowercase.md +0 -0
  103. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/memory.md +0 -0
  104. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/modification.md +0 -0
  105. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/modulo.md +0 -0
  106. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/newline.md +0 -0
  107. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/now.md +0 -0
  108. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/position.md +0 -0
  109. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/property.md +0 -0
  110. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/random.md +0 -0
  111. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/right.md +0 -0
  112. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/sin.md +0 -0
  113. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/stringify.md +0 -0
  114. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/tab.md +0 -0
  115. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/tan.md +0 -0
  116. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/timestamp.md +0 -0
  117. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/today.md +0 -0
  118. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/trim.md +0 -0
  119. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/type.md +0 -0
  120. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/uppercase.md +0 -0
  121. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/value.md +0 -0
  122. {easycoder-250107.1 → easycoder-250107.2}/doc/core/values/weekday.md +0 -0
  123. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/README.md +0 -0
  124. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/attach.md +0 -0
  125. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/close.md +0 -0
  126. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/create.md +0 -0
  127. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/ellipse.md +0 -0
  128. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/image.md +0 -0
  129. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/move.md +0 -0
  130. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/on.md +0 -0
  131. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/rectangle.md +0 -0
  132. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/render.md +0 -0
  133. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/run.md +0 -0
  134. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/set.md +0 -0
  135. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/keywords/text.md +0 -0
  136. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/values/attribute.md +0 -0
  137. {easycoder-250107.1 → easycoder-250107.2}/doc/graphics/values/window.md +0 -0
  138. {easycoder-250107.1 → easycoder-250107.2}/easycoder/README.md +0 -0
  139. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec.py +0 -0
  140. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_classes.py +0 -0
  141. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_compiler.py +0 -0
  142. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_condition.py +0 -0
  143. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_core.py +0 -0
  144. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_handler.py +0 -0
  145. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_program.py +0 -0
  146. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_screenspec.py +0 -0
  147. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_timestamp.py +0 -0
  148. {easycoder-250107.1 → easycoder-250107.2}/easycoder/ec_value.py +0 -0
  149. {easycoder-250107.1 → easycoder-250107.2}/images/Semoigo Dawn.jpg +0 -0
  150. {easycoder-250107.1 → easycoder-250107.2}/json/graphics-demo.json +0 -0
  151. {easycoder-250107.1 → easycoder-250107.2}/plugins/ec_p100.py +0 -0
  152. {easycoder-250107.1 → easycoder-250107.2}/plugins/example.py +0 -0
  153. {easycoder-250107.1 → easycoder-250107.2}/pyproject.toml +0 -0
  154. {easycoder-250107.1 → easycoder-250107.2}/scripts/README.md +0 -0
  155. {easycoder-250107.1 → easycoder-250107.2}/scripts/benchmark.ecs +0 -0
  156. {easycoder-250107.1 → easycoder-250107.2}/scripts/fizzbuzz.ecs +0 -0
  157. {easycoder-250107.1 → easycoder-250107.2}/scripts/graphics-demo.ecg +0 -0
  158. {easycoder-250107.1 → easycoder-250107.2}/scripts/hello.ecs +0 -0
  159. {easycoder-250107.1 → easycoder-250107.2}/scripts/points.ecs +0 -0
  160. {easycoder-250107.1 → easycoder-250107.2}/scripts/tests.ecs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: easycoder
3
- Version: 250107.1
3
+ Version: 250107.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>
@@ -10,4 +10,4 @@ from .ec_program import *
10
10
  from .ec_timestamp import *
11
11
  from .ec_value import *
12
12
 
13
- __version__ = "250107.1"
13
+ __version__ = "250107.2"
@@ -32,12 +32,12 @@ class Graphics(Handler):
32
32
  targetRecord = self.getVariable(command['name'])
33
33
  keyword = targetRecord['keyword']
34
34
  id = self.getRuntimeValue(command['id'])
35
- element = self.ui.getElement(id)
36
- if element == None:
35
+ uiElement = self.ui.getElement(id)
36
+ if uiElement == None:
37
37
  FatalError(self.program.compiler, f'There is no screen element with id \'{id}\'')
38
38
  return -1
39
- if element.getType() != keyword:
40
- etype = element['type']
39
+ if uiElement.getType() != keyword:
40
+ etype = uiElement['type']
41
41
  FatalError(self.program.compiler, f'Mismatched element type: "{etype}" and "{keyword}"')
42
42
  self.putSymbolValue(targetRecord, {'type': 'text', 'content': id})
43
43
  return self.nextPC()
@@ -265,6 +265,7 @@ class Graphics(Handler):
265
265
  self.ui.moveElementBy(self.getRuntimeValue(command['target']), dist)
266
266
  return self.nextPC()
267
267
 
268
+ # on click/tap {element} {action}
268
269
  def k_on(self, command):
269
270
  token = self.nextToken()
270
271
  if token in ['click', 'tap']:
@@ -298,14 +299,22 @@ class Graphics(Handler):
298
299
  return True
299
300
  return False
300
301
 
302
+ # Set a handler on every element
301
303
  def r_on(self, command):
302
304
  pc = command['goto']
303
305
  if command['type'] == 'tap':
304
306
  record = self.getVariable(command['target'])
307
+ def oncb(data):
308
+ record['index'] = data.index
309
+ self.run(data.pc)
305
310
  keyword = record['keyword']
306
311
  if self.isGraphicType(keyword):
307
- id = record['value'][record['index']]['content']
308
- self.ui.setOnClick(id, lambda: self.run(pc))
312
+ for index in range(0, record['elements']):
313
+ id = record['value'][index]['content']
314
+ data = Object()
315
+ data.pc = pc
316
+ data.index = index
317
+ self.ui.setOnClick(id, data, oncb)
309
318
  else:
310
319
  name = record['name']
311
320
  RuntimeError(self.program, f'{name} is not a clickable object')
@@ -35,6 +35,7 @@ class Element():
35
35
  def __init__(self, type, spec):
36
36
  self.type = type
37
37
  self.spec = spec
38
+ self.actionCB = None
38
39
 
39
40
  def getRelativePosition(self):
40
41
  spec = self.spec
@@ -146,11 +147,9 @@ class UI(Widget):
146
147
  x = tp[0]
147
148
  y = tp[1]
148
149
  for element in reversed(self.zlist):
149
- if element.cb != None:
150
+ if element.actionCB != None:
150
151
  spec = element.spec
151
152
  pos = spec.realpos
152
- # if spec.parent != None:
153
- # pos = Vector(pos) + spec.parent.spec.getPos()
154
153
  size = element.getSize()
155
154
  if spec.type == 'ellipse':
156
155
  a = int(size[0])/2
@@ -159,15 +158,17 @@ class UI(Widget):
159
158
  h = ctr[0]
160
159
  k = ctr[1]
161
160
  if (math.pow((x - h), 2) / math.pow(a, 2)) + (math.pow((y - k), 2) / math.pow(b, 2)) <= 1:
162
- element.cb()
161
+ element.actionCB(element.data)
163
162
  break
164
163
  elif spec.type in ['rectangle', 'text', 'image']:
165
164
  if tp[0] >= pos[0] and tp[0] < pos[0] + size[0] and tp[1] >= pos[1] and tp[1] < pos[1] + size[1]:
166
- element.cb()
165
+ element.actionCB(element.data)
167
166
  break
168
167
 
169
- def setOnClick(self, id, callback):
170
- self.getElement(id).cb = callback
168
+ def setOnClick(self, id, data, callback):
169
+ element = self.getElement(id)
170
+ element.data = data
171
+ element.actionCB = callback
171
172
 
172
173
  def getWindowAttribute(self, attribute):
173
174
  if attribute == 'left':
@@ -97,6 +97,8 @@
97
97
  increment N
98
98
  end
99
99
 
100
+ on click Bar print `Click ` cat the index of Bar
101
+
100
102
  wait 1
101
103
  ! Run the main animation
102
104
  while true
File without changes
File without changes
File without changes