easycoder 250220.1__tar.gz → 250222.1__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 (176) hide show
  1. {easycoder-250220.1 → easycoder-250222.1}/PKG-INFO +2 -2
  2. {easycoder-250220.1 → easycoder-250222.1}/README.md +1 -1
  3. {easycoder-250220.1 → easycoder-250222.1}/easycoder/__init__.py +1 -1
  4. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_core.py +2 -2
  5. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_graphics.py +47 -18
  6. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_gutils.py +18 -13
  7. easycoder-250222.1/test.ecs +13 -0
  8. easycoder-250220.1/scripts/test.ecs +0 -14
  9. {easycoder-250220.1 → easycoder-250222.1}/LICENSE +0 -0
  10. {easycoder-250220.1 → easycoder-250222.1}/doc/README.md +0 -0
  11. {easycoder-250220.1 → easycoder-250222.1}/doc/core/README.md +0 -0
  12. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/boolean.md +0 -0
  13. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/empty.md +0 -0
  14. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/ends.md +0 -0
  15. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/even.md +0 -0
  16. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/exists.md +0 -0
  17. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/greater.md +0 -0
  18. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/hasProperty.md +0 -0
  19. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/includes.md +0 -0
  20. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/is.md +0 -0
  21. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/less.md +0 -0
  22. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/list.md +0 -0
  23. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/none.md +0 -0
  24. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/not.md +0 -0
  25. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/numeric.md +0 -0
  26. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/object.md +0 -0
  27. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/odd.md +0 -0
  28. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/starts.md +0 -0
  29. {easycoder-250220.1 → easycoder-250222.1}/doc/core/conditions/string.md +0 -0
  30. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/add.md +0 -0
  31. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/append.md +0 -0
  32. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/assert.md +0 -0
  33. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/begin.md +0 -0
  34. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/clear.md +0 -0
  35. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/close.md +0 -0
  36. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/create.md +0 -0
  37. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/debug.md +0 -0
  38. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/decrement.md +0 -0
  39. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/delete.md +0 -0
  40. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/divide.md +0 -0
  41. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/exit.md +0 -0
  42. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/file.md +0 -0
  43. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/fork.md +0 -0
  44. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/get.md +0 -0
  45. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/go.md +0 -0
  46. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/gosub.md +0 -0
  47. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/if.md +0 -0
  48. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/import.md +0 -0
  49. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/increment.md +0 -0
  50. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/index.md +0 -0
  51. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/init.md +0 -0
  52. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/input.md +0 -0
  53. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/load.md +0 -0
  54. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/lock.md +0 -0
  55. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/log.md +0 -0
  56. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/module.md +0 -0
  57. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/multiply.md +0 -0
  58. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/negate.md +0 -0
  59. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/open.md +0 -0
  60. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/pop.md +0 -0
  61. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/post.md +0 -0
  62. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/print.md +0 -0
  63. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/push.md +0 -0
  64. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/put.md +0 -0
  65. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/read.md +0 -0
  66. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/release.md +0 -0
  67. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/replace.md +0 -0
  68. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/return.md +0 -0
  69. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/run.md +0 -0
  70. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/save.md +0 -0
  71. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/script.md +0 -0
  72. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/set.md +0 -0
  73. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/split.md +0 -0
  74. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/stack.md +0 -0
  75. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/stop.md +0 -0
  76. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/system.md +0 -0
  77. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/take.md +0 -0
  78. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/toggle.md +0 -0
  79. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/truncate.md +0 -0
  80. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/unlock.md +0 -0
  81. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/variable.md +0 -0
  82. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/wait.md +0 -0
  83. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/while.md +0 -0
  84. {easycoder-250220.1 → easycoder-250222.1}/doc/core/keywords/write.md +0 -0
  85. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/arg.md +0 -0
  86. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/args.md +0 -0
  87. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/cos.md +0 -0
  88. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/datime.md +0 -0
  89. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/decode.md +0 -0
  90. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/element.md +0 -0
  91. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/elements.md +0 -0
  92. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/empty.md +0 -0
  93. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/encode.md +0 -0
  94. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/error.md +0 -0
  95. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/files.md +0 -0
  96. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/float.md +0 -0
  97. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/from.md +0 -0
  98. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/hash.md +0 -0
  99. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/index.md +0 -0
  100. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/integer.md +0 -0
  101. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/json.md +0 -0
  102. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/keys.md +0 -0
  103. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/left.md +0 -0
  104. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/length.md +0 -0
  105. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/lowercase.md +0 -0
  106. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/memory.md +0 -0
  107. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/modification.md +0 -0
  108. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/modulo.md +0 -0
  109. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/newline.md +0 -0
  110. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/now.md +0 -0
  111. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/position.md +0 -0
  112. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/property.md +0 -0
  113. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/random.md +0 -0
  114. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/right.md +0 -0
  115. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/sin.md +0 -0
  116. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/stringify.md +0 -0
  117. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/tab.md +0 -0
  118. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/tan.md +0 -0
  119. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/timestamp.md +0 -0
  120. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/today.md +0 -0
  121. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/trim.md +0 -0
  122. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/type.md +0 -0
  123. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/uppercase.md +0 -0
  124. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/value.md +0 -0
  125. {easycoder-250220.1 → easycoder-250222.1}/doc/core/values/weekday.md +0 -0
  126. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/README.md +0 -0
  127. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/attach.md +0 -0
  128. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/close.md +0 -0
  129. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/create.md +0 -0
  130. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/ellipse.md +0 -0
  131. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/image.md +0 -0
  132. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/move.md +0 -0
  133. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/on.md +0 -0
  134. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/rectangle.md +0 -0
  135. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/render.md +0 -0
  136. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/run.md +0 -0
  137. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/set.md +0 -0
  138. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/keywords/text.md +0 -0
  139. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/values/attribute.md +0 -0
  140. {easycoder-250220.1 → easycoder-250222.1}/doc/graphics/values/window.md +0 -0
  141. {easycoder-250220.1 → easycoder-250222.1}/easycoder/README.md +0 -0
  142. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_classes.py +0 -0
  143. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_compiler.py +0 -0
  144. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_condition.py +0 -0
  145. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_handler.py +0 -0
  146. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_program.py +0 -0
  147. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_timestamp.py +0 -0
  148. {easycoder-250220.1 → easycoder-250222.1}/easycoder/ec_value.py +0 -0
  149. {easycoder-250220.1 → easycoder-250222.1}/images/Semoigo Dawn.jpg +0 -0
  150. {easycoder-250220.1 → easycoder-250222.1}/json/graphics-demo.json +0 -0
  151. {easycoder-250220.1 → easycoder-250222.1}/plugins/ec_keyboard.py +0 -0
  152. {easycoder-250220.1 → easycoder-250222.1}/plugins/ec_p100.py +0 -0
  153. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/4-function.json +0 -0
  154. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/4-function.png +0 -0
  155. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-0.json +0 -0
  156. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-0.png +0 -0
  157. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-1.json +0 -0
  158. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-1.png +0 -0
  159. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-2.json +0 -0
  160. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-2.png +0 -0
  161. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-3.json +0 -0
  162. {easycoder-250220.1 → easycoder-250222.1}/plugins/keyboards/qwerty-3.png +0 -0
  163. {easycoder-250220.1 → easycoder-250222.1}/plugins/points.py +0 -0
  164. {easycoder-250220.1 → easycoder-250222.1}/pyproject.toml +0 -0
  165. {easycoder-250220.1 → easycoder-250222.1}/scripts/README.md +0 -0
  166. {easycoder-250220.1 → easycoder-250222.1}/scripts/benchmark.ecs +0 -0
  167. {easycoder-250220.1 → easycoder-250222.1}/scripts/config.ecg +0 -0
  168. {easycoder-250220.1 → easycoder-250222.1}/scripts/connect.ecg +0 -0
  169. {easycoder-250220.1 → easycoder-250222.1}/scripts/ec_keyboard.py +0 -0
  170. {easycoder-250220.1 → easycoder-250222.1}/scripts/findxr.ecs +0 -0
  171. {easycoder-250220.1 → easycoder-250222.1}/scripts/fizzbuzz.ecs +0 -0
  172. {easycoder-250220.1 → easycoder-250222.1}/scripts/hello.ecs +0 -0
  173. {easycoder-250220.1 → easycoder-250222.1}/scripts/points.ecs +0 -0
  174. {easycoder-250220.1 → easycoder-250222.1/scripts}/test.ecs +0 -0
  175. {easycoder-250220.1 → easycoder-250222.1}/scripts/testg.ecg +0 -0
  176. {easycoder-250220.1 → easycoder-250222.1}/scripts/tests.ecs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: easycoder
3
- Version: 250220.1
3
+ Version: 250222.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>
@@ -10,7 +10,7 @@ Requires-Dist: pytz
10
10
  Project-URL: Home, https://github.com/easycoder/easycoder-py
11
11
 
12
12
  # Introduction
13
- **_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. This version of the language is written in Python and it acts as a fairly thin wrapper around Python functions, giving fast compilation and good runtime performance for general applications.
13
+ **_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. The language is written in Python and it acts as a fairly thin wrapper around standard Python functions, giving fast compilation and good runtime performance for general applications.
14
14
  <hr>
15
15
 
16
16
  There is also a JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser. For this, please visit
@@ -1,5 +1,5 @@
1
1
  # Introduction
2
- **_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. This version of the language is written in Python and it acts as a fairly thin wrapper around Python functions, giving fast compilation and good runtime performance for general applications.
2
+ **_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. The language is written in Python and it acts as a fairly thin wrapper around standard Python functions, giving fast compilation and good runtime performance for general applications.
3
3
  <hr>
4
4
 
5
5
  There is also a JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser. For this, please visit
@@ -9,4 +9,4 @@ from .ec_program import *
9
9
  from .ec_timestamp import *
10
10
  from .ec_value import *
11
11
 
12
- __version__ = "250220.1"
12
+ __version__ = "250222.1"
@@ -1393,8 +1393,8 @@ class Core(Handler):
1393
1393
  self.nextToken()
1394
1394
  else:
1395
1395
  command['on'] = self.nextValue()
1396
- self.add(command)
1397
- return True
1396
+ self.add(command)
1397
+ return True
1398
1398
  return False
1399
1399
 
1400
1400
  def r_split(self, command):
@@ -98,29 +98,54 @@ class Graphics(Handler):
98
98
  def r_column(self, command):
99
99
  return self.nextPC()
100
100
 
101
+ # create layout {name} from {spec}
101
102
  # create {window} layout {layout}
102
- # create {element} {args...}
103
103
  def k_create(self, command):
104
- if self.nextIsSymbol():
104
+ token = self.nextToken()
105
+ if token == 'layout':
106
+ if self.nextIsSymbol():
107
+ record = self.getSymbolRecord()
108
+ if record['keyword'] == 'layout':
109
+ command['layout'] = record['name']
110
+ if self.nextIs('from'):
111
+ command['spec'] = self.nextValue()
112
+ self.addCommand(command)
113
+ return True
114
+ elif self.isSymbol():
105
115
  symbolRecord = self.getSymbolRecord()
106
- type = symbolRecord['keyword']
107
- command['type'] = type
108
116
  command['name'] = symbolRecord['name']
109
- if type == 'window':
110
- command['title'] = self.nextValue()
111
- if self.nextIs('layout'):
112
- if self.nextIsSymbol():
113
- symbolRecord = self.getSymbolRecord()
114
- if symbolRecord['keyword'] == 'layout':
115
- command['layout'] = symbolRecord['name']
116
- self.addCommand(command)
117
- return True
117
+ command['title'] = self.nextValue()
118
+ if self.nextIs('layout'):
119
+ if self.nextIsSymbol():
120
+ symbolRecord = self.getSymbolRecord()
121
+ if symbolRecord['keyword'] == 'layout':
122
+ command['layout'] = symbolRecord['name']
123
+ self.addCommand(command)
124
+ return True
118
125
  return False
119
126
 
120
127
  def r_create(self, command):
121
- type = command['type']
122
- record = self.getVariable(command['name'])
123
- if type == 'window':
128
+ def processItem(name, item):
129
+ print(name, item['type'])
130
+ children = item['#']
131
+ if isinstance(children, list):
132
+ print("List")
133
+ for child in children:
134
+ print(child)
135
+ else:
136
+ print("Single:", children)
137
+
138
+ if 'spec' in command:
139
+ spec = self.getRuntimeValue(command['spec'])
140
+ layout = self.getVariable(command['layout'])
141
+ for key in spec.keys():
142
+ item = spec[key]
143
+ print(key, item['type'])
144
+ if item['type'] == 'column':
145
+ for child in item['#']: processItem(child, item[child])
146
+ return self.nextPC()
147
+ else:
148
+ record = self.getVariable(command['name'])
124
149
  title = self.getRuntimeValue(command['title'])
125
150
  layout = self.getVariable(command['layout'])['layout']
126
151
  window = psg.Window(title, layout, finalize=True)
@@ -130,8 +155,12 @@ class Graphics(Handler):
130
155
  self.program.run(self.nextPC())
131
156
  self.mainLoop()
132
157
  return 0
133
- else:
134
- RuntimeError(self.program, 'Variable is not a window or an element')
158
+
159
+ def k_frame(self, command):
160
+ return self.compileVariable(command)
161
+
162
+ def r_frame(self, command):
163
+ return self.nextPC()
135
164
 
136
165
  def k_init(self, command):
137
166
  if self.nextIsSymbol():
@@ -25,6 +25,7 @@ class GUtils:
25
25
  if type == 'Button': self.getDefaultButton(args)
26
26
  elif type == 'Checkbox': self.getDefaultCheckbox(args)
27
27
  elif type == 'Column': self.getDefaultColumn(args)
28
+ elif type == 'Frame': self.getDefaultFrame(args)
28
29
  elif type == 'Input': self.getDefaultInput(args)
29
30
  elif type == 'Listbox': self.getDefaultListbox(args)
30
31
  elif type == 'Multiline': self.getDefaultMultiline(args)
@@ -61,6 +62,7 @@ class GUtils:
61
62
  if type == 'Button': return self.createButton(layout, args)
62
63
  elif type == 'Checkbox': return self.createCheckbox(layout, args)
63
64
  elif type == 'Column': return self.createColumn(layout, args)
65
+ elif type == 'Frame': return self.createFrame(layout, args)
64
66
  elif type == 'Input': return self.createInput(layout, args)
65
67
  elif type == 'Listbox': return self.createListbox(layout, args)
66
68
  elif type == 'Multiline': return self.createMultiline(layout, args)
@@ -74,6 +76,7 @@ class GUtils:
74
76
  if type(widget) is psg.Button: return widget.get()
75
77
  elif type(widget) is psg.Checkbox: return widget.get()
76
78
  elif type(widget) is psg.Column: return widget.get()
79
+ elif type(widget) is psg.Frame: return widget.get()
77
80
  elif type(widget) is psg.Input: return widget.get()
78
81
  elif type(widget) is psg.Listbox:
79
82
  items = widget.get()
@@ -95,13 +98,6 @@ class GUtils:
95
98
  elif property == 'values':
96
99
  element.update(values=value)
97
100
 
98
- def getPad(self, args):
99
- pad = args['pad']
100
- if pad == (None, None):
101
- return pad
102
- pad = pad.split()
103
- return (pad[0], pad[1])
104
-
105
101
  def getSize(self, args):
106
102
  size = args['size']
107
103
  if size == (None, None):
@@ -110,7 +106,7 @@ class GUtils:
110
106
  return (size[0], size[1])
111
107
 
112
108
  def getDefaultButton(self, args):
113
- args['button_text'] = '(empty)'
109
+ args['button_text'] = ''
114
110
  args['disabled'] = False
115
111
  args['size'] = (None, None)
116
112
 
@@ -128,10 +124,19 @@ class GUtils:
128
124
 
129
125
  def getDefaultColumn(self, args):
130
126
  args['expand_x'] = False
131
- args['pad'] = (None, None)
127
+ args['pad'] = (0, 0)
132
128
 
133
129
  def createColumn(self, layout, args):
134
- return psg.Column(layout, expand_x=args['expand_x'], pad=self.getPad(args))
130
+ return psg.Column(layout, expand_x=args['expand_x'], pad=args['pad'])
131
+
132
+ def getDefaultFrame(self, args):
133
+ args['title'] = ''
134
+ args['border_width'] = 1
135
+ args['expand_x'] = False
136
+ args['pad'] = (0, 0)
137
+
138
+ def createFrame(self, layout, args):
139
+ return psg.Frame(args['title'], layout, border_width=args['border_width'], expand_x=args['expand_x'], pad=args['pad'])
135
140
 
136
141
  def getDefaultInput(self, args):
137
142
  args['default_text'] = ''
@@ -145,11 +150,11 @@ class GUtils:
145
150
  args['list'] = []
146
151
  args['key'] = [None]
147
152
  args['size'] = '10 2'
148
- args['pad'] = (None, None)
153
+ args['pad'] = 1
149
154
  args['select_mode'] = None
150
155
 
151
156
  def createListbox(self, layout, args):
152
- return psg.Listbox([], key=args['key'], pad=self.getPad(args), size=self.getSize(args))
157
+ return psg.Listbox([], key=args['key'], pad=args['pad'], size=self.getSize(args))
153
158
 
154
159
  def getDefaultMultiline(self, args):
155
160
  args['default_text'] = ''
@@ -160,7 +165,7 @@ class GUtils:
160
165
  return psg.Multiline(default_text=args['default_text'], key=args['key'], size=self.getSize(args))
161
166
 
162
167
  def getDefaultText(self, args):
163
- args['text'] = '(empty)'
168
+ args['text'] = ''
164
169
  args['key'] = None
165
170
  args['size'] = (None, None)
166
171
  args['expand_x'] = False
@@ -0,0 +1,13 @@
1
+ ! Test
2
+
3
+ script Test
4
+
5
+ variable Text
6
+
7
+ debug step
8
+
9
+ put `12345jj6789 S Room1` into Text
10
+ ! split Text on ` `
11
+ ! index Text to 2
12
+ print Text
13
+ exit
@@ -1,14 +0,0 @@
1
- ! A test script
2
-
3
- script Test
4
-
5
- variable File
6
- variable Segment
7
-
8
- set the encoding to `hex`
9
- load File from `/data/Projects/rbr/roombyroom/Controller/home/orangepi/firmware/NOW/config.py`
10
- put left 200 of File into Segment
11
- print Segment
12
- put encode Segment into Segment
13
- print Segment
14
- exit
File without changes
File without changes