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.
- unimacro-4.1.8.dev2/LICENSE.txt +67 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/PKG-INFO +19 -15
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/README.md +13 -11
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/pyproject.toml +6 -17
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/BrowseGrammar.py +52 -70
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_calculator.py +5 -5
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_keystrokes.py +20 -20
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_latex.py +6 -6
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_number extended.py +7 -7
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_oops.py +29 -29
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_repeat.py +4 -4
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_unimacrotest.py +3 -3
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/excel.py +9 -9
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/frescobaldi.py +15 -15
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/solitaire.py +28 -28
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/xxxxnatspeak_dialog.py +7 -7
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/TrainDialog.py +2 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_brackets.py +13 -13
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_clickbyvoice.py +64 -59
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_folders.py +58 -69
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_general.py +53 -53
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_lines.py +45 -41
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_number simple.py +3 -3
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_tags.py +8 -8
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_tasks.py +47 -47
- unimacro-4.1.8.dev2/src/unimacro/UnimacroGrammars/foo.py +25 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/__init__.py +4 -9
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/_control.py +34 -71
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/enabledictation/_enabledictation.py +6 -6
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/listdialogs.py +1 -1
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/lynote.py +7 -9
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/natlinkutilsbj.py +112 -102
- unimacro-4.1.8.dev2/src/unimacro/peekable.py +226 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/_control.py +9 -9
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/_dictationproject.py +9 -9
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/_global_dictation.py +9 -9
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/scintillacon.py +1 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/spokenforms.py +1 -2
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/ActionsTest.py +3 -3
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/BasicTest.py +3 -3
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/BringupTest.py +2 -2
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/ClipboardTest.py +9 -9
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/MessageTest.py +1 -1
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/SearchTest.py +8 -8
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/UnimacroTestHelpers.py +4 -4
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/UtilsTest.py +6 -6
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestActions.py +3 -3
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestClipboard.py +5 -5
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestDocstringGrammar.py +4 -4
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestIniGrammar.py +4 -4
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestMessagefunctions.py +5 -5
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestMouse.py +4 -4
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestNatlinkutilsqh.py +19 -19
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestNumbersConversion.py +4 -4
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestProfileKaiserDictation.py +4 -4
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/windowinfo.py +25 -24
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/windowparameters.py +2 -2
- unimacro-4.1.7.dev4/src/unimacro/D_train.py +0 -46
- unimacro-4.1.7.dev4/src/unimacro/check_unimacro_grammars.py +0 -160
- unimacro-4.1.7.dev4/src/unimacro/dos83.py +0 -57
- unimacro-4.1.7.dev4/src/unimacro/xxxxxxxpythonwin_dict.py +0 -308
- unimacro-4.1.7.dev4/src/unimacro/xxxxxxxunimacro_wxpythondialogs.py +0 -23
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/BrowseGrammarApp.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/D_.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/DialogServer.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_testtrayicon.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/winword_variable.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/README.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/__init__.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_debug_natlink.py.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_debug_unimacro.py.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/_folders fillinstancevariables.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/UnimacroGrammars/settings folders grammar.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_down.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_down2.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_left.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_left2.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_nodir.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_right.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_right2.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_up.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/defaulticons/idi_up2.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/foldersrememberdialog.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/iban.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/repeat.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/repeat2.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/waiting.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/icons/waiting2.ico +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/namelist.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ahk/getintoforeground.ahk +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ahk/showmessageswindow.ahk +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/actions.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/disable_natlink.bat +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/enable_natlink_kaiser.bat +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/enable_natlink_kaiser_qh.bat +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/config_scripts/enable_natlink_qh.bat +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/Template List.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/_control.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/_global_dictation.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/enx_inifiles/actions.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/nld_inifiles/_control.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/nld_inifiles/_global_dictation.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_global_dictation/starting messages.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/actions.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/deu_inifiles/_control.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/deu_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_brackets.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_clickbyvoice.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_control.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_documentation.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_editcomments.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_first_sample_docstring.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_folders.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_general.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_gramoff.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_gramon.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_keystrokes.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_latex.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_lines.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_modes.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_number extended.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_number simple.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_oops.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_repeat.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_second_sample_docstring.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_shownumbersplus.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_tags.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_tasks.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_unimacrosample_docstring.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/_unimacrotest.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/natspeak_dialog.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/sol.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/solitaire.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_inifiles/winword_styles_unimacro.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/enx_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_control.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_folders.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_general.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_lines.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_inifiles/_tasks.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/esp_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/ita_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_brackets.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_browser.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_clickbyvoice.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_commands.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_control.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_documentation.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_editcomments.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_first_sample_docstring.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_folders.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_general.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_keystrokes.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_latex.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_lines.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_modes.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_number extended.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_number simple.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_number.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_oops.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_repeat.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_second_sample_docstring.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_shownumbersplus.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_tags.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_tasks.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_unimacrotest.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/_unittest.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/chrome_browsing.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/excel.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/firefox_browsing.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/natspeak_dialog.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/natspeak_sample_docstring.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/sol.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/solitaire.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_inifiles/winword_styles_unimacro.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/nld_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/othertest_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/spokenforms - kopie.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/sample_ini/test_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/README.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/TestCaseWithHelpers.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/_Unimacro_regression.vcl +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/print_hotspot.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/natlink.docx +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testempty.docx +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testempty.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testlarge.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testsmall.docx +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_clipboardfiles/testsmall.txt +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/othertest_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/test_spokenforms.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testinifilehandling.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testreloadtranslated.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testruledoubleword.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testrulefour.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/test_inifiles/testruleonetwo.ini +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/udostringconvention.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestFolders.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestLilypond.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/unittestMonitorfunctions.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_test/util.py +0 -0
- {unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/unimacro_tracing.py +0 -0
- {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.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: unimacro
|
|
3
|
-
Version: 4.1.
|
|
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
|
-
|
|
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
|
|
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/
|
|
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/
|
|
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.
|
|
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
|
|
19
|
+
dependencies = ["dtactions >= 1.6.5.dev1",
|
|
29
20
|
"debugpy >= 1.2.0",
|
|
30
21
|
"pywin32 >= 304",
|
|
31
|
-
"natlinkcore
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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):
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
elif self.GramType==ListCode:
|
|
94
|
+
return '<'+self.Name+'>'
|
|
95
|
+
if self.GramType==ListCode:
|
|
119
96
|
return '{'+self.Name+'}'
|
|
120
|
-
|
|
121
|
-
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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(
|
|
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
|
-
|
|
223
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
261
|
-
contents=
|
|
237
|
+
if self.GramType in (AltCode, ListCode):
|
|
238
|
+
contents=' | '.join(self.Included)
|
|
262
239
|
else:
|
|
263
|
-
contents=
|
|
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:
|
|
269
|
+
if Remove:
|
|
270
|
+
contents=contents[1:-1]
|
|
293
271
|
contents=contents+'+'
|
|
294
272
|
else:
|
|
295
273
|
contents= '<'+self.Name
|
|
296
|
-
if
|
|
297
|
-
if
|
|
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
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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]:
|
|
358
|
+
if List[i]==List[i-1]:
|
|
359
|
+
del List[i]
|
|
382
360
|
|
|
383
361
|
def InverseDict(SomeDict):
|
|
384
|
-
|
|
362
|
+
ID = {}
|
|
385
363
|
for key in SomeDict.keys():
|
|
386
|
-
|
|
387
|
-
return
|
|
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
|
-
|
|
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
|
|
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
|
|
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:
|
|
460
|
+
if len(Obsolete.Included)!=0:
|
|
461
|
+
Grammar.Append(Obsolete)
|
|
482
462
|
elif activeRules:
|
|
483
463
|
for rule in stack:
|
|
484
|
-
if
|
|
464
|
+
if rule.Name in activeRules:
|
|
485
465
|
Grammar.Insert(rule)
|
|
486
466
|
else:
|
|
487
|
-
return
|
|
467
|
+
return None # nothing if no active rules QH
|
|
488
468
|
return Grammar
|
|
469
|
+
|
|
470
|
+
|
{unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_calculator.py
RENAMED
|
@@ -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.
|
|
38
|
+
from dtactions.uniactions.uactions import doAction as action
|
|
39
39
|
|
|
40
40
|
from natlinkcore import natlinkutils as natut
|
|
41
|
-
from dtactions import
|
|
42
|
-
from dtactions import
|
|
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 =
|
|
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 =
|
|
90
|
+
progInfo = uniutils.getProgInfo(modInfo=moduleInfo)
|
|
91
91
|
self.prevModInfo = moduleInfo
|
|
92
92
|
self.cancelMode()
|
|
93
93
|
self.prog = progInfo.prog
|
{unimacro-4.1.7.dev4 → unimacro-4.1.8.dev2}/src/unimacro/OtherUnimacroGrammars/_keystrokes.py
RENAMED
|
@@ -21,15 +21,15 @@ others continuously.
|
|
|
21
21
|
import sys
|
|
22
22
|
import copy
|
|
23
23
|
from dtactions import inivars
|
|
24
|
-
from dtactions.
|
|
25
|
-
from dtactions.
|
|
26
|
-
from dtactions import
|
|
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 =
|
|
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 =
|
|
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 =
|
|
127
|
+
progInfo = uniutils.getProgInfo(moduleInfo)
|
|
128
128
|
|
|
129
129
|
self.isIgnored = 0
|
|
130
130
|
|
|
131
|
-
if self.ignore and
|
|
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
|
-
|
|
209
|
-
|
|
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 =
|
|
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
|
-
|
|
377
|
-
|
|
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
|
-
|
|
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 =
|
|
432
|
+
self.key = uniutils.doCaps(self.key)
|
|
433
433
|
|
|
434
434
|
if self.mod:
|
|
435
|
-
self.key =
|
|
435
|
+
self.key = uniutils.doModifier(self.key, self.mod)
|
|
436
436
|
if self.count != 1:
|
|
437
|
-
self.key =
|
|
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
|
|
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
|
|
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
|
|
502
|
-
if
|
|
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'
|