easycoder 250721.1__tar.gz → 250722.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 (168) hide show
  1. {easycoder-250721.1 → easycoder-250722.1}/PKG-INFO +2 -3
  2. {easycoder-250721.1 → easycoder-250722.1}/easycoder/__init__.py +3 -1
  3. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_core.py +8 -7
  4. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_program.py +8 -12
  5. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_pyside.py +33 -13
  6. {easycoder-250721.1 → easycoder-250722.1}/.gitignore +0 -0
  7. {easycoder-250721.1 → easycoder-250722.1}/LICENSE +0 -0
  8. {easycoder-250721.1 → easycoder-250722.1}/README.md +0 -0
  9. {easycoder-250721.1 → easycoder-250722.1}/backdrop.jpg +0 -0
  10. {easycoder-250721.1 → easycoder-250722.1}/doc/README.md +0 -0
  11. {easycoder-250721.1 → easycoder-250722.1}/doc/core/README.md +0 -0
  12. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/boolean.md +0 -0
  13. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/empty.md +0 -0
  14. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/ends.md +0 -0
  15. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/even.md +0 -0
  16. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/exists.md +0 -0
  17. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/greater.md +0 -0
  18. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/hasProperty.md +0 -0
  19. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/includes.md +0 -0
  20. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/is.md +0 -0
  21. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/less.md +0 -0
  22. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/list.md +0 -0
  23. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/none.md +0 -0
  24. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/not.md +0 -0
  25. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/numeric.md +0 -0
  26. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/object.md +0 -0
  27. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/odd.md +0 -0
  28. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/starts.md +0 -0
  29. {easycoder-250721.1 → easycoder-250722.1}/doc/core/conditions/string.md +0 -0
  30. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/add.md +0 -0
  31. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/append.md +0 -0
  32. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/assert.md +0 -0
  33. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/begin.md +0 -0
  34. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/clear.md +0 -0
  35. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/close.md +0 -0
  36. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/create.md +0 -0
  37. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/debug.md +0 -0
  38. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/decrement.md +0 -0
  39. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/delete.md +0 -0
  40. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/divide.md +0 -0
  41. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/exit.md +0 -0
  42. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/file.md +0 -0
  43. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/fork.md +0 -0
  44. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/get.md +0 -0
  45. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/go.md +0 -0
  46. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/gosub.md +0 -0
  47. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/if.md +0 -0
  48. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/import.md +0 -0
  49. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/increment.md +0 -0
  50. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/index.md +0 -0
  51. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/init.md +0 -0
  52. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/input.md +0 -0
  53. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/load.md +0 -0
  54. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/lock.md +0 -0
  55. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/log.md +0 -0
  56. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/module.md +0 -0
  57. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/multiply.md +0 -0
  58. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/negate.md +0 -0
  59. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/on.md +0 -0
  60. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/open.md +0 -0
  61. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/pop.md +0 -0
  62. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/post.md +0 -0
  63. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/print.md +0 -0
  64. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/push.md +0 -0
  65. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/put.md +0 -0
  66. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/read.md +0 -0
  67. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/release.md +0 -0
  68. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/replace.md +0 -0
  69. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/return.md +0 -0
  70. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/run.md +0 -0
  71. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/save.md +0 -0
  72. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/script.md +0 -0
  73. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/send.md +0 -0
  74. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/set.md +0 -0
  75. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/shuffle.md +0 -0
  76. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/split.md +0 -0
  77. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/stack.md +0 -0
  78. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/stop.md +0 -0
  79. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/system.md +0 -0
  80. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/take.md +0 -0
  81. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/toggle.md +0 -0
  82. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/truncate.md +0 -0
  83. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/unlock.md +0 -0
  84. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/use.md +0 -0
  85. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/variable.md +0 -0
  86. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/wait.md +0 -0
  87. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/while.md +0 -0
  88. {easycoder-250721.1 → easycoder-250722.1}/doc/core/keywords/write.md +0 -0
  89. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/arg.md +0 -0
  90. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/args.md +0 -0
  91. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/cos.md +0 -0
  92. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/datime.md +0 -0
  93. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/decode.md +0 -0
  94. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/element.md +0 -0
  95. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/elements.md +0 -0
  96. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/empty.md +0 -0
  97. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/encode.md +0 -0
  98. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/error.md +0 -0
  99. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/files.md +0 -0
  100. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/float.md +0 -0
  101. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/from.md +0 -0
  102. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/hash.md +0 -0
  103. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/index.md +0 -0
  104. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/integer.md +0 -0
  105. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/json.md +0 -0
  106. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/keys.md +0 -0
  107. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/left.md +0 -0
  108. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/length.md +0 -0
  109. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/lowercase.md +0 -0
  110. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/memory.md +0 -0
  111. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/modification.md +0 -0
  112. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/modulo.md +0 -0
  113. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/newline.md +0 -0
  114. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/now.md +0 -0
  115. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/position.md +0 -0
  116. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/property.md +0 -0
  117. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/random.md +0 -0
  118. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/right.md +0 -0
  119. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/sin.md +0 -0
  120. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/stringify.md +0 -0
  121. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/tab.md +0 -0
  122. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/tan.md +0 -0
  123. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/timestamp.md +0 -0
  124. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/today.md +0 -0
  125. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/trim.md +0 -0
  126. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/type.md +0 -0
  127. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/uppercase.md +0 -0
  128. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/value.md +0 -0
  129. {easycoder-250721.1 → easycoder-250722.1}/doc/core/values/weekday.md +0 -0
  130. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/README.md +0 -0
  131. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/attach.md +0 -0
  132. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/close.md +0 -0
  133. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/create.md +0 -0
  134. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/ellipse.md +0 -0
  135. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/image.md +0 -0
  136. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/move.md +0 -0
  137. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/on.md +0 -0
  138. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/rectangle.md +0 -0
  139. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/render.md +0 -0
  140. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/run.md +0 -0
  141. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/set.md +0 -0
  142. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/keywords/text.md +0 -0
  143. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/values/attribute.md +0 -0
  144. {easycoder-250721.1 → easycoder-250722.1}/doc/graphics/values/window.md +0 -0
  145. {easycoder-250721.1 → easycoder-250722.1}/easycoder/README.md +0 -0
  146. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_classes.py +0 -0
  147. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_compiler.py +0 -0
  148. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_condition.py +0 -0
  149. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_handler.py +0 -0
  150. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_timestamp.py +0 -0
  151. {easycoder-250721.1 → easycoder-250722.1}/easycoder/ec_value.py +0 -0
  152. {easycoder-250721.1 → easycoder-250722.1}/images/Semoigo Dawn.jpg +0 -0
  153. {easycoder-250721.1 → easycoder-250722.1}/json/graphics-demo.json +0 -0
  154. {easycoder-250721.1 → easycoder-250722.1}/plugins/ec_keyboard.py +0 -0
  155. {easycoder-250721.1 → easycoder-250722.1}/plugins/ec_p100.py +0 -0
  156. {easycoder-250721.1 → easycoder-250722.1}/plugins/ec_pyside6.py +0 -0
  157. {easycoder-250721.1 → easycoder-250722.1}/plugins/points.py +0 -0
  158. {easycoder-250721.1 → easycoder-250722.1}/pyproject.toml +0 -0
  159. {easycoder-250721.1 → easycoder-250722.1}/scripts/benchmark.ecs +0 -0
  160. {easycoder-250721.1 → easycoder-250722.1}/scripts/config.ecg +0 -0
  161. {easycoder-250721.1 → easycoder-250722.1}/scripts/ec_keyboard.py +0 -0
  162. {easycoder-250721.1 → easycoder-250722.1}/scripts/findxr.ecs +0 -0
  163. {easycoder-250721.1 → easycoder-250722.1}/scripts/fizzbuzz.ecs +0 -0
  164. {easycoder-250721.1 → easycoder-250722.1}/scripts/hello.ecs +0 -0
  165. {easycoder-250721.1 → easycoder-250722.1}/scripts/points.ecs +0 -0
  166. {easycoder-250721.1 → easycoder-250722.1}/scripts/test.ecs +0 -0
  167. {easycoder-250721.1 → easycoder-250722.1}/scripts/tests.ecs +0 -0
  168. {easycoder-250721.1 → easycoder-250722.1}/testrc.py +0 -0
@@ -1,12 +1,11 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: easycoder
3
- Version: 250721.1
3
+ Version: 250722.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>
7
7
  Description-Content-Type: text/markdown
8
8
  Classifier: License :: OSI Approved :: MIT License
9
- License-File: LICENSE
10
9
  Requires-Dist: pytz
11
10
  Requires-Dist: requests
12
11
  Requires-Dist: psutil
@@ -8,5 +8,7 @@ from .ec_handler import *
8
8
  from .ec_program import *
9
9
  from .ec_timestamp import *
10
10
  from .ec_value import *
11
+ from .ec_pyside import *
12
+ from .keyboard import *
11
13
 
12
- __version__ = "250721.1"
14
+ __version__ = "250722.1"
@@ -1798,13 +1798,14 @@ class Core(Handler):
1798
1798
 
1799
1799
  # Use a plugin module
1800
1800
  def k_use(self, command):
1801
- if self.nextIs('graphics'):
1802
- print('Loading graphics module')
1803
- from .ec_pyside import Graphics
1804
- self.program.graphics = Graphics
1805
- self.program.classes.append(Graphics)
1806
- self.program.processClasses()
1807
- return True
1801
+ if self.nextIs('plugin'):
1802
+ if self.nextIs('graphics'):
1803
+ print('Loading graphics module')
1804
+ from .ec_pyside import Graphics
1805
+ self.program.graphics = Graphics
1806
+ self.program.useClass(Graphics)
1807
+ return True
1808
+ return False
1808
1809
 
1809
1810
  # Declare a general-purpose variable
1810
1811
  def k_variable(self, command):
@@ -22,7 +22,6 @@ class Program:
22
22
  if len(argv) == 0:
23
23
  print('No script supplied')
24
24
  exit()
25
- self.classes=[Core]
26
25
  scriptName = argv
27
26
 
28
27
  f = open(scriptName, 'r')
@@ -44,7 +43,7 @@ class Program:
44
43
  self.value = self.compiler.value
45
44
  self.condition = self.compiler.condition
46
45
  self.graphics = None
47
- self.processClasses()
46
+ self.useClass(Core)
48
47
  self.externalControl = False
49
48
  self.ticker = 0
50
49
  self.running = True
@@ -101,16 +100,13 @@ class Program:
101
100
  module = module.replace('/','.').replace('.py','')
102
101
  module = importlib.import_module(module)
103
102
  plugin = getattr(module, args[1])
104
- self.classes.append(plugin)
105
- self.processClasses()
106
-
107
- # Process the class list to get the domains
108
- def processClasses(self):
109
- self.domains=[]
110
- for clazz in self.classes:
111
- handler = clazz(self.compiler)
112
- self.domains.append(handler)
113
- self.domainIndex[handler.getName()] = handler
103
+ self.useClass(plugin)
104
+
105
+ # Use a specified class
106
+ def useClass(self, clazz):
107
+ handler = clazz(self.compiler)
108
+ self.domains.append(handler)
109
+ self.domainIndex[handler.getName()] = handler
114
110
 
115
111
  # Get the domain list
116
112
  def getDomains(self):
@@ -41,6 +41,7 @@ class Graphics(Handler):
41
41
  Handler.__init__(self, compiler)
42
42
  self.blocked = False
43
43
  self.runOnTick = 0
44
+ self.vkb = False
44
45
 
45
46
  def getName(self):
46
47
  return 'graphics'
@@ -321,19 +322,23 @@ class Graphics(Handler):
321
322
  if self.nextIsSymbol():
322
323
  command['window'] = self.getSymbolRecord()['name']
323
324
  else: command['window'] = None
324
- title = ''
325
325
  while True:
326
326
  if self.peek() == 'type':
327
327
  self.nextToken()
328
328
  command['type'] = self.nextToken()
329
329
  elif self.peek() == 'title':
330
330
  self.nextToken()
331
- title = self.nextValue()
331
+ command['title'] = self.nextValue()
332
332
  elif self.peek() == 'prompt':
333
333
  self.nextToken()
334
334
  command['prompt'] = self.nextValue()
335
+ elif self.peek() == 'value':
336
+ self.nextToken()
337
+ command['value'] = self.nextValue()
335
338
  else: break
336
- command['title'] = self.compileConstant(title)
339
+ if not 'title' in command: command['title'] = self.compileConstant('')
340
+ if not 'value' in command: command['value'] = self.compileConstant('')
341
+ if not 'prompt' in command: command['prompt'] = self.compileConstant('')
337
342
  self.add(command)
338
343
  return True
339
344
 
@@ -467,13 +472,17 @@ class Graphics(Handler):
467
472
  dialog = QDialog()
468
473
  mainLayout = QVBoxLayout(dialog)
469
474
  dialog.setWindowTitle(self.getRuntimeValue(command['title']))
470
- dialogType = command['type']
475
+ dialogType = command['type'].lower()
471
476
  dialog.dialogType = dialogType
472
- if dialogType in ['confirm', 'lineEdit']:
477
+ prompt = self.getRuntimeValue(command['prompt'])
478
+ if dialogType in ['confirm', 'lineedit']:
473
479
  if dialogType == 'confirm':
474
- mainLayout.addWidget(QLabel(self.getRuntimeValue(command['prompt'])))
475
- elif dialogType == 'lineinput':
480
+ mainLayout.addWidget(QLabel(prompt))
481
+ elif dialogType == 'lineedit':
482
+ mainLayout.addWidget(QLabel(prompt))
476
483
  dialog.lineEdit = QLineEdit(dialog)
484
+ dialog.value = self.getRuntimeValue(command['value'])
485
+ dialog.lineEdit.setText(dialog.value)
477
486
  mainLayout.addWidget(dialog.lineEdit)
478
487
  buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, dialog)
479
488
  buttonBox.accepted.connect(dialog.accept)
@@ -958,12 +967,14 @@ class Graphics(Handler):
958
967
  elif 'dialog' in command:
959
968
  record = self.getVariable(command['dialog'])
960
969
  dialog = record['dialog']
961
- if dialog.dialogType == 'confirm':
962
- record['result'] = True if dialog.exec() == QDialog.Accepted else False
963
- elif dialog.dialogType == 'lineinput':
964
- if dialog.exec() == QDialog.Accepted:
965
- record['result'] = dialog.lineEdit.text()
966
- else: return ''
970
+ if dialog.dialogType in ['confirm', 'lineedit']:
971
+ if dialog.dialogType == 'confirm':
972
+ record['result'] = True if dialog.exec() == QDialog.Accepted else False
973
+ elif dialog.dialogType == 'lineedit':
974
+ if self.vkb: print('Show virtual keyboard')
975
+ if dialog.exec() == QDialog.Accepted:
976
+ record['result'] = dialog.lineEdit.text()
977
+ else: record['result'] = dialog.value
967
978
  return self.nextPC()
968
979
 
969
980
  # Start the graphics
@@ -990,6 +1001,15 @@ class Graphics(Handler):
990
1001
  self.app.lastWindowClosed.connect(on_last_window_closed)
991
1002
  self.app.exec()
992
1003
 
1004
+ # use virtual keyboard
1005
+ def k_use(self, command):
1006
+ if self.nextIs('virtual'):
1007
+ if self.nextIs('keyboard'):
1008
+ print('Use the virtual keyboard')
1009
+ self.vkb = True
1010
+ return True
1011
+ return False
1012
+
993
1013
  # Declare a window variable
994
1014
  def k_window(self, command):
995
1015
  return self.compileVariable(command)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes