unimacro 4.1.7.dev4__tar.gz → 4.1.8.dev2__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.
Files changed (204) hide show
  1. unimacro-4.1.8.dev2/LICENSE.txt +67 -0
  2. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/PKG-INFO +19 -15
  3. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/README.md +13 -11
  4. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/pyproject.toml +6 -17
  5. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/BrowseGrammar.py +52 -70
  6. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_calculator.py +5 -5
  7. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_keystrokes.py +20 -20
  8. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_latex.py +6 -6
  9. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_number extended.py +7 -7
  10. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_oops.py +29 -29
  11. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_repeat.py +4 -4
  12. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_unimacrotest.py +3 -3
  13. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/excel.py +9 -9
  14. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/frescobaldi.py +15 -15
  15. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/solitaire.py +28 -28
  16. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/xxxxnatspeak_dialog.py +7 -7
  17. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/TrainDialog.py +2 -0
  18. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_brackets.py +13 -13
  19. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_clickbyvoice.py +64 -59
  20. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_folders.py +58 -69
  21. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_general.py +53 -53
  22. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_lines.py +45 -41
  23. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_number simple.py +3 -3
  24. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_tags.py +8 -8
  25. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_tasks.py +47 -47
  26. unimacro-4.1.8.dev2/src/unimacro/UnimacroGrammars/foo.py +25 -0
  27. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/__init__.py +4 -9
  28. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/_control.py +34 -71
  29. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/enabledictation/_enabledictation.py +6 -6
  30. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/listdialogs.py +1 -1
  31. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/lynote.py +7 -9
  32. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/natlinkutilsbj.py +112 -102
  33. unimacro-4.1.8.dev2/src/unimacro/peekable.py +226 -0
  34. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/_control.py +9 -9
  35. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/_dictationproject.py +9 -9
  36. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/_global_dictation.py +9 -9
  37. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/scintillacon.py +1 -0
  38. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/spokenforms.py +1 -2
  39. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/ActionsTest.py +3 -3
  40. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/BasicTest.py +3 -3
  41. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/BringupTest.py +2 -2
  42. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/ClipboardTest.py +9 -9
  43. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/MessageTest.py +1 -1
  44. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/SearchTest.py +8 -8
  45. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/UnimacroTestHelpers.py +4 -4
  46. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/UtilsTest.py +6 -6
  47. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestActions.py +3 -3
  48. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestClipboard.py +5 -5
  49. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestDocstringGrammar.py +4 -4
  50. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestIniGrammar.py +4 -4
  51. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestMessagefunctions.py +5 -5
  52. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestMouse.py +4 -4
  53. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestNatlinkutilsqh.py +19 -19
  54. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestNumbersConversion.py +4 -4
  55. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestProfileKaiserDictation.py +4 -4
  56. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/windowinfo.py +25 -24
  57. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/windowparameters.py +2 -2
  58. unimacro-4.1.7.dev4/src/unimacro/D_train.py +0 -46
  59. unimacro-4.1.7.dev4/src/unimacro/check_unimacro_grammars.py +0 -160
  60. unimacro-4.1.7.dev4/src/unimacro/dos83.py +0 -57
  61. unimacro-4.1.7.dev4/src/unimacro/xxxxxxxpythonwin_dict.py +0 -308
  62. unimacro-4.1.7.dev4/src/unimacro/xxxxxxxunimacro_wxpythondialogs.py +0 -23
  63. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/BrowseGrammarApp.py +0 -0
  64. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/D_.py +0 -0
  65. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/DialogServer.py +0 -0
  66. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_testtrayicon.py +0 -0
  67. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/winword_variable.py +0 -0
  68. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/README.txt +0 -0
  69. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/__init__.py +0 -0
  70. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_debug_natlink.py.txt +0 -0
  71. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_debug_unimacro.py.txt +0 -0
  72. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_folders fillinstancevariables.txt +0 -0
  73. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/settings folders grammar.txt +0 -0
  74. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_down.ico +0 -0
  75. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_down2.ico +0 -0
  76. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_left.ico +0 -0
  77. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_left2.ico +0 -0
  78. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_nodir.ico +0 -0
  79. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_right.ico +0 -0
  80. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_right2.ico +0 -0
  81. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_up.ico +0 -0
  82. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_up2.ico +0 -0
  83. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/foldersrememberdialog.py +0 -0
  84. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/iban.py +0 -0
  85. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/repeat.ico +0 -0
  86. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/repeat2.ico +0 -0
  87. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/waiting.ico +0 -0
  88. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/waiting2.ico +0 -0
  89. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/namelist.py +0 -0
  90. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ahk/getintoforeground.ahk +0 -0
  91. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ahk/showmessageswindow.ahk +0 -0
  92. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/actions.ini +0 -0
  93. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/disable_natlink.bat +0 -0
  94. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/enable_natlink_kaiser.bat +0 -0
  95. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/enable_natlink_kaiser_qh.bat +0 -0
  96. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/enable_natlink_qh.bat +0 -0
  97. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/Template List.txt +0 -0
  98. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/_control.ini +0 -0
  99. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/_global_dictation.ini +0 -0
  100. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/actions.ini +0 -0
  101. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/nld_inifiles/_control.ini +0 -0
  102. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/nld_inifiles/_global_dictation.ini +0 -0
  103. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/starting messages.txt +0 -0
  104. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/actions.ini +0 -0
  105. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/deu_inifiles/_control.ini +0 -0
  106. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/deu_spokenforms.ini +0 -0
  107. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_brackets.ini +0 -0
  108. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_clickbyvoice.ini +0 -0
  109. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_control.ini +0 -0
  110. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_documentation.ini +0 -0
  111. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_editcomments.ini +0 -0
  112. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_first_sample_docstring.ini +0 -0
  113. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_folders.ini +0 -0
  114. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_general.ini +0 -0
  115. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_gramoff.ini +0 -0
  116. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_gramon.ini +0 -0
  117. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_keystrokes.ini +0 -0
  118. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_latex.ini +0 -0
  119. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_lines.ini +0 -0
  120. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_modes.ini +0 -0
  121. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_number extended.ini +0 -0
  122. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_number simple.ini +0 -0
  123. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_oops.ini +0 -0
  124. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_repeat.ini +0 -0
  125. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_second_sample_docstring.ini +0 -0
  126. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_shownumbersplus.ini +0 -0
  127. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_tags.ini +0 -0
  128. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_tasks.ini +0 -0
  129. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_unimacrosample_docstring.ini +0 -0
  130. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_unimacrotest.ini +0 -0
  131. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/natspeak_dialog.ini +0 -0
  132. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/sol.ini +0 -0
  133. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/solitaire.ini +0 -0
  134. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/winword_styles_unimacro.ini +0 -0
  135. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_spokenforms.ini +0 -0
  136. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_control.ini +0 -0
  137. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_folders.ini +0 -0
  138. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_general.ini +0 -0
  139. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_lines.ini +0 -0
  140. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_tasks.ini +0 -0
  141. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_spokenforms.ini +0 -0
  142. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/ita_spokenforms.ini +0 -0
  143. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_brackets.ini +0 -0
  144. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_browser.ini +0 -0
  145. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_clickbyvoice.ini +0 -0
  146. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_commands.ini +0 -0
  147. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_control.ini +0 -0
  148. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_documentation.ini +0 -0
  149. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_editcomments.ini +0 -0
  150. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_first_sample_docstring.ini +0 -0
  151. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_folders.ini +0 -0
  152. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_general.ini +0 -0
  153. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_keystrokes.ini +0 -0
  154. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_latex.ini +0 -0
  155. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_lines.ini +0 -0
  156. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_modes.ini +0 -0
  157. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_number extended.ini +0 -0
  158. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_number simple.ini +0 -0
  159. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_number.ini +0 -0
  160. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_oops.ini +0 -0
  161. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_repeat.ini +0 -0
  162. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_second_sample_docstring.ini +0 -0
  163. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_shownumbersplus.ini +0 -0
  164. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_tags.ini +0 -0
  165. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_tasks.ini +0 -0
  166. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_unimacrotest.ini +0 -0
  167. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_unittest.ini +0 -0
  168. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/chrome_browsing.ini +0 -0
  169. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/excel.ini +0 -0
  170. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/firefox_browsing.ini +0 -0
  171. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/natspeak_dialog.ini +0 -0
  172. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/natspeak_sample_docstring.ini +0 -0
  173. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/sol.ini +0 -0
  174. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/solitaire.ini +0 -0
  175. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/winword_styles_unimacro.ini +0 -0
  176. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_spokenforms.ini +0 -0
  177. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/othertest_spokenforms.ini +0 -0
  178. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/spokenforms - kopie.ini +0 -0
  179. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/spokenforms.ini +0 -0
  180. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/test_spokenforms.ini +0 -0
  181. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/README.txt +0 -0
  182. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/TestCaseWithHelpers.py +0 -0
  183. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/_Unimacro_regression.vcl +0 -0
  184. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/print_hotspot.py +0 -0
  185. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/natlink.docx +0 -0
  186. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testempty.docx +0 -0
  187. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testempty.txt +0 -0
  188. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testlarge.txt +0 -0
  189. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testsmall.docx +0 -0
  190. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testsmall.txt +0 -0
  191. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/othertest_spokenforms.ini +0 -0
  192. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/test_spokenforms.ini +0 -0
  193. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testinifilehandling.ini +0 -0
  194. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testreloadtranslated.ini +0 -0
  195. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testruledoubleword.ini +0 -0
  196. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testrulefour.ini +0 -0
  197. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testruleonetwo.ini +0 -0
  198. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/udostringconvention.py +0 -0
  199. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestFolders.py +0 -0
  200. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestLilypond.py +0 -0
  201. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestMonitorfunctions.py +0 -0
  202. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/util.py +0 -0
  203. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_tracing.py +0 -0
  204. {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacrofoldersremembertemplate.py +0 -0
@@ -0,0 +1,67 @@
1
+ NatLink
2
+ (c) Copyright 1997-1999 by Joel Gould.
3
+ Portions (c) Copyright 1997-1999 by Dragon Systems, Inc. All Rights Reserved.
4
+ Permission to use, copy, modify and distribute this software (except for the files noted below)
5
+ and documentation for any purpose and without fee is hereby granted, provided that this copyright
6
+ notice appear in all copies and that both the copyright notice and this permission notice appear
7
+ in supporting documentation, and that the name Joel Gould not be used in advertising or publicity
8
+ pertaining to distribution of the software without specific, written permission.
9
+
10
+ The following files are NOT covered by the previous previous paragraph: NatlinkSource\speech.h and
11
+ NatlinkSource\dspeech.h. These files may not be redistributed although they can be freely downloaded
12
+ from http://www.synapseadaptive.com/joel/PythonMacroSystem.html and used on one machine.
13
+
14
+ Joel Gould disclaim all warranties with regard to this software, including all implied warranties of
15
+ merchantability and fitness, in no event shall Joel Gould be liable for any special, indirect or consequential
16
+ damages or any damages whatsoever resulting from the loss of use, data or profits whether in an action of contract,
17
+ negligence or tortious action, arising out of connection with the use or performance of this software.
18
+ Possession of this software does NOT grant the possessor any license to Dragon NaturallySpeaking or any
19
+ other Dragon Systems product, except where license to Dragon NaturallySpeaking or any other Dragon Systems
20
+ products is purchased or otherwise obtained separately.
21
+ This copyright only applies to NatLink, including source and object code and not to Dragon NaturallySpeaking
22
+ or any other Dragon Systems product.
23
+ Software on this web site is not available from Dragon Systems, nor is Dragon Systems formally associated with this software in any way.
24
+
25
+ -----------------------------------
26
+
27
+
28
+ Configurenatlinkunimacrovocola:
29
+ Copyright (c) 2008 by Quintijn Hoogenboom. It may be redistributed in any way as long as this copyright notice remains.
30
+
31
+ -----------------------------------
32
+
33
+ Unimacro (c) 2002-2008 Quintijn Hoogenboom, Ben Staniford, Bart Jan van Os
34
+
35
+ "unimacro" is free software; you can redistribute it and/or modify
36
+ it under the terms of the GNU General Public License, see:
37
+ http://www.gnu.org/licenses/gpl.txt
38
+
39
+ "unimacro" is distributed in the hope that it will be useful, but
40
+ WITHOUT ANY WARRANTY; See the GNU General Public License details.
41
+
42
+ "unimacro" makes use of another SourceForge project "natlink",
43
+ which has the copyright notice shown above.
44
+
45
+ -----------------------------------
46
+
47
+ windll.py/calldll.pyd
48
+ Copyright 1996-2000 by Sam Rushing
49
+ All Rights Reserved
50
+ Permission to use, copy, modify, and distribute this software and
51
+ its documentation for any purpose and without fee is hereby
52
+ granted, provided that the above copyright notice appear in all
53
+ copies and that both that copyright notice and this permission
54
+ notice appear in supporting documentation, and that the name of Sam
55
+ Rushing not be used in advertising or publicity pertaining to
56
+ distribution of the software without specific, written prior
57
+ permission.
58
+
59
+ SAM RUSHING DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
60
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
61
+ NO EVENT SHALL SAM RUSHING BE LIABLE FOR ANY SPECIAL, INDIRECT OR
62
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
63
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
64
+ NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
65
+ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
66
+
67
+ ---------------------------------------
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: unimacro
3
- Version: 4.1.7.dev4
3
+ Version: 4.1.8.dev2
4
4
  Summary: Unimacro __init__
5
5
  Author-email: "Quintijn Hoogenboom (maintainer)" <q.hoogenboom@antenna.nl>
6
6
  Requires-Python: >=3.10
@@ -17,11 +17,13 @@ Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: Implementation :: CPython
18
18
  Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
19
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
- Requires-Dist: dtactions ~= 1.6.4.dev3
20
+ License-File: LICENSE.txt
21
+ Requires-Dist: dtactions >= 1.6.5.dev1
21
22
  Requires-Dist: debugpy >= 1.2.0
22
23
  Requires-Dist: pywin32 >= 304
23
- Requires-Dist: natlinkcore ~= 5.4.2.dev1
24
+ Requires-Dist: natlinkcore >= 5.4.2
24
25
  Requires-Dist: FreeSimpleGUI>=5.1.0
26
+ Requires-Dist: icecream >= 2.1.3
25
27
  Requires-Dist: pyenvutils ; extra == "dev"
26
28
  Requires-Dist: entry-point-inspector ; extra == "dev"
27
29
  Requires-Dist: build ; extra == "dev"
@@ -35,7 +37,7 @@ Provides-Extra: test
35
37
 
36
38
  # Unimacro
37
39
  The Unimacro project aims to provide a rich set of command grammars, that can be configured by the users without programming knowledge.
38
- Read more at [Natlink, including Unimacro and Vocolaa](https://qh.antenna.nl/unimacro/index.html)
40
+ Read more at [Natlink, including Unimacro and Vocolaa](https://qh.antenna.nl/unimacro/grammars/index.html)
39
41
 
40
42
  # Installing
41
43
 
@@ -44,15 +46,17 @@ areas - probably nothing you can't live without.
44
46
 
45
47
  A limited number of grammars are by default available when you install unimacro:
46
48
 
47
- _control.py
48
- _general.py
49
- _folders.py
50
- _lines.py
51
- _brackets.py
52
- _tags.py
53
- _tasks.py
54
- _clickbyvoice.py
55
- _number simple.py
49
+ - _control.py
50
+ - _general.py
51
+ - _folders.py
52
+ - _lines.py
53
+ - _brackets.py
54
+ - _tags.py
55
+ - _tasks.py
56
+ - _clickbyvoice.py
57
+ - _number simple.py
58
+
59
+ In the sub folder OtherUnimacroGrammars more grammars are available. See above link to the Unimacro website above!
56
60
 
57
61
  ## Install unimacro
58
62
 
@@ -78,7 +82,7 @@ The Grammars listed above are installed with Unimacro in:
78
82
  the Lib\site-packages\unimacro\UnimacroGrammars sub-directory of your
79
83
  Python installation.
80
84
 
81
- More about [Unimacro Grammars](https://qh.antenna.nl/unimacro/grammars/globalgrammars/folders/index.html)
85
+ More about [Unimacro Grammars](https://qh.antenna.nl/unimacro/index.html)
82
86
 
83
87
  # Developer instructions.
84
88
 
@@ -1,6 +1,6 @@
1
1
  # Unimacro
2
2
  The Unimacro project aims to provide a rich set of command grammars, that can be configured by the users without programming knowledge.
3
- Read more at [Natlink, including Unimacro and Vocolaa](https://qh.antenna.nl/unimacro/index.html)
3
+ Read more at [Natlink, including Unimacro and Vocolaa](https://qh.antenna.nl/unimacro/grammars/index.html)
4
4
 
5
5
  # Installing
6
6
 
@@ -9,15 +9,17 @@ areas - probably nothing you can't live without.
9
9
 
10
10
  A limited number of grammars are by default available when you install unimacro:
11
11
 
12
- _control.py
13
- _general.py
14
- _folders.py
15
- _lines.py
16
- _brackets.py
17
- _tags.py
18
- _tasks.py
19
- _clickbyvoice.py
20
- _number simple.py
12
+ - _control.py
13
+ - _general.py
14
+ - _folders.py
15
+ - _lines.py
16
+ - _brackets.py
17
+ - _tags.py
18
+ - _tasks.py
19
+ - _clickbyvoice.py
20
+ - _number simple.py
21
+
22
+ In the sub folder OtherUnimacroGrammars more grammars are available. See above link to the Unimacro website above!
21
23
 
22
24
  ## Install unimacro
23
25
 
@@ -43,7 +45,7 @@ The Grammars listed above are installed with Unimacro in:
43
45
  the Lib\site-packages\unimacro\UnimacroGrammars sub-directory of your
44
46
  Python installation.
45
47
 
46
- More about [Unimacro Grammars](https://qh.antenna.nl/unimacro/grammars/globalgrammars/folders/index.html)
48
+ More about [Unimacro Grammars](https://qh.antenna.nl/unimacro/index.html)
47
49
 
48
50
  # Developer instructions.
49
51
 
@@ -1,12 +1,3 @@
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
1
  [build-system]
11
2
  requires = ["flit_core >=2,<4"]
12
3
  build-backend = "flit_core.buildapi"
@@ -15,7 +6,7 @@ build-backend = "flit_core.buildapi"
15
6
  name = "unimacro"
16
7
  authors = [{name = "Quintijn Hoogenboom (maintainer)", email = "q.hoogenboom@antenna.nl"}]
17
8
  dynamic = ["description"]
18
- version = "4.1.7.dev4"
9
+ version = "4.1.8.dev2"
19
10
  requires-python = ">=3.10"
20
11
  readme = "README.md"
21
12
 
@@ -25,11 +16,12 @@ readme = "README.md"
25
16
  #note you have to put in .dev1 to take the earliest dev release.
26
17
 
27
18
 
28
- dependencies = ["dtactions ~= 1.6.4.dev3",
19
+ dependencies = ["dtactions >= 1.6.5.dev1",
29
20
  "debugpy >= 1.2.0",
30
21
  "pywin32 >= 304",
31
- "natlinkcore ~= 5.4.2.dev1",
32
- "FreeSimpleGUI>=5.1.0"]
22
+ "natlinkcore >= 5.4.2",
23
+ "FreeSimpleGUI>=5.1.0",
24
+ "icecream >= 2.1.3"]
33
25
 
34
26
  classifiers=[ "Development Status :: 2 - Pre-Alpha",
35
27
  "Topic :: Multimedia :: Sound/Audio :: Speech",
@@ -56,10 +48,7 @@ dev = [
56
48
  unimacro_builtins = "unimacro.UnimacroGrammars:locateme"
57
49
 
58
50
  [project.entry-points."dt.loggers"]
59
- unimacro ="unimacro:logname"
60
- control="unimacro:control_logger_name"
61
- folders="unimacro:folders_logger_name"
62
- clickbyvoice="unimacro:clickbyvoice_logger_name"
51
+
63
52
 
64
53
  [tool.pytest.ini_options]
65
54
  minversion = "7.1.2"
@@ -2,29 +2,12 @@
2
2
  # (c) copyright 2003 Quintijn Hoogenboom (quintijn@users.sourceforge.net)
3
3
  # Ben Staniford (ben_staniford@users.sourceforge.net)
4
4
  # Bart Jan van Os (bjvo@users.sourceforge.net)
5
- #
6
- # This file is part of a SourceForge project called "unimacro" see
7
- # http://unimacro.SourceForge.net).
8
- #
9
- # "unimacro" is free software; you can redistribute it and/or modify
10
- # it under the terms of the GNU General Public License, see:
11
- # http://www.gnu.org/licenses/gpl.txt
12
- #
13
- # "unimacro" is distributed in the hope that it will be useful, but
14
- # WITHOUT ANY WARRANTY; See the GNU General Public License details.
15
- #
16
- # "unimacro" makes use of another SourceForge project "natlink",
17
- # which has the following copyright notice:
5
+ # In github/dictation-toolbox by now (2026)
18
6
  #
19
7
  # Python Macro Language for Dragon NaturallySpeaking
20
8
  # (c) Copyright 1999 by Joel Gould
21
9
  # Portions (c) Copyright 1999 by Dragon Systems, Inc.
22
- #
23
- # Python Macro Language for Dragon NaturallySpeaking
24
- # (c) Copyright 1999 by Joel Gould
25
- # Portions (c) Copyright 1999 by Dragon Systems, Inc.
26
10
  #
27
-
28
11
  # This file implements a base classes for a dialog/window to browse NatLink grammars
29
12
  # The browser is based upon a tree dialog, adapted from the hiertest demo
30
13
  # Author: Bart Jan van Os, Version: 1.0
@@ -41,12 +24,8 @@ NatLink grammars
41
24
 
42
25
  The browser is based upon a tree dialog, adapted from the hiertest demo
43
26
  """
44
-
45
- import os
27
+ #pylint: disable = R0904, W0702, R0912, R0913, R0914
46
28
  import copy
47
- import re
48
- import types
49
- from natlinkcore import natlinkutils
50
29
  from natlinkcore import gramparser # for splitApartLines
51
30
 
52
31
  ListCode = 0 # List
@@ -65,7 +44,7 @@ def IsText(value):
65
44
  return isinstance(value, str)
66
45
 
67
46
  def GrammarElementKey(item):
68
- if type(item) == str:
47
+ if isinstance(item, str):
69
48
  return item.lower()
70
49
  return item.GetName().lower()
71
50
 
@@ -87,15 +66,13 @@ class GrammarElement:
87
66
  def Append(self,NewElement):
88
67
  self.Included.append(NewElement)
89
68
  self.ObjIncluded=self.ObjIncluded or not IsText(NewElement)
90
- pass
91
69
 
92
70
  def Insert(self,NewElement):
93
71
  self.Included.insert(0,NewElement)
94
72
  self.ObjIncluded=self.ObjIncluded or not IsText(NewElement)
95
- pass
73
+
96
74
  def Sort(self):
97
75
  self.Included.sort(key=GrammarElementKey)
98
- pass
99
76
 
100
77
  def SetToAllText(self,Text):
101
78
  AllText = [str(t) for t in Text]
@@ -105,7 +82,8 @@ class GrammarElement:
105
82
  def SetIsAllText(self):
106
83
  if self.ObjIncluded:
107
84
  for x in self.Included:
108
- if not IsText(x): return
85
+ if not IsText(x):
86
+ return
109
87
  self.ObjIncluded=0
110
88
 
111
89
  def GetName(self):
@@ -113,29 +91,28 @@ class GrammarElement:
113
91
  if self.GramType==RuleCode:
114
92
  if self.IsRuleContainer():
115
93
  return self.Name
116
- else:
117
- return '<'+self.Name+'>'
118
- elif self.GramType==ListCode:
94
+ return '<'+self.Name+'>'
95
+ if self.GramType==ListCode:
119
96
  return '{'+self.Name+'}'
120
- else:
121
- return self.Name
122
- else:
123
- return ''
97
+ return self.Name
98
+ return ''
124
99
 
125
100
 
126
101
  def AreAllWordsOrLists(self,contents=''):
127
102
  if contents=='':
128
103
  contents=self.GetAllIncluded(1,Unfold=0)
129
- return (not '<' in contents)
104
+ return not '<' in contents
130
105
 
131
106
  def AreAllWords(self,contents=''): #might be combination of seq and alt
132
- if not self.ObjIncluded: return 1
107
+ if not self.ObjIncluded:
108
+ return 1
133
109
  if contents=='':
134
110
  contents=self.GetAllIncluded(1,Unfold=0)
135
111
  return (not '<' in contents) and (not '{' in contents)
136
112
 
137
113
  def IsAllText(self):
138
- if self.ObjIncluded: return False
114
+ if self.ObjIncluded:
115
+ return False
139
116
  if len(self.Included)>0:
140
117
  # print 'IsAllText: %s'% self.Included
141
118
  return True
@@ -146,7 +123,8 @@ class GrammarElement:
146
123
 
147
124
  def IsRuleContainer(self):
148
125
  for x in self.Included:
149
- if (IsText(x)) or x.GramType!=RuleCode: return 0
126
+ if (IsText(x)) or x.GramType!=RuleCode:
127
+ return 0
150
128
  return 1
151
129
 
152
130
  def IsAltOrList(self):
@@ -154,11 +132,11 @@ class GrammarElement:
154
132
 
155
133
 
156
134
  def AreAlternatives(self):
157
- return (self.GramType==AltCode) or (self.GramType==ListCode)
135
+ return self.GramType in (AltCode, ListCode)
158
136
 
159
137
  def SetIsLongAlternative(self):
160
138
  if self.GramType==AltCode:
161
- self.IsLA=self.IsAllText() and (len(u' | '.join(self.Included))>MaxUnfoldLen)
139
+ self.IsLA=self.IsAllText() and (len(' | '.join(self.Included)) > MaxUnfoldLen)
162
140
  if not self.IsLA and (self.AlternativesDict!={}):
163
141
  count=0
164
142
  for x in self.Included:
@@ -219,8 +197,8 @@ class GrammarElement:
219
197
  RuleNames=[]
220
198
  for x in AllRules:
221
199
  if not (x in Rules or x.GetName() in RuleNames):
222
- Rules.append(x)
223
- RuleNames.append(x.GetName())
200
+ Rules.append(x)
201
+ RuleNames.append(x.GetName())
224
202
  return Rules
225
203
 
226
204
  def GetInnerRules(self,maxLevel):
@@ -235,8 +213,7 @@ class GrammarElement:
235
213
  x=self.Included[i]
236
214
  if IsText(x):
237
215
  return x
238
- else:
239
- return x.GetContents(maxLevel-(x.GramType==RuleCode),Unfold)
216
+ return x.GetContents(maxLevel-(x.GramType==RuleCode),Unfold)
240
217
  except:
241
218
  return ''
242
219
 
@@ -248,7 +225,7 @@ class GrammarElement:
248
225
 
249
226
  def GetAllIncluded(self,maxLevel,Unfold):
250
227
  if len(self.Included)==0:
251
- if (self.GramType==ListCode):
228
+ if self.GramType==ListCode:
252
229
  contents='???'
253
230
  else:
254
231
  contents=''
@@ -257,10 +234,10 @@ class GrammarElement:
257
234
  if (not Unfold) and self.IsLongAlternative():
258
235
  contents=self.Name
259
236
  else:
260
- if (self.GramType==AltCode) or (self.GramType==ListCode):
261
- contents=u' | '.join(self.Included)
237
+ if self.GramType in (AltCode, ListCode):
238
+ contents=' | '.join(self.Included)
262
239
  else:
263
- contents=u' '.join(self.Included)
240
+ contents=' '.join(self.Included)
264
241
  contents=self.ReduceLongAlternatives(contents)
265
242
  else:
266
243
  contents=self.GetIncluded(0,maxLevel,Unfold)
@@ -289,12 +266,13 @@ class GrammarElement:
289
266
  if len(c)>3: # try to remove redundant parens
290
267
  Remove=c[1]=='{' and (c[-2]=='}') and (not '{' in c[2:-2])
291
268
  Remove=Remove or (c[1]=='[' and (c[-2]==']') and (not ']' in c[2:-2]))
292
- if Remove: contents=contents[1:-1]
269
+ if Remove:
270
+ contents=contents[1:-1]
293
271
  contents=contents+'+'
294
272
  else:
295
273
  contents= '<'+self.Name
296
- if (maxLevel<=0):
297
- if (Unfold): #Try to go deeper one level at a time, until too long
274
+ if maxLevel<=0:
275
+ if Unfold: #Try to go deeper one level at a time, until too long
298
276
  l=maxLevel
299
277
  NiC=self.GetAllIncluded(l,0)
300
278
  includedContents=''
@@ -344,13 +322,12 @@ class GrammarElement:
344
322
  del newRules[Rules.index(r.Name)]
345
323
  if len(newRules)==0:
346
324
  return newPath,newobjPath
347
- else:
348
- n,o=r.FindLargestRulePath(newRules)
349
- newPath.extend(n)
350
- newobjPath.extend(o)
351
- if len(newPath)>len(largestPath):
352
- largestPath=newPath
353
- objPath=newobjPath
325
+ n,o=r.FindLargestRulePath(newRules)
326
+ newPath.extend(n)
327
+ newobjPath.extend(o)
328
+ if len(newPath)>len(largestPath):
329
+ largestPath=newPath
330
+ objPath=newobjPath
354
331
  else:
355
332
  newPath,o=r.FindLargestRulePath(Rules)
356
333
  newobjPath.extend(o)
@@ -378,13 +355,14 @@ class GrammarElement:
378
355
  def RemoveDuplicatesOfSortedList(List):
379
356
  for i in range(len(List)-1,-1,-1):
380
357
  if i>0:
381
- if List[i]==List[i-1]: del List[i]
358
+ if List[i]==List[i-1]:
359
+ del List[i]
382
360
 
383
361
  def InverseDict(SomeDict):
384
- InverseDict={}
362
+ ID = {}
385
363
  for key in SomeDict.keys():
386
- InverseDict[SomeDict[key]]=key
387
- return InverseDict
364
+ ID[SomeDict[key]]=key
365
+ return ID
388
366
 
389
367
  def ParseRuleDefinitions(name,stack,Parser,ParserInfo,Lists,Dicts):
390
368
  KnownWords,KnownRules,KnownLists,ImportRules=ParserInfo
@@ -419,7 +397,7 @@ def ParseRuleDefinitions(name,stack,Parser,ParserInfo,Lists,Dicts):
419
397
  elif element[0]=='end':
420
398
  #Pack simple text sequences into parent list as multi word item in Included
421
399
  if CurElement.IsAllText() and (CurElement.GramType==SeqCode):
422
- stack[1].Included[-1]=u' '.join(CurElement.Included)
400
+ stack[1].Included[-1] = ' '.join(CurElement.Included)
423
401
  else: #make shure object is not turned into AllText
424
402
  CurElement.SetIsAllText()
425
403
  del stack[0]
@@ -440,7 +418,8 @@ def ParseRuleDefinitions(name,stack,Parser,ParserInfo,Lists,Dicts):
440
418
 
441
419
  def ParseGrammarDefinitions(gramSpec,gramName,Lists,Dicts,activeRules,All=1, Exclusive=0,
442
420
  exclusiveState=0):
443
- if type(gramSpec)!=type([]): gramSpec=[gramSpec]
421
+ if not isinstance(gramSpec, list):
422
+ gramSpec=[gramSpec]
444
423
  gramparser.splitApartLines(gramSpec)
445
424
  ## Parser = natlinkutils.GramParser(gramSpec)
446
425
  ## Parser.doParse()
@@ -453,7 +432,7 @@ def ParseGrammarDefinitions(gramSpec,gramName,Lists,Dicts,activeRules,All=1, Exc
453
432
  ParserInfo=(InverseDict(Parser.knownWords),InverseDict(Parser.knownRules),
454
433
  InverseDict(Parser.knownLists),Parser.importRules)
455
434
  stack=[]
456
- for name in Parser.ruleDefines.keys():
435
+ for name in Parser.ruleDefines:
457
436
  ParseRuleDefinitions(name,stack,Parser,ParserInfo,Lists,Dicts)
458
437
  DefRules={}
459
438
  for x in stack:
@@ -466,7 +445,7 @@ def ParseGrammarDefinitions(gramSpec,gramName,Lists,Dicts,activeRules,All=1, Exc
466
445
  Grammar.Init(RuleCode,gramName)
467
446
  if Exclusive:
468
447
  if not exclusiveState:
469
- return
448
+ return None
470
449
  # if asking for exclusive, only show the activerules
471
450
  All = 0
472
451
 
@@ -478,11 +457,14 @@ def ParseGrammarDefinitions(gramSpec,gramName,Lists,Dicts,activeRules,All=1, Exc
478
457
  Grammar.Insert(rule)
479
458
  elif not rule.Name in UsedRules:
480
459
  Obsolete.Insert(rule)
481
- if len(Obsolete.Included)!=0: Grammar.Append(Obsolete)
460
+ if len(Obsolete.Included)!=0:
461
+ Grammar.Append(Obsolete)
482
462
  elif activeRules:
483
463
  for rule in stack:
484
- if (rule.Name in activeRules):
464
+ if rule.Name in activeRules:
485
465
  Grammar.Insert(rule)
486
466
  else:
487
- return # nothing if no active rules QH
467
+ return None # nothing if no active rules QH
488
468
  return Grammar
469
+
470
+
@@ -35,17 +35,17 @@ Also see the page "number grammar" on the Unimacro site and
35
35
  the grammars _number simple and _number extended.
36
36
  """
37
37
  import copy
38
- from dtactions.unimacroactions import doAction as action
38
+ from dtactions.uniactions.uactions import doAction as action
39
39
 
40
40
  from natlinkcore import natlinkutils as natut
41
- from dtactions import unimacroutils
42
- from dtactions import unimacroutils
41
+ from dtactions import uniutils
42
+ from dtactions import uniutils
43
43
  import unimacro.natlinkutilsbj as natbj
44
44
 
45
45
  ancestor = natbj.IniGrammar
46
46
  class ThisGrammar(ancestor):
47
47
 
48
- language = unimacroutils.getLanguage()
48
+ language = uniutils.getLanguage()
49
49
  normalRules = ['calcnormal', 'cancel']
50
50
  calcRules = ['calccalc', 'cancel'] # exclusive
51
51
  continueRules = ['calccontinue', 'cancel'] # exclusive
@@ -87,7 +87,7 @@ class ThisGrammar(ancestor):
87
87
  if self.checkForChanges:
88
88
  self.checkInifile()
89
89
  if self.prevModInfo != moduleInfo:
90
- progInfo = unimacroutils.getProgInfo(modInfo=moduleInfo)
90
+ progInfo = uniutils.getProgInfo(modInfo=moduleInfo)
91
91
  self.prevModInfo = moduleInfo
92
92
  self.cancelMode()
93
93
  self.prog = progInfo.prog
@@ -21,15 +21,15 @@ others continuously.
21
21
  import sys
22
22
  import copy
23
23
  from dtactions import inivars
24
- from dtactions.unimacroactions import doKeystroke as keystroke
25
- from dtactions.unimacroactions import doAction as action
26
- from dtactions import unimacroutils
24
+ from dtactions.uniactions.uactions import doKeystroke as keystroke
25
+ from dtactions.uniactions.uactions import doAction as action
26
+ from dtactions import uniutils
27
27
  from unimacro import natlinkutilsbj as natbj
28
28
  from natlinkcore import nsformat
29
29
  from natlinkcore import loader
30
30
  import natlink
31
31
  natlinkmain = loader.NatlinkMain()
32
- language = unimacroutils.getLanguage()
32
+ language = uniutils.getLanguage()
33
33
 
34
34
  ancestor = natbj.IniGrammar
35
35
  class ThisGrammar(ancestor):
@@ -58,7 +58,7 @@ class ThisGrammar(ancestor):
58
58
  gramSpec = "# placeholder of gramSpec"
59
59
 
60
60
  # def __init__(self, inifile_stem=None):
61
- # self.language = unimacroutils.getLanguage()
61
+ # self.language = uniutils.getLanguage()
62
62
  # # here the grammar is not loaded yet, but the ini file is present
63
63
  # self.inifile_stem = inifile_stem
64
64
  # self.startInifile()
@@ -124,11 +124,11 @@ class ThisGrammar(ancestor):
124
124
  if self.prevModule == moduleInfo:
125
125
  return
126
126
 
127
- progInfo = unimacroutils.getProgInfo(moduleInfo)
127
+ progInfo = uniutils.getProgInfo(moduleInfo)
128
128
 
129
129
  self.isIgnored = 0
130
130
 
131
- if self.ignore and unimacroutils.matchWindow(self.ignore, progInfo=progInfo):
131
+ if self.ignore and uniutils.matchWindow(self.ignore, progInfo=progInfo):
132
132
  self.isIgnored = 1
133
133
  return
134
134
 
@@ -205,8 +205,8 @@ class ThisGrammar(ancestor):
205
205
  #print '_keystrokes, do a "%s" mouse click'% button
206
206
  if not self.doWaitForMouseToStop():
207
207
  raise Exception("_keystrokes, mouse did not stop")
208
- unimacroutils.buttonClick(button, nClick)
209
- unimacroutils.visibleWait()
208
+ uniutils.buttonClick(button, nClick)
209
+ uniutils.visibleWait()
210
210
  self.hadClick = button
211
211
 
212
212
  def subrule_contextmenu(self, words):
@@ -346,7 +346,7 @@ class ThisGrammar(ancestor):
346
346
  if not self.doMouseMoveStopClick():
347
347
  print("you should move the mouse a bit at least!")
348
348
  return
349
- possibleButtons = unimacroutils.joelsButtons
349
+ possibleButtons = uniutils.joelsButtons
350
350
  possibleClicks = ['1', '2', '3']
351
351
  clickrules = self.getFromInifile(words[0], 'click')
352
352
  #print 'clickrules: %s'% clickrules
@@ -373,8 +373,8 @@ class ThisGrammar(ancestor):
373
373
 
374
374
  if self.nextRule == 'contextmenu' and nClick == 1:
375
375
  button = 'right'
376
- unimacroutils.buttonClick(button, nClick, modifiers=self.mod)
377
- unimacroutils.visibleWait()
376
+ uniutils.buttonClick(button, nClick, modifiers=self.mod)
377
+ uniutils.visibleWait()
378
378
  self.hadClick = button
379
379
 
380
380
 
@@ -414,7 +414,7 @@ class ThisGrammar(ancestor):
414
414
  def gotResults_lastkey(self, words,fullResults):
415
415
  self.flush()
416
416
  self.flushAll()
417
- unimacroutils.visibleWait()
417
+ uniutils.visibleWait()
418
418
 
419
419
  def gotResults(self, words,fullResults):
420
420
  self.flush()
@@ -429,12 +429,12 @@ class ThisGrammar(ancestor):
429
429
  self.hadClick = 0
430
430
 
431
431
  if self.cap:
432
- self.key = unimacroutils.doCaps(self.key)
432
+ self.key = uniutils.doCaps(self.key)
433
433
 
434
434
  if self.mod:
435
- self.key = unimacroutils.doModifier(self.key, self.mod)
435
+ self.key = uniutils.doModifier(self.key, self.mod)
436
436
  if self.count != 1:
437
- self.key = unimacroutils.doCount(self.key, self.count)
437
+ self.key = uniutils.doCount(self.key, self.count)
438
438
 
439
439
  if isinstance(self.key, list):
440
440
  print(f'_keystrokes, flush: warning, self.key is list: {self.key}')
@@ -486,20 +486,20 @@ class ThisGrammar(ancestor):
486
486
  self.cap = 3
487
487
 
488
488
  def windowPolicy(self, modInfo=None, progInfo=None):
489
- progInfo = progInfo or unimacroutils.getProgInfo(modInfo)
489
+ progInfo = progInfo or uniutils.getProgInfo(modInfo)
490
490
  #print 'window policy------progInfo: %s'% repr(progInfo)
491
491
  #print 'deactivaterules: %s'% self.deactivateRules
492
492
  #print 'activaterules: %s'% self.activateRules
493
493
  modeSet = []
494
494
  for mode in self.modes:
495
- if unimacroutils.matchWindow(self.modes[mode], progInfo=progInfo):
495
+ if uniutils.matchWindow(self.modes[mode], progInfo=progInfo):
496
496
  modeSet.append(mode)
497
497
  self.modeSet = set(modeSet)
498
498
  if modeSet:
499
499
  return tuple(modeSet)
500
500
 
501
- if unimacroutils.matchWindow(self.activateRules, progInfo=progInfo):
502
- if unimacroutils.matchWindow(self.deactivateRules, progInfo=progInfo):
501
+ if uniutils.matchWindow(self.activateRules, progInfo=progInfo):
502
+ if uniutils.matchWindow(self.deactivateRules, progInfo=progInfo):
503
503
  return 'inactive'
504
504
  return 'active'
505
505
  return 'inactive'