diff --git a/.gitignore b/.gitignore
index dc72a5af6..7d6ca7fa7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,3 +38,7 @@ sonar-project.properties
# Ignore User Data
caster/bin/data
+
+# Ignore dist files
+dist
+castervoice.egg-info
diff --git a/License.md b/LICENSE
similarity index 100%
rename from License.md
rename to LICENSE
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 000000000..676be6654
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,8 @@
+global-exclude *.pyc
+include castervoice/bin/data/configdebug.txt
+include castervoice/bin/share/bringme.toml.defaults
+include castervoice/bin/reboot.bat
+include castervoice/bin/reboot_wsr.bat
+include castervoice/lib/dll/tirg-dll.dll
+include castervoice/asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.html
+include castervoice/asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.py
diff --git a/_caster.py b/_caster.py
index 09138a1ce..2f4f1bae3 100644
--- a/_caster.py
+++ b/_caster.py
@@ -9,14 +9,13 @@
import time
from dragonfly import (Function, Grammar, Playback, Dictation, Choice, Pause)
-from caster.lib.ccr.standard import SymbolSpecs
-
+from castervoice.lib.ccr.standard import SymbolSpecs
def _wait_for_wsr_activation():
count = 1
while True:
try:
- from caster.apps import firefox
+ from castervoice.apps import firefox
break
except:
print("(%d) Attempting to load Caster -- WSR not loaded and listening yet..."
@@ -24,45 +23,41 @@ def _wait_for_wsr_activation():
count += 1
time.sleep(1)
-
_NEXUS = None
-
-from caster.lib import settings # requires nothing
+from castervoice.lib import settings # requires nothing
settings.WSR = __name__ == "__main__"
-from caster.lib import utilities # requires settings
+from castervoice.lib import utilities # requires settings
if settings.WSR:
_wait_for_wsr_activation()
SymbolSpecs.set_cancel_word("escape")
-from caster.lib import control
+from castervoice.lib import control
_NEXUS = control.nexus()
-from caster.apps import *
-from caster.asynch import *
-from caster.lib import context
-from caster.lib.actions import Key
-import caster.lib.dev.dev
-from caster.asynch.sikuli import sikuli
-from caster.lib import navigation
+from castervoice.apps import *
+from castervoice.asynch import *
+from castervoice.lib import context
+from castervoice.lib.actions import Key
+import castervoice.lib.dev.dev
+from castervoice.asynch.sikuli import sikuli
+from castervoice.lib import navigation
navigation.initialize_clipboard(_NEXUS)
-from caster.lib.dfplus.state.short import R
-from caster.lib.dfplus.additions import IntegerRefST
-
-from caster.lib.dfplus.merge.mergepair import MergeInf
-from caster.lib.ccr import *
-from caster.lib.ccr.recording.again import Again
-from caster.lib.ccr.recording.bringme import bring_rule
-from caster.lib.ccr.recording.alias import Alias
-from caster.lib.ccr.recording import history
-from caster.lib.dev import dev
-from caster.lib.dfplus.hint.nodes import css
-from caster.user.filters.examples import scen4, modkeysup
-from caster import user
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.dfplus.additions import IntegerRefST
+
+from castervoice.lib.dfplus.merge.mergepair import MergeInf
+from castervoice.lib.ccr import *
+from castervoice.lib.ccr.recording.again import Again
+from castervoice.lib.ccr.recording.bringme import bring_rule
+from castervoice.lib.ccr.recording.alias import Alias
+from castervoice.lib.ccr.recording import history
+from castervoice.lib.dev import dev
+from castervoice.lib.dfplus.hint.nodes import css
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.merge import gfilter
def change_monitor():
- if settings.SETTINGS["miscellaneous"]["sikuli_enabled"]:
+ if settings.SETTINGS["sikuli"]["enabled"]:
Playback([(["monitor", "select"], 0.0)]).execute()
else:
print("This command requires SikuliX to be enabled in the settings file")
@@ -164,9 +159,11 @@ def generate_sm_ccr_choices(nexus):
grammar.load()
+_NEXUS.process_user_content()
_NEXUS.merger.update_config()
_NEXUS.merger.merge(MergeInf.BOOT)
+
print("*- Starting " + settings.SOFTWARE_NAME + " -*")
if settings.WSR:
diff --git a/caster/asynch/sikuli/scripts/example.sikuli/1434072940616.png b/caster/asynch/sikuli/scripts/example.sikuli/1434072940616.png
deleted file mode 100644
index db6710bba..000000000
Binary files a/caster/asynch/sikuli/scripts/example.sikuli/1434072940616.png and /dev/null differ
diff --git a/caster/asynch/sikuli/scripts/example.sikuli/example.html b/caster/asynch/sikuli/scripts/example.sikuli/example.html
deleted file mode 100644
index bc85f53e6..000000000
--- a/caster/asynch/sikuli/scripts/example.sikuli/example.html
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-from sikuli import *
-
-def export_command():
- click()
-
-
-
diff --git a/caster/asynch/sikuli/scripts/example.sikuli/example.py b/caster/asynch/sikuli/scripts/example.sikuli/example.py
deleted file mode 100644
index f44816894..000000000
--- a/caster/asynch/sikuli/scripts/example.sikuli/example.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from sikuli import *
-
-
-def export_command():
- click("1434072940616.png")
diff --git a/caster/bin/inno/caster.bat b/caster/bin/inno/caster.bat
deleted file mode 100644
index 0269b0fe8..000000000
--- a/caster/bin/inno/caster.bat
+++ /dev/null
@@ -1,24 +0,0 @@
-@echo off
-
-cd C:\NatLink\NatLink\MacroSystem
-
-@echo on
-
-git clone https://github.com/synkarius/caster.git
-
-@echo off
-
-cd C:\NatLink\NatLink\MacroSystem\caster
-
-mv * ../
-mv .git ../
-mv .gitignore ../
-
-cd C:\NatLink\NatLink\MacroSystem
-rmdir caster
-
-echo ------------------------------------------
-echo Caster Installation Complete
-echo ------------------------------------------
-
-pause
\ No newline at end of file
diff --git a/caster/bin/inno/caster.iss b/caster/bin/inno/caster.iss
deleted file mode 100644
index 9fb47935f..000000000
--- a/caster/bin/inno/caster.iss
+++ /dev/null
@@ -1,17 +0,0 @@
-; Caster Installer
-;
-; This installs Caster
-
-[Setup]
-AppName=Caster
-AppVersion=0.3
-DefaultDirName={drive:C:}\temp\caster
-DefaultGroupName=Caster
-DirExistsWarning=no
-OutputDir=inst
-
-[Files]
-Source: "caster.bat"; DestDir: "{app}";Flags: replacesameversion recursesubdirs
-
-[Run]
-Filename: "{app}\caster.bat"
\ No newline at end of file
diff --git a/caster/bin/inno/dependencies.iss b/caster/bin/inno/dependencies.iss
deleted file mode 100644
index 6417d1921..000000000
--- a/caster/bin/inno/dependencies.iss
+++ /dev/null
@@ -1,17 +0,0 @@
-; Caster Dependencies Installer
-;
-; This installs NirCmd and pip python dependencies.
-
-[Setup]
-AppName=Caster Dependencies
-AppVersion=0.3
-DefaultDirName={drive:C:}\temp
-DefaultGroupName=Caster Dependencies
-DirExistsWarning=no
-OutputDir=inst
-
-[Files]
-Source: "dependencies\*.*"; DestDir: "{app}";Flags: replacesameversion recursesubdirs
-
-[Run]
-Filename: "{app}\pip.bat"
\ No newline at end of file
diff --git a/caster/bin/inno/dependencies/Pip Install Dependencies.bat b/caster/bin/inno/dependencies/Pip Install Dependencies.bat
deleted file mode 100644
index dbb69b616..000000000
--- a/caster/bin/inno/dependencies/Pip Install Dependencies.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo Installing: setuptools, future, dragonfly2, wxPython, pillow, toml
-
-cd c:\python27\scripts
-pip install -U pip
-pip install -U setuptools
-pip install -U future
-pip install -U dragonfly2
-pip install -U wxPython
-pip install -U pillow
-pip install -U toml
-
-
-
-echo ------------------------------------------
-echo Caster Dependencies Installation Complete
-echo ------------------------------------------
-
-pause
\ No newline at end of file
diff --git a/caster/bin/inno/dependencies/Pip Uninstall Dependencies.bat b/caster/bin/inno/dependencies/Pip Uninstall Dependencies.bat
deleted file mode 100644
index 1945dc9d7..000000000
--- a/caster/bin/inno/dependencies/Pip Uninstall Dependencies.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-@echo off
-echo Uninstall dragonfly2, wxPython, future, pillow, six, pyperclip, pillow, pywin32
-echo ####
-echo #### Warning! Only uninstall dependencies that are no longer used for all Python projects.
-echo ####
-
-cd c:\python27\scripts
-pip uninstall dragonfly2
-pip uninstall wxPython
-pip uninstall future
-pip uninstall pillow
-pip uninstall six
-pip uninstall pyperclip
-pip uninstall pillow
-pip uninstall pywin32
-pip uninstall toml
-
-echo ------------------------------------------
-echo Caster Dependencies Uninstall Complete
-echo ------------------------------------------
-
-pause
\ No newline at end of file
diff --git a/caster/bin/inno/dragonfly_upgrade.bat b/caster/bin/inno/dragonfly_upgrade.bat
deleted file mode 100644
index 568eaf2aa..000000000
--- a/caster/bin/inno/dragonfly_upgrade.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@echo off
-
-cd C:\
-mkdir temp_dragonfly
-cd temp_dragonfly
-
-
-
-git clone --recursive https://github.com/Danesprite/dragonfly.git
-cd dragonfly
-python setup.py install
-
-echo ------------------------------------------
-echo Dragonfly Upgrade Complete
-echo ------------------------------------------
-
-git submodule foreach python setup.py install
-
-
-echo ------------------------------------------
-echo Dragonfly Submodules installed
-echo ------------------------------------------
-
-python -m pip install .[sphinx]
-
-
-cd C:\
-rmdir /S/Q temp_dragonfly
-
-
-pause
\ No newline at end of file
diff --git a/caster/bin/inno/dragonfly_upgrade.iss b/caster/bin/inno/dragonfly_upgrade.iss
deleted file mode 100644
index 99565c57f..000000000
--- a/caster/bin/inno/dragonfly_upgrade.iss
+++ /dev/null
@@ -1,17 +0,0 @@
-; Dragonfly Upgrader
-;
-; This upgrades Dragonfly from 0.6.5 to the most recent version from Github.
-
-[Setup]
-AppName=Dragonfly Github Upgrader
-AppVersion=0.2
-DefaultDirName={drive:C:}\temp\dragonfly
-DefaultGroupName=Dragonfly Github Upgrader
-DirExistsWarning=no
-OutputDir=inst
-
-[Files]
-Source: "dragonfly_upgrade.bat"; DestDir: "{app}";Flags: replacesameversion recursesubdirs
-
-[Run]
-Filename: "{app}\dragonfly_upgrade.bat"
\ No newline at end of file
diff --git a/caster/bin/media/entertain_me.txt b/caster/bin/media/entertain_me.txt
deleted file mode 100644
index e7ea82573..000000000
--- a/caster/bin/media/entertain_me.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-http://www.lag.tv/
-https://news.ycombinator.com/
-http://www.ted.com/
\ No newline at end of file
diff --git a/caster/doc/readthedocs/Sikuli.md b/caster/doc/readthedocs/Sikuli.md
deleted file mode 100644
index f37d4fca0..000000000
--- a/caster/doc/readthedocs/Sikuli.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Sikuli Integration
-
-[This is Sikuli](http://www.sikuli.org). It's awesome, and you can use Caster to launch Sikuli actions by voice.
-
-## Video Version of Configuration Instructions
-
-[YouTube](https://youtu.be/RFdsD2OgDzk?list=PLV6JPhkq1x8LHu02YefhUU9rXiB2PK8tc)
-
-## Written Version of Configuration Instructions
-
-coming soon
diff --git a/caster/lib/dfplus/state/short.py b/caster/lib/dfplus/state/short.py
deleted file mode 100644
index d7954fab3..000000000
--- a/caster/lib/dfplus/state/short.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''
-Created on Jun 7, 2015
-
-@author: dave
-'''
-# shorter names for classes
-from caster.lib.dfplus.state.actions import RegisteredAction
-from caster.lib.dfplus.state.contextoptions import ContextLevel, ContextSet
-
-R = RegisteredAction
-L = ContextLevel
-S = ContextSet
diff --git a/caster/lib/tests/unit/__init__.py b/caster/lib/tests/unit/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/caster/user/__init__.py b/caster/user/__init__.py
deleted file mode 100644
index 361722397..000000000
--- a/caster/user/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-from rules import *
-from filters import *
diff --git a/caster/user/filters/__init__.py b/caster/user/filters/__init__.py
deleted file mode 100644
index aa450a9cd..000000000
--- a/caster/user/filters/__init__.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import glob
-import inspect
-import os
-
-
-def is_valid(module):
- ''' This function attempts to import the filters in order to detect
- errors in their implementation . After they are imported, they are garbage collected
- when the function returns.'''
- try:
- _ = __import__(module, globals(), locals())
- return True
- except Exception as e:
- print("Ignoring filter '{}'. Failed to load with: ".format(module))
- print(e)
- return False
-
-
-modules = glob.glob(os.path.dirname(__file__) + "/*.py")
-# only valid filters will be added to the list
-__all__ = [
- os.path.basename(f)[:-3] for f in modules
- if (not f.endswith('__init__.py') and is_valid(os.path.basename(f)[:-3]))
-]
diff --git a/caster/user/filters/examples/__init__.py b/caster/user/filters/examples/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/caster/user/filters/examples/modkeysup.py b/caster/user/filters/examples/modkeysup.py
deleted file mode 100644
index ba84141c0..000000000
--- a/caster/user/filters/examples/modkeysup.py
+++ /dev/null
@@ -1,29 +0,0 @@
-'''
-Created on Sep 27, 2015
-
-@author: synkarius
-'''
-
-from caster.lib.actions import Key
-from caster.lib.dfplus.merge.mergepair import MergeInf
-from caster.lib.dfplus.state.short import R
-
-
-def add_modkeys(rule):
- release = R(Key("shift:up, ctrl:up, alt:up"), rdescript="Mod Keys Up")
-
- if not hasattr(rule, "marked") and\
- rule.get_pronunciation()[0:6] != "Merged": # don't augment merged rules-- they'd get it twice
- for spec in rule.mapping_actual().keys():
- rule.mapping_actual()[spec] = release + rule.mapping_actual()[spec] + release
- rule.marked = True
-
-
-def modkeysup(mp):
- if mp.time == MergeInf.BOOT:
- if mp.rule1 is not None:
- add_modkeys(mp.rule1)
- add_modkeys(mp.rule2)
-
-
-# control.nexus().merger.add_filter(modkeysup)
diff --git a/caster/user/filters/examples/scen4.py b/caster/user/filters/examples/scen4.py
deleted file mode 100644
index 038ecb13b..000000000
--- a/caster/user/filters/examples/scen4.py
+++ /dev/null
@@ -1,82 +0,0 @@
-'''
-Created on Sep 27, 2015
-
-@author: synkarius
-'''
-
-from caster.lib.actions import Text
-from caster.lib.dfplus.merge.mergepair import MergeInf
-from caster.lib.dfplus.state.short import R
-
-
-def scenario_1(mp):
- '''manually handle a conflicting spec'''
- if mp.type == MergeInf.APP and mp.rule1 is not None:
- print("doing merge for apps")
- for spec in mp.rule1.mapping_actual().keys():
- if spec in mp.rule2.mapping_actual().keys():
- '''this filter function gives priority to
- global rules over app rules'''
- print("deleting conflicting spec " + spec)
- del mp.rule2.mapping_actual()[spec]
-
-
-# control.nexus().merger.add_filter(scenario_1)
-
-
-def replace_spec(rule, target, replacement):
- if target in rule.mapping_actual().keys():
- action = rule.mapping_actual()[target]
- del rule.mapping_actual()[target]
- rule.mapping_actual()[replacement] = action
-
-
-def scenario_2(mp):
- '''replacing a spec'''
- if mp.time == MergeInf.BOOT:
- # at merge time, the base rule can be None, so make sure to check
- target = "[go to] line "
- replacement = "travel to line "
-
- if mp.rule1 is not None:
- replace_spec(mp.rule1, target, replacement)
- replace_spec(mp.rule2, target, replacement)
-
-
-# control.nexus().merger.add_filter(scenario_2)
-
-
-def update_python(rule):
- if "shells" in rule.mapping_actual().keys():
- rule.mapping_actual()["shells"] = R(
- Text("not allowed to use 'else'"), rdescript="Troll Replacement")
-
-
-def scenario_3(mp):
- ''' replacing an action '''
- if mp.time == MergeInf.RUN and mp.type == MergeInf.GLOBAL:
- # Inf.RUN means any time except boot or SelfModifyingRule updates
- # Ing.GLOBAL means during global rule de/activation
- if mp.rule1 is not None and mp.rule1.get_pronunciation() == "Python":
- update_python(mp.rule1)
- if mp.rule2.get_pronunciation() == "Python":
- update_python(mp.rule2)
-
-
-# control.nexus().merger.add_filter(scenario_3)
-
-
-def add_is_to_python(rule):
- if rule.get_pronunciation() == "Python":
- rule.mapping_actual()["identity is"] = R(Text(" is "), rdescript="Python: Is")
-
-
-def scenario_4(mp):
- ''' adding an action '''
- if mp.time == MergeInf.BOOT:
- if mp.rule1 is not None:
- add_is_to_python(mp.rule1)
- add_is_to_python(mp.rule2)
-
-
-# control.nexus().merger.add_filter(scenario_4)
diff --git a/caster/user/rules/__init__.py b/caster/user/rules/__init__.py
deleted file mode 100644
index a4f701ab9..000000000
--- a/caster/user/rules/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import glob
-import inspect
-import os
-
-
-def is_valid(module):
- ''' This function attempts to import the rules in order to detect
- errors in their implementation . After they are imported, they are garbage collected
- when the function returns.'''
- try:
- _ = __import__(module, globals(), locals())
- return True
- except Exception as e:
- print("Ignoring application '{}'. Failed to load with: ".format(module))
- print(e)
- return False
-
-
-modules = glob.glob(os.path.dirname(__file__) + "/*.py")
-# only valid rules will be added to the list
-__all__ = [
- os.path.basename(f)[:-3]
- for f in modules
- if (not f.endswith('__init__.py') and is_valid(os.path.basename(f)[:-3]))
-]
diff --git a/caster/user/rules/examples/__init__.py b/caster/user/rules/examples/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/castervoice/__init__.py b/castervoice/__init__.py
new file mode 100644
index 000000000..c5af0fc80
--- /dev/null
+++ b/castervoice/__init__.py
@@ -0,0 +1 @@
+name = "castervoice"
diff --git a/caster/apps/__init__.py b/castervoice/apps/__init__.py
similarity index 95%
rename from caster/apps/__init__.py
rename to castervoice/apps/__init__.py
index b22552b91..d5998601b 100644
--- a/caster/apps/__init__.py
+++ b/castervoice/apps/__init__.py
@@ -2,7 +2,7 @@
import inspect
import os
-from caster.lib import utilities
+from castervoice.lib import utilities
def is_valid(module):
diff --git a/caster/apps/atom.py b/castervoice/apps/atom.py
similarity index 98%
rename from caster/apps/atom.py
rename to castervoice/apps/atom.py
index 2fbdec5ac..23bfc42b4 100644
--- a/caster/apps/atom.py
+++ b/castervoice/apps/atom.py
@@ -4,13 +4,13 @@
Official Site "https://atom.io/"
"""
-from caster.lib import control, settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
from dragonfly import Choice, Dictation, Grammar, Pause, Repeat
# How long to wait for the Atom palette to load before hitting the enter key
@@ -536,7 +536,7 @@ class AtomRule(MergeRule):
#Sublime Style Column Selection---- #Placeholder
#Atom | Dragonfly Development--------------------------------------------------------------------------------------------------------------------------------------------------------
- # Template to create more commands. Documentation: https://dragonfly.readthedocs.org/en/latest/actions.html and http://caster.readthedocs.io/en/latest/caster/doc/Intro/
+ # Template to create more commands. Documentation: https://dragonfly.readthedocs.org/en/latest/actions.html and http://castervoice.readthedocs.io/en/latest/castervoice/doc/Intro/
# Used for basic key shortcuts
#"text for voice command": ACK("modifier-key", "program name: command name/description"),
#"": ACK("", "Atom: "),
diff --git a/caster/apps/chrome.py b/castervoice/apps/chrome.py
similarity index 92%
rename from caster/apps/chrome.py
rename to castervoice/apps/chrome.py
index 45752ba7a..3bda58f28 100644
--- a/caster/apps/chrome.py
+++ b/castervoice/apps/chrome.py
@@ -11,14 +11,14 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class ChromeRule(MergeRule):
diff --git a/caster/apps/cmd.py b/castervoice/apps/cmd.py
similarity index 80%
rename from caster/apps/cmd.py
rename to castervoice/apps/cmd.py
index 017c86db4..419d174eb 100644
--- a/caster/apps/cmd.py
+++ b/castervoice/apps/cmd.py
@@ -11,13 +11,13 @@
from dragonfly import (Grammar, MappingRule)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
-from caster.lib.actions import (Key, Text)
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
+from castervoice.lib.actions import (Key, Text)
class CMDRule(MergeRule):
pronunciation = "command prompt"
diff --git a/caster/apps/dragon.py b/castervoice/apps/dragon.py
similarity index 89%
rename from caster/apps/dragon.py
rename to castervoice/apps/dragon.py
index 3d9a9bba7..0e1d8f0bf 100644
--- a/caster/apps/dragon.py
+++ b/castervoice/apps/dragon.py
@@ -1,11 +1,11 @@
from dragonfly import (Grammar, Playback, Key, Dictation, Function)
-from caster.lib import control
-from caster.lib import utilities, settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import utilities, settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
_NEXUS = control.nexus()
diff --git a/caster/apps/eclipse.py b/castervoice/apps/eclipse.py
similarity index 94%
rename from caster/apps/eclipse.py
rename to castervoice/apps/eclipse.py
index 6732f807e..705fb8069 100644
--- a/caster/apps/eclipse.py
+++ b/castervoice/apps/eclipse.py
@@ -7,17 +7,17 @@
from dragonfly.actions.action_paste import Paste
from dragonfly.grammar.elements import Choice
-from caster.lib import context as CONTEXT, alphanumeric
-from caster.lib import control, utilities
-from caster.lib import settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.ccr.core.nav import Navigation
-from caster.lib.dfplus.additions import IntegerRefST, Boolean
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.actions2 import UntilCancelled
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import context as CONTEXT, alphanumeric
+from castervoice.lib import control, utilities
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.ccr.core.nav import Navigation
+from castervoice.lib.dfplus.additions import IntegerRefST, Boolean
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.actions2 import UntilCancelled
+from castervoice.lib.dfplus.state.short import R
class EclipseController(object):
diff --git a/caster/apps/emacs.py b/castervoice/apps/emacs.py
similarity index 90%
rename from caster/apps/emacs.py
rename to castervoice/apps/emacs.py
index 10f8628ef..af548e7d0 100644
--- a/caster/apps/emacs.py
+++ b/castervoice/apps/emacs.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class EmacsRule(MergeRule):
diff --git a/caster/apps/explorer.py b/castervoice/apps/explorer.py
similarity index 78%
rename from caster/apps/explorer.py
rename to castervoice/apps/explorer.py
index c7e57b96b..17b2e13f5 100644
--- a/caster/apps/explorer.py
+++ b/castervoice/apps/explorer.py
@@ -1,14 +1,14 @@
from dragonfly import (Grammar, MappingRule, Dictation, IntegerRef,
Repeat, Pause)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
-from caster.lib.actions import (Key, Text)
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
+from castervoice.lib.actions import (Key, Text)
class IERule(MergeRule):
diff --git a/caster/apps/file_dialogue.py b/castervoice/apps/file_dialogue.py
similarity index 85%
rename from caster/apps/file_dialogue.py
rename to castervoice/apps/file_dialogue.py
index 99b3a3e16..ff64a183a 100644
--- a/caster/apps/file_dialogue.py
+++ b/castervoice/apps/file_dialogue.py
@@ -2,11 +2,11 @@
Pause, Repeat, Text)
from dragonfly.actions.action_mimic import Mimic
-from caster.lib import control, settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class FileDialogueRule(MergeRule):
diff --git a/caster/apps/firefox.py b/castervoice/apps/firefox.py
similarity index 85%
rename from caster/apps/firefox.py
rename to castervoice/apps/firefox.py
index e53a0f80c..0d9933103 100644
--- a/caster/apps/firefox.py
+++ b/castervoice/apps/firefox.py
@@ -11,14 +11,14 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class FirefoxRule(MergeRule):
diff --git a/caster/apps/flashdevelop.py b/castervoice/apps/flashdevelop.py
similarity index 88%
rename from caster/apps/flashdevelop.py
rename to castervoice/apps/flashdevelop.py
index d6174ca82..a608747a0 100644
--- a/caster/apps/flashdevelop.py
+++ b/castervoice/apps/flashdevelop.py
@@ -1,14 +1,14 @@
from dragonfly import (Grammar, MappingRule, Dictation, Repeat, Pause)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.core.nav import Navigation
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.core.nav import Navigation
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class FlashDevelopRule(MergeRule):
diff --git a/caster/apps/fman.py b/castervoice/apps/fman.py
similarity index 85%
rename from caster/apps/fman.py
rename to castervoice/apps/fman.py
index 93951bdfc..eb80baffa 100644
--- a/caster/apps/fman.py
+++ b/castervoice/apps/fman.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Pause, Choice)
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
-from caster.lib import control, settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class fmanRule(MergeRule):
pronunciation = "F man"
diff --git a/caster/apps/foxitreader.py b/castervoice/apps/foxitreader.py
similarity index 74%
rename from caster/apps/foxitreader.py
rename to castervoice/apps/foxitreader.py
index 0668dfca5..0700a30f3 100644
--- a/caster/apps/foxitreader.py
+++ b/castervoice/apps/foxitreader.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class FoxitRule(MergeRule):
diff --git a/caster/apps/gitbash.py b/castervoice/apps/gitbash.py
similarity index 93%
rename from caster/apps/gitbash.py
rename to castervoice/apps/gitbash.py
index 093fd82e5..c904033f3 100644
--- a/caster/apps/gitbash.py
+++ b/castervoice/apps/gitbash.py
@@ -11,14 +11,14 @@
from dragonfly import (Grammar, Mimic, Function)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
-from caster.lib.actions import (Key, Text)
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
+from castervoice.lib.actions import (Key, Text)
def _apply(n):
diff --git a/caster/apps/gitter.py b/castervoice/apps/gitter.py
similarity index 85%
rename from caster/apps/gitter.py
rename to castervoice/apps/gitter.py
index 53b3b79d1..ef2ddb6c4 100644
--- a/caster/apps/gitter.py
+++ b/castervoice/apps/gitter.py
@@ -7,12 +7,12 @@
from dragonfly import Dictation, Grammar, MappingRule
-from caster.lib import control, settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class GitterRule(MergeRule):
diff --git a/caster/apps/griddouglas.py b/castervoice/apps/griddouglas.py
similarity index 78%
rename from caster/apps/griddouglas.py
rename to castervoice/apps/griddouglas.py
index ee90dc351..39aad44a3 100644
--- a/caster/apps/griddouglas.py
+++ b/castervoice/apps/griddouglas.py
@@ -4,14 +4,14 @@
"""
from dragonfly import (Grammar, Function, Playback, Choice, MappingRule)
-from caster.asynch.mouse import grids
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
+from castervoice.asynch.mouse import grids
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
_NEXUS = control.nexus()
diff --git a/caster/apps/gridlegion.py b/castervoice/apps/gridlegion.py
similarity index 83%
rename from caster/apps/gridlegion.py
rename to castervoice/apps/gridlegion.py
index 96b892000..aea79d4da 100644
--- a/caster/apps/gridlegion.py
+++ b/castervoice/apps/gridlegion.py
@@ -9,14 +9,14 @@
import win32api
import win32con
-from caster.asynch.mouse import grids
-from caster.lib import control
-from caster.lib import navigation, settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
+from castervoice.asynch.mouse import grids
+from castervoice.lib import control
+from castervoice.lib import navigation, settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
_NEXUS = control.nexus()
diff --git a/caster/apps/gridrainbow.py b/castervoice/apps/gridrainbow.py
similarity index 81%
rename from caster/apps/gridrainbow.py
rename to castervoice/apps/gridrainbow.py
index 95c1f1969..9b9c844ed 100644
--- a/caster/apps/gridrainbow.py
+++ b/castervoice/apps/gridrainbow.py
@@ -5,14 +5,14 @@
from dragonfly import (Grammar, Function, Playback, Choice, MappingRule)
-from caster.asynch.mouse import grids
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
+from castervoice.asynch.mouse import grids
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
_NEXUS = control.nexus()
diff --git a/caster/apps/jetbrains.py b/castervoice/apps/jetbrains.py
similarity index 90%
rename from caster/apps/jetbrains.py
rename to castervoice/apps/jetbrains.py
index bb5b1c413..7dc236aa0 100644
--- a/caster/apps/jetbrains.py
+++ b/castervoice/apps/jetbrains.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class JetbrainsRule(MergeRule):
diff --git a/caster/apps/kdiff3.py b/castervoice/apps/kdiff3.py
similarity index 67%
rename from caster/apps/kdiff3.py
rename to castervoice/apps/kdiff3.py
index adc909025..afd51cbc4 100644
--- a/caster/apps/kdiff3.py
+++ b/castervoice/apps/kdiff3.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class KDiff3Rule(MergeRule):
diff --git a/caster/apps/lyx.py b/castervoice/apps/lyx.py
similarity index 86%
rename from caster/apps/lyx.py
rename to castervoice/apps/lyx.py
index 478ab4cbb..fb8485fc1 100644
--- a/caster/apps/lyx.py
+++ b/castervoice/apps/lyx.py
@@ -3,13 +3,13 @@
from dragonfly import (Grammar, Context, Dictation, Repeat,
Function, Choice)
-from caster.lib import control, settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class LyxRule(MergeRule):
diff --git a/caster/apps/msvc.py b/castervoice/apps/msvc.py
similarity index 87%
rename from caster/apps/msvc.py
rename to castervoice/apps/msvc.py
index 78bfac267..3fa99ef9a 100644
--- a/caster/apps/msvc.py
+++ b/castervoice/apps/msvc.py
@@ -11,14 +11,14 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class MSVCRule(MergeRule):
diff --git a/caster/apps/notepadplusplus.py b/castervoice/apps/notepadplusplus.py
similarity index 80%
rename from caster/apps/notepadplusplus.py
rename to castervoice/apps/notepadplusplus.py
index 80a375a0c..296ff7183 100644
--- a/caster/apps/notepadplusplus.py
+++ b/castervoice/apps/notepadplusplus.py
@@ -11,14 +11,14 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key, Mouse
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Mouse
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class NPPRule(MergeRule):
diff --git a/caster/apps/rstudio.py b/castervoice/apps/rstudio.py
similarity index 86%
rename from caster/apps/rstudio.py
rename to castervoice/apps/rstudio.py
index 09a8d1ff0..f03b1176a 100644
--- a/caster/apps/rstudio.py
+++ b/castervoice/apps/rstudio.py
@@ -5,13 +5,13 @@
from dragonfly import (Dictation, Grammar, IntegerRef, MappingRule, Pause,
Repeat, Mimic)
-from caster.lib import control, settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class RStudioRule(MergeRule):
pronunciation = "are studio"
diff --git a/caster/apps/sqldeveloper.py b/castervoice/apps/sqldeveloper.py
similarity index 77%
rename from caster/apps/sqldeveloper.py
rename to castervoice/apps/sqldeveloper.py
index 30e2c3d3c..ba37f58a2 100644
--- a/caster/apps/sqldeveloper.py
+++ b/castervoice/apps/sqldeveloper.py
@@ -11,14 +11,14 @@
from dragonfly import (Grammar, Dictation)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class SQLDeveloperRule(MergeRule):
diff --git a/caster/apps/ssms.py b/castervoice/apps/ssms.py
similarity index 86%
rename from caster/apps/ssms.py
rename to castervoice/apps/ssms.py
index 229a694eb..daf48f34b 100644
--- a/caster/apps/ssms.py
+++ b/castervoice/apps/ssms.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class SSMSRule(MergeRule):
diff --git a/caster/apps/sublime.py b/castervoice/apps/sublime.py
similarity index 94%
rename from caster/apps/sublime.py
rename to castervoice/apps/sublime.py
index d41f7cce3..8e1846368 100644
--- a/caster/apps/sublime.py
+++ b/castervoice/apps/sublime.py
@@ -1,13 +1,13 @@
from dragonfly import (Choice, Dictation, Grammar, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class SublimeRule(MergeRule):
diff --git a/caster/apps/totalcmd.py b/castervoice/apps/totalcmd.py
similarity index 91%
rename from caster/apps/totalcmd.py
rename to castervoice/apps/totalcmd.py
index 65c7b2d76..b6046d424 100644
--- a/caster/apps/totalcmd.py
+++ b/castervoice/apps/totalcmd.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
-from caster.lib.actions import Key
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
+from castervoice.lib.actions import Key
class TotalCommanderRule (MergeRule):
diff --git a/caster/apps/visualstudio.py b/castervoice/apps/visualstudio.py
similarity index 92%
rename from caster/apps/visualstudio.py
rename to castervoice/apps/visualstudio.py
index bd2288826..1f9d6a86c 100644
--- a/caster/apps/visualstudio.py
+++ b/castervoice/apps/visualstudio.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation, Repeat)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.context import AppContext
-from caster.lib.actions import (Key, Text)
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.context import AppContext
+from castervoice.lib.actions import (Key, Text)
class VisualStudioRule(MergeRule):
diff --git a/caster/apps/vscode.py b/castervoice/apps/vscode.py
similarity index 93%
rename from caster/apps/vscode.py
rename to castervoice/apps/vscode.py
index 99fd16c0a..1fcedd264 100644
--- a/caster/apps/vscode.py
+++ b/castervoice/apps/vscode.py
@@ -1,13 +1,13 @@
from dragonfly import (Grammar, Dictation, Repeat, Function)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key, Text
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
def findNthToken(text, n, direction):
diff --git a/caster/apps/winword.py b/castervoice/apps/winword.py
similarity index 74%
rename from caster/apps/winword.py
rename to castervoice/apps/winword.py
index 4453f98ab..b374b525a 100644
--- a/caster/apps/winword.py
+++ b/castervoice/apps/winword.py
@@ -11,14 +11,14 @@
from dragonfly import (Grammar, MappingRule, Dictation)
-from caster.lib import control
-from caster.lib import settings
-from caster.lib.actions import Key
-from caster.lib.context import AppContext
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib import settings
+from castervoice.lib.actions import Key
+from castervoice.lib.context import AppContext
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class MSWordRule(MergeRule):
diff --git a/caster/apps/wsr.py b/castervoice/apps/wsr.py
similarity index 75%
rename from caster/apps/wsr.py
rename to castervoice/apps/wsr.py
index 725321361..d504ad521 100644
--- a/caster/apps/wsr.py
+++ b/castervoice/apps/wsr.py
@@ -1,9 +1,9 @@
from dragonfly import (Grammar, Function)
-from caster.lib import utilities, settings
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import utilities, settings
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class WindowsSpeechRecognitionRule(MergeRule):
diff --git a/caster/asynch/__init__.py b/castervoice/asynch/__init__.py
similarity index 100%
rename from caster/asynch/__init__.py
rename to castervoice/asynch/__init__.py
diff --git a/caster/asynch/_hmc.py b/castervoice/asynch/_hmc.py
similarity index 91%
rename from caster/asynch/_hmc.py
rename to castervoice/asynch/_hmc.py
index 6a011a4f5..2d15ca384 100644
--- a/caster/asynch/_hmc.py
+++ b/castervoice/asynch/_hmc.py
@@ -1,14 +1,14 @@
from dragonfly import (Function, Grammar, AppContext)
-from caster.asynch.hmc import h_launch
-from caster.lib import control
-from caster.lib import settings, utilities
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.actions import AsynchronousAction
-from caster.lib.dfplus.state.short import R, L, S
-from caster.lib.context import AppContext
+from castervoice.asynch.hmc import h_launch
+from castervoice.lib import control
+from castervoice.lib import settings, utilities
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.actions import AsynchronousAction
+from castervoice.lib.dfplus.state.short import R, L, S
+from castervoice.lib.context import AppContext
_NEXUS = control.nexus()
diff --git a/caster/__init__.py b/castervoice/asynch/hmc/__init__.py
similarity index 100%
rename from caster/__init__.py
rename to castervoice/asynch/hmc/__init__.py
diff --git a/caster/asynch/hmc/h_launch.py b/castervoice/asynch/hmc/h_launch.py
similarity index 88%
rename from caster/asynch/hmc/h_launch.py
rename to castervoice/asynch/hmc/h_launch.py
index f87cb529d..ecbe6dbbe 100644
--- a/caster/asynch/hmc/h_launch.py
+++ b/castervoice/asynch/hmc/h_launch.py
@@ -2,15 +2,15 @@
import sys, os
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.asynch.hmc.hmc_ask_directory import HomunculusDirectory
- from caster.asynch.hmc.hmc_recording import HomunculusRecording
- from caster.asynch.hmc.hmc_confirm import HomunculusConfirm
- from caster.asynch.hmc.homunculus import Homunculus
- from caster.lib import settings
+ from castervoice.asynch.hmc.hmc_ask_directory import HomunculusDirectory
+ from castervoice.asynch.hmc.hmc_recording import HomunculusRecording
+ from castervoice.asynch.hmc.hmc_confirm import HomunculusConfirm
+ from castervoice.asynch.hmc.homunculus import Homunculus
+ from castervoice.lib import settings
'''
To add a new homunculus (pop-up ui window) type:
(1) create the module
diff --git a/caster/asynch/hmc/hmc_ask_directory.py b/castervoice/asynch/hmc/hmc_ask_directory.py
similarity index 93%
rename from caster/asynch/hmc/hmc_ask_directory.py
rename to castervoice/asynch/hmc/hmc_ask_directory.py
index 2f4faaa3c..89bfc856c 100644
--- a/caster/asynch/hmc/hmc_ask_directory.py
+++ b/castervoice/asynch/hmc/hmc_ask_directory.py
@@ -5,12 +5,12 @@
import tkFileDialog
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.lib import settings
- from caster.asynch.hmc.homunculus import Homunculus
+ from castervoice.lib import settings
+ from castervoice.asynch.hmc.homunculus import Homunculus
class HomunculusDirectory(Homunculus):
diff --git a/caster/asynch/hmc/hmc_confirm.py b/castervoice/asynch/hmc/hmc_confirm.py
similarity index 91%
rename from caster/asynch/hmc/hmc_confirm.py
rename to castervoice/asynch/hmc/hmc_confirm.py
index e72856c96..832e10119 100644
--- a/caster/asynch/hmc/hmc_confirm.py
+++ b/castervoice/asynch/hmc/hmc_confirm.py
@@ -4,12 +4,12 @@
from threading import Timer
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.lib import settings
- from caster.asynch.hmc.homunculus import Homunculus
+ from castervoice.lib import settings
+ from castervoice.asynch.hmc.homunculus import Homunculus
class HomunculusConfirm(Homunculus):
diff --git a/caster/asynch/hmc/hmc_recording.py b/castervoice/asynch/hmc/hmc_recording.py
similarity index 97%
rename from caster/asynch/hmc/hmc_recording.py
rename to castervoice/asynch/hmc/hmc_recording.py
index 372ff05f8..9175f0b93 100644
--- a/caster/asynch/hmc/hmc_recording.py
+++ b/castervoice/asynch/hmc/hmc_recording.py
@@ -5,12 +5,12 @@
import Tkinter as tk
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.lib import settings
- from caster.asynch.hmc.homunculus import Homunculus
+ from castervoice.lib import settings
+ from castervoice.asynch.hmc.homunculus import Homunculus
class HomunculusRecording(Homunculus):
diff --git a/caster/asynch/hmc/homunculus.py b/castervoice/asynch/hmc/homunculus.py
similarity index 96%
rename from caster/asynch/hmc/homunculus.py
rename to castervoice/asynch/hmc/homunculus.py
index 6b021cfb0..2dac1876c 100644
--- a/caster/asynch/hmc/homunculus.py
+++ b/castervoice/asynch/hmc/homunculus.py
@@ -7,12 +7,12 @@
import Tkinter as tk
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.lib import settings
- from caster.lib.dfplus.communication import Communicator
+ from castervoice.lib import settings
+ from castervoice.lib.dfplus.communication import Communicator
class Homunculus(tk.Tk):
diff --git a/caster/asynch/hmc/__init__.py b/castervoice/asynch/mouse/__init__.py
similarity index 100%
rename from caster/asynch/hmc/__init__.py
rename to castervoice/asynch/mouse/__init__.py
diff --git a/caster/asynch/mouse/grids.py b/castervoice/asynch/mouse/grids.py
similarity index 98%
rename from caster/asynch/mouse/grids.py
rename to castervoice/asynch/mouse/grids.py
index eccf56006..1b292b940 100644
--- a/caster/asynch/mouse/grids.py
+++ b/castervoice/asynch/mouse/grids.py
@@ -15,12 +15,12 @@
from dragonfly import monitors
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.lib import settings, utilities
- from caster.lib.dfplus.communication import Communicator
+ from castervoice.lib import settings, utilities
+ from castervoice.lib.dfplus.communication import Communicator
try:
from PIL import ImageGrab, ImageTk, ImageDraw, ImageFont
diff --git a/caster/asynch/mouse/legion.py b/castervoice/asynch/mouse/legion.py
similarity index 98%
rename from caster/asynch/mouse/legion.py
rename to castervoice/asynch/mouse/legion.py
index b5d856d84..45e8d24b7 100644
--- a/caster/asynch/mouse/legion.py
+++ b/castervoice/asynch/mouse/legion.py
@@ -9,12 +9,12 @@
#from dragonfly import monitors
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.asynch.mouse.grids import TkTransparent, Dimensions
- from caster.lib import gdi, settings, utilities
+ from castervoice.asynch.mouse.grids import TkTransparent, Dimensions
+ from castervoice.lib import gdi, settings, utilities
try:
from PIL import ImageGrab, ImageFilter, Image
diff --git a/caster/asynch/settingswindow.py b/castervoice/asynch/settingswindow.py
similarity index 98%
rename from caster/asynch/settingswindow.py
rename to castervoice/asynch/settingswindow.py
index 4ef06f17d..a68ff3e4c 100644
--- a/caster/asynch/settingswindow.py
+++ b/castervoice/asynch/settingswindow.py
@@ -12,12 +12,12 @@
from wx.lib.scrolledpanel import ScrolledPanel
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.lib import settings
- from caster.lib.dfplus.communication import Communicator
+ from castervoice.lib import settings
+ from castervoice.lib.dfplus.communication import Communicator
DICT_SETTING = 1
STRING_SETTING = 2
diff --git a/caster/asynch/mouse/__init__.py b/castervoice/asynch/sikuli/__init__.py
similarity index 100%
rename from caster/asynch/mouse/__init__.py
rename to castervoice/asynch/sikuli/__init__.py
diff --git a/caster/asynch/sikuli/scripts/xmlrpc_server.sikuli/xmlrpc_server.html b/castervoice/asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.html
similarity index 100%
rename from caster/asynch/sikuli/scripts/xmlrpc_server.sikuli/xmlrpc_server.html
rename to castervoice/asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.html
diff --git a/caster/asynch/sikuli/scripts/xmlrpc_server.sikuli/xmlrpc_server.py b/castervoice/asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.py
similarity index 67%
rename from caster/asynch/sikuli/scripts/xmlrpc_server.sikuli/xmlrpc_server.py
rename to castervoice/asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.py
index dfd7c35a6..c5cc32c30 100644
--- a/caster/asynch/sikuli/scripts/xmlrpc_server.sikuli/xmlrpc_server.py
+++ b/castervoice/asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.py
@@ -3,54 +3,53 @@
import sys
from inspect import getmembers, isfunction
-SCRIPTS_PATH = sys.argv[0].split("\\xmlrpc_server.sikuli")[0]
-BASE_PATH = sys.argv[0].split("MacroSystem")[0] + "MacroSystem"
-
modules = []
server = SimpleXMLRPCServer(("127.0.0.1", 8000), allow_none=True)
quit = 0
+SCRIPTS_PATH = sys.argv[1]
def ping():
return 1
-
def list_functions():
global modules
return modules
-
def terminate():
global quit
quit = 1
return 1
-
server.register_function(list_functions, "list_functions")
server.register_function(terminate, "terminate")
+print("\nCaster Sikuli Bridge [started]\n")
+print(" Loading commands from: {} ...".format(SCRIPTS_PATH))
+
if SCRIPTS_PATH not in sys.path:
sys.path.append(SCRIPTS_PATH)
for s in [x[0] for x in os.walk(SCRIPTS_PATH)]:
if s.endswith(".sikuli") and not s.endswith("xmlrpc_server.sikuli"):
- mdl_name = s.split(".")[0].split("\\")[-1]
- exec ("import " + mdl_name)
- exec ("l = getmembers(" + mdl_name + ", isfunction)")
+ mdl_name = s.split(".sikuli")[0].split("\\")[-1]
+ exec("import " + mdl_name)
+ exec("l = getmembers(" + mdl_name + ", isfunction)")
for d in l:
if d[0].startswith("export_"):
registered_function_name = mdl_name + "_" + d[0].replace("export_", "")
modules.append(registered_function_name)
- exec ("server.register_function(" + mdl_name + "." + d[0] + ", '" +
+ exec("server.register_function(" + mdl_name + "." + d[0] + ", '" +
registered_function_name + "')")
-print("Caster Sikuli Bridge\n\nlist of available commands " + str(modules))
-
+print(" Loaded. Available commands:\n")
+for fn_name in modules:
+ print(" {}".format(str(fn_name).replace("_", " ")))
+print("")
# examples
def add(self, x, y):
return x + y
-
try:
while not quit:
server.handle_request()
diff --git a/caster/asynch/sikuli/sikuli.py b/castervoice/asynch/sikuli/sikuli.py
similarity index 63%
rename from caster/asynch/sikuli/sikuli.py
rename to castervoice/asynch/sikuli/sikuli.py
index 3abbd96a0..4c8e09531 100644
--- a/caster/asynch/sikuli/sikuli.py
+++ b/castervoice/asynch/sikuli/sikuli.py
@@ -3,11 +3,11 @@
from dragonfly import (Grammar, MappingRule, Function)
-from caster.lib import control
-from caster.lib import settings, utilities
-from caster.lib.actions import Key
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib import control
+from castervoice.lib import settings, utilities
+from castervoice.lib.actions import Key
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
grammar = None
server_proxy = None
@@ -15,18 +15,31 @@
def launch_IDE():
- Popen([
- settings.SETTINGS["paths"]["SIKULI_COMPATIBLE_JAVA_EXE_PATH"], "-jar",
- settings.SETTINGS["paths"]["SIKULI_IDE_JAR_PATH"]
- ])
+ ide_path = settings.SETTINGS["paths"]["SIKULI_IDE"]
+ if ide_path == "":
+ print("No 'SIKULI_IDE' path is available. Did you configure it in " + settings.get_filename())
+ else:
+ Popen(["java", "-jar", ide_path])
def launch_server():
- Popen([
- settings.SETTINGS["paths"]["SIKULI_COMPATIBLE_JAVA_EXE_PATH"], "-jar",
- settings.SETTINGS["paths"]["SIKULI_SCRIPTS_JAR_PATH"], "-r",
- settings.SETTINGS["paths"]["SIKULI_SERVER_PATH"]
- ])
+ runner_path = settings.SETTINGS["paths"]["SIKULI_RUNNER"]
+ if runner_path == "":
+ print("No 'SIKULI_RUNNER' path is available. Did you configure it in " + settings.get_filename())
+ else:
+ command = [] if settings.SETTINGS["sikuli"]["version"] == "1.1.3" else ["java", "-jar"]
+ command.extend([
+ settings.SETTINGS["paths"]["SIKULI_RUNNER"],
+ "-r", settings.SETTINGS["paths"]["SIKULI_SERVER_PATH"],
+ "--args", settings.SETTINGS["paths"]["SIKULI_SCRIPTS_PATH"]
+ ])
+ Popen(command)
+#
+# Popen([
+# settings.SETTINGS["paths"]["SIKULI_COMPATIBLE_JAVA_EXE_PATH"], "-jar",
+# settings.SETTINGS["paths"]["SIKULI_SCRIPTS_JAR_PATH"], "-r",
+# settings.SETTINGS["paths"]["SIKULI_SERVER_PATH"]
+# ])
#
@@ -112,5 +125,5 @@ def refresh_sick_command():
control.nexus().timer.add_callback(server_proxy_timer_fn, seconds5)
-if settings.SETTINGS["miscellaneous"]["sikuli_enabled"]:
+if settings.SETTINGS["sikuli"]["enabled"]:
refresh(_NEXUS)
diff --git a/caster/bin/data/configdebug.txt b/castervoice/bin/data/configdebug.txt
similarity index 100%
rename from caster/bin/data/configdebug.txt
rename to castervoice/bin/data/configdebug.txt
diff --git a/caster/bin/reboot.bat b/castervoice/bin/reboot.bat
similarity index 100%
rename from caster/bin/reboot.bat
rename to castervoice/bin/reboot.bat
diff --git a/caster/bin/reboot_wsr.bat b/castervoice/bin/reboot_wsr.bat
similarity index 100%
rename from caster/bin/reboot_wsr.bat
rename to castervoice/bin/reboot_wsr.bat
diff --git a/caster/bin/share/bringme.toml.defaults b/castervoice/bin/share/bringme.toml.defaults
similarity index 100%
rename from caster/bin/share/bringme.toml.defaults
rename to castervoice/bin/share/bringme.toml.defaults
diff --git a/caster/doc/Contributing.md b/castervoice/doc/Contributing.md
similarity index 100%
rename from caster/doc/Contributing.md
rename to castervoice/doc/Contributing.md
diff --git a/caster/doc/Installation.md b/castervoice/doc/Installation.md
similarity index 100%
rename from caster/doc/Installation.md
rename to castervoice/doc/Installation.md
diff --git a/caster/doc/caster_quick_reference.tex b/castervoice/doc/caster_quick_reference.tex
similarity index 100%
rename from caster/doc/caster_quick_reference.tex
rename to castervoice/doc/caster_quick_reference.tex
diff --git a/caster/doc/img/noderule1.png b/castervoice/doc/img/noderule1.png
similarity index 100%
rename from caster/doc/img/noderule1.png
rename to castervoice/doc/img/noderule1.png
diff --git a/caster/doc/img/noderule2.png b/castervoice/doc/img/noderule2.png
similarity index 100%
rename from caster/doc/img/noderule2.png
rename to castervoice/doc/img/noderule2.png
diff --git a/caster/doc/img/terminology.png b/castervoice/doc/img/terminology.png
similarity index 100%
rename from caster/doc/img/terminology.png
rename to castervoice/doc/img/terminology.png
diff --git a/caster/doc/readthedocs/Aenea.md b/castervoice/doc/readthedocs/Aenea.md
similarity index 100%
rename from caster/doc/readthedocs/Aenea.md
rename to castervoice/doc/readthedocs/Aenea.md
diff --git a/caster/doc/readthedocs/Alias.md b/castervoice/doc/readthedocs/Alias.md
similarity index 100%
rename from caster/doc/readthedocs/Alias.md
rename to castervoice/doc/readthedocs/Alias.md
diff --git a/caster/doc/readthedocs/Application Commands Quick Reference.md b/castervoice/doc/readthedocs/Application Commands Quick Reference.md
similarity index 100%
rename from caster/doc/readthedocs/Application Commands Quick Reference.md
rename to castervoice/doc/readthedocs/Application Commands Quick Reference.md
diff --git a/caster/doc/readthedocs/Auto CCR and Cmd-Mode.md b/castervoice/doc/readthedocs/Auto CCR and Cmd-Mode.md
similarity index 100%
rename from caster/doc/readthedocs/Auto CCR and Cmd-Mode.md
rename to castervoice/doc/readthedocs/Auto CCR and Cmd-Mode.md
diff --git a/caster/doc/readthedocs/CCR languages Quick Reference.md b/castervoice/doc/readthedocs/CCR languages Quick Reference.md
similarity index 100%
rename from caster/doc/readthedocs/CCR languages Quick Reference.md
rename to castervoice/doc/readthedocs/CCR languages Quick Reference.md
diff --git a/caster/doc/readthedocs/CCR.md b/castervoice/doc/readthedocs/CCR.md
similarity index 100%
rename from caster/doc/readthedocs/CCR.md
rename to castervoice/doc/readthedocs/CCR.md
diff --git a/caster/doc/readthedocs/ContextStack.md b/castervoice/doc/readthedocs/ContextStack.md
similarity index 100%
rename from caster/doc/readthedocs/ContextStack.md
rename to castervoice/doc/readthedocs/ContextStack.md
diff --git a/caster/doc/readthedocs/Examples/How to Speak Code.md b/castervoice/doc/readthedocs/Examples/How to Speak Code.md
similarity index 100%
rename from caster/doc/readthedocs/Examples/How to Speak Code.md
rename to castervoice/doc/readthedocs/Examples/How to Speak Code.md
diff --git a/caster/doc/readthedocs/Examples/Rule Construction.md b/castervoice/doc/readthedocs/Examples/Rule Construction.md
similarity index 100%
rename from caster/doc/readthedocs/Examples/Rule Construction.md
rename to castervoice/doc/readthedocs/Examples/Rule Construction.md
diff --git a/caster/doc/readthedocs/Examples/Speaking/Examples.md b/castervoice/doc/readthedocs/Examples/Speaking/Examples.md
similarity index 100%
rename from caster/doc/readthedocs/Examples/Speaking/Examples.md
rename to castervoice/doc/readthedocs/Examples/Speaking/Examples.md
diff --git a/caster/doc/readthedocs/Examples/rules/Caster Rules.md b/castervoice/doc/readthedocs/Examples/rules/Caster Rules.md
similarity index 100%
rename from caster/doc/readthedocs/Examples/rules/Caster Rules.md
rename to castervoice/doc/readthedocs/Examples/rules/Caster Rules.md
diff --git a/caster/doc/readthedocs/Examples/rules/Dragonfly Rules.md b/castervoice/doc/readthedocs/Examples/rules/Dragonfly Rules.md
similarity index 100%
rename from caster/doc/readthedocs/Examples/rules/Dragonfly Rules.md
rename to castervoice/doc/readthedocs/Examples/rules/Dragonfly Rules.md
diff --git a/caster/doc/readthedocs/Examples/rules/Old Sample File.md b/castervoice/doc/readthedocs/Examples/rules/Old Sample File.md
similarity index 100%
rename from caster/doc/readthedocs/Examples/rules/Old Sample File.md
rename to castervoice/doc/readthedocs/Examples/rules/Old Sample File.md
diff --git a/caster/doc/readthedocs/Mouse.md b/castervoice/doc/readthedocs/Mouse.md
similarity index 100%
rename from caster/doc/readthedocs/Mouse.md
rename to castervoice/doc/readthedocs/Mouse.md
diff --git a/caster/doc/readthedocs/NodeRule.md b/castervoice/doc/readthedocs/NodeRule.md
similarity index 100%
rename from caster/doc/readthedocs/NodeRule.md
rename to castervoice/doc/readthedocs/NodeRule.md
diff --git a/caster/doc/readthedocs/Record Macros.md b/castervoice/doc/readthedocs/Record Macros.md
similarity index 100%
rename from caster/doc/readthedocs/Record Macros.md
rename to castervoice/doc/readthedocs/Record Macros.md
diff --git a/caster/doc/readthedocs/Setup.md b/castervoice/doc/readthedocs/Setup.md
similarity index 100%
rename from caster/doc/readthedocs/Setup.md
rename to castervoice/doc/readthedocs/Setup.md
diff --git a/castervoice/doc/readthedocs/Sikuli.md b/castervoice/doc/readthedocs/Sikuli.md
new file mode 100644
index 000000000..d6adfac08
--- /dev/null
+++ b/castervoice/doc/readthedocs/Sikuli.md
@@ -0,0 +1,50 @@
+# Sikuli Integration
+
+[This is Sikuli](http://www.sikuli.org). It's awesome, and you can use Caster to launch Sikuli actions by voice.
+
+## Versions
+
+At time of writing, Sikuli [1.1.3 is no longer supported](https://raiman.github.io/SikuliX1/downloads.html), but [1.1.4 is not yet released](https://launchpad.net/sikuli/sikulix). So pick your version. Caster currently supports both.
+
+## Setup
+
+### 1.1.3
+
+- install Java 8+, make sure it's on your path with:
+```
+ java -version
+```
+- download sikulixsetup-1.1.3.jar
+- run it, choose option 1
+- fill out settings:
+```
+ paths.SIKULI_IDE = "full/path/to/sikulix.jar"
+ paths.SIKULI_RUNNER = "full/path/to/runsikulix.cmd"
+ sikuli.version = "1.1.3"
+ sikuli.enabled: true
+```
+- make commands with filename/"exports" convention as per the video
+
+### 1.1.4:
+- install Java 8+, make sure it's on your path with:
+```
+ java -version
+```
+- download sikulix.jar, jython-standalone-2.7.1.jar
+- place the two jars next to each other
+- fill out settings:
+```
+ paths.SIKULI_IDE = "full/path/to/sikulix.jar"
+ paths.SIKULI_RUNNER = "full/path/to/sikulix.jar"
+ sikuli.version = "1.1.4"
+ sikuli.enabled = true
+```
+- make commands with filename/"exports" convention as per the video
+
+## Script Creation Conventions
+
+This video is out of date in terms of the Sikuli setup and config options. It is still up to date for the filename/exports convention described toward the end of the video though.
+
+[YouTube](https://youtu.be/RFdsD2OgDzk?list=PLV6JPhkq1x8LHu02YefhUU9rXiB2PK8tc)
+
+
diff --git a/caster/doc/readthedocs/Taxonomy of a Rule.md b/castervoice/doc/readthedocs/Taxonomy of a Rule.md
similarity index 100%
rename from caster/doc/readthedocs/Taxonomy of a Rule.md
rename to castervoice/doc/readthedocs/Taxonomy of a Rule.md
diff --git a/caster/doc/readthedocs/Voice Index.md b/castervoice/doc/readthedocs/Voice Index.md
similarity index 100%
rename from caster/doc/readthedocs/Voice Index.md
rename to castervoice/doc/readthedocs/Voice Index.md
diff --git a/caster/doc/readthedocs/Windows Speech Recognition.md b/castervoice/doc/readthedocs/Windows Speech Recognition.md
similarity index 100%
rename from caster/doc/readthedocs/Windows Speech Recognition.md
rename to castervoice/doc/readthedocs/Windows Speech Recognition.md
diff --git a/caster/doc/readthedocs/meta/Undocumented Features.md b/castervoice/doc/readthedocs/meta/Undocumented Features.md
similarity index 100%
rename from caster/doc/readthedocs/meta/Undocumented Features.md
rename to castervoice/doc/readthedocs/meta/Undocumented Features.md
diff --git a/caster/asynch/sikuli/__init__.py b/castervoice/lib/__init__.py
similarity index 100%
rename from caster/asynch/sikuli/__init__.py
rename to castervoice/lib/__init__.py
diff --git a/caster/lib/actions.py b/castervoice/lib/actions.py
similarity index 90%
rename from caster/lib/actions.py
rename to castervoice/lib/actions.py
index 4373e21d0..7f1e4bd20 100644
--- a/caster/lib/actions.py
+++ b/castervoice/lib/actions.py
@@ -1,6 +1,6 @@
from dragonfly import Key, Text, Mouse
-from caster.lib import settings
+from castervoice.lib import settings
# Override imported dragonfly actions with aenea's if the 'use_aenea' setting
# is set to true.
diff --git a/caster/lib/alphanumeric.py b/castervoice/lib/alphanumeric.py
similarity index 97%
rename from caster/lib/alphanumeric.py
rename to castervoice/lib/alphanumeric.py
index 7ce68e51e..fd954b988 100644
--- a/caster/lib/alphanumeric.py
+++ b/castervoice/lib/alphanumeric.py
@@ -1,7 +1,7 @@
from dragonfly import Choice
-from caster.lib import settings
-from caster.lib.actions import Key, Text
+from castervoice.lib import settings
+from castervoice.lib.actions import Key, Text
def get_alphabet_choice(spec):
diff --git a/caster/lib/ccr/__init__.py b/castervoice/lib/ccr/__init__.py
similarity index 97%
rename from caster/lib/ccr/__init__.py
rename to castervoice/lib/ccr/__init__.py
index e57023ff6..1d7d0af9b 100644
--- a/caster/lib/ccr/__init__.py
+++ b/castervoice/lib/ccr/__init__.py
@@ -1,6 +1,6 @@
# new modules should be added in the dictionary
# the tuple contains the rules which will be imported
-from caster.lib import utilities
+from castervoice.lib import utilities
command_sets = {
"bash.bash": ("Bash", ),
diff --git a/caster/lib/__init__.py b/castervoice/lib/ccr/bash/__init__.py
similarity index 100%
rename from caster/lib/__init__.py
rename to castervoice/lib/ccr/bash/__init__.py
diff --git a/caster/lib/ccr/bash/bash.py b/castervoice/lib/ccr/bash/bash.py
similarity index 93%
rename from caster/lib/ccr/bash/bash.py
rename to castervoice/lib/ccr/bash/bash.py
index 32afabe24..96dcc1c2d 100644
--- a/caster/lib/ccr/bash/bash.py
+++ b/castervoice/lib/ccr/bash/bash.py
@@ -4,11 +4,11 @@
@author: synkarius
'''
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Bash(MergeRule):
diff --git a/caster/lib/ccr/bash/__init__.py b/castervoice/lib/ccr/core/__init__.py
similarity index 100%
rename from caster/lib/ccr/bash/__init__.py
rename to castervoice/lib/ccr/core/__init__.py
diff --git a/caster/lib/ccr/core/alphabet.py b/castervoice/lib/ccr/core/alphabet.py
similarity index 69%
rename from caster/lib/ccr/core/alphabet.py
rename to castervoice/lib/ccr/core/alphabet.py
index 48ab646bd..2dd88989b 100644
--- a/caster/lib/ccr/core/alphabet.py
+++ b/castervoice/lib/ccr/core/alphabet.py
@@ -1,9 +1,9 @@
from dragonfly import Function, Choice
-from caster.lib import control, alphanumeric
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, alphanumeric
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Alphabet(MergeRule):
diff --git a/caster/lib/ccr/core/nav.py b/castervoice/lib/ccr/core/nav.py
similarity index 94%
rename from caster/lib/ccr/core/nav.py
rename to castervoice/lib/ccr/core/nav.py
index cb6e38176..7fa598aa9 100644
--- a/caster/lib/ccr/core/nav.py
+++ b/castervoice/lib/ccr/core/nav.py
@@ -5,17 +5,17 @@
'''
from dragonfly import Repeat, Function, Dictation, Choice, MappingRule
-from caster.lib import context, navigation, alphanumeric, textformat, text_utils
-from caster.lib import control
-from caster.lib.actions import Key, Mouse
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.actions import AsynchronousAction, ContextSeeker
-from caster.lib.dfplus.state.actions2 import UntilCancelled
-from caster.lib.dfplus.state.short import L, S, R
+from castervoice.lib import context, navigation, alphanumeric, textformat, text_utils
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Mouse
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.actions import AsynchronousAction, ContextSeeker
+from castervoice.lib.dfplus.state.actions2 import UntilCancelled
+from castervoice.lib.dfplus.state.short import L, S, R
from dragonfly.actions.action_mimic import Mimic
-from caster.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.ccr.standard import SymbolSpecs
_NEXUS = control.nexus()
@@ -229,7 +229,7 @@ class Navigation(MergeRule):
# text formatting
"set [] format ( | | ) (bow|bowel)":
R(Function(textformat.set_text_format), rdescript="Set Text Format"),
- "clear caster [] formatting":
+ "clear castervoice [] formatting":
R(Function(textformat.clear_text_format), rdescript="Clear Caster Formatting"),
"peek [] format":
R(Function(textformat.peek_text_format), rdescript="Peek Format"),
diff --git a/caster/lib/ccr/core/numbers.py b/castervoice/lib/ccr/core/numbers.py
similarity index 66%
rename from caster/lib/ccr/core/numbers.py
rename to castervoice/lib/ccr/core/numbers.py
index fdbd1a10b..b26b3976e 100644
--- a/caster/lib/ccr/core/numbers.py
+++ b/castervoice/lib/ccr/core/numbers.py
@@ -1,10 +1,10 @@
from dragonfly import Function
-from caster.lib import control, alphanumeric
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, alphanumeric
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Numbers(MergeRule):
diff --git a/caster/lib/ccr/core/punctuation.py b/castervoice/lib/ccr/core/punctuation.py
similarity index 91%
rename from caster/lib/ccr/core/punctuation.py
rename to castervoice/lib/ccr/core/punctuation.py
index d8d9607e0..3b53e2e13 100644
--- a/caster/lib/ccr/core/punctuation.py
+++ b/castervoice/lib/ccr/core/punctuation.py
@@ -1,11 +1,11 @@
from dragonfly import Choice, Repeat
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Punctuation(MergeRule):
diff --git a/caster/lib/ccr/core/__init__.py b/castervoice/lib/ccr/cpp/__init__.py
similarity index 100%
rename from caster/lib/ccr/core/__init__.py
rename to castervoice/lib/ccr/cpp/__init__.py
diff --git a/caster/lib/ccr/cpp/cpp.py b/castervoice/lib/ccr/cpp/cpp.py
similarity index 95%
rename from caster/lib/ccr/cpp/cpp.py
rename to castervoice/lib/ccr/cpp/cpp.py
index a95b5d84b..3e0e34f7b 100644
--- a/caster/lib/ccr/cpp/cpp.py
+++ b/castervoice/lib/ccr/cpp/cpp.py
@@ -5,11 +5,11 @@
'''
from dragonfly import Mimic
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class CPP(MergeRule):
diff --git a/caster/lib/ccr/cpp/__init__.py b/castervoice/lib/ccr/csharp/__init__.py
similarity index 100%
rename from caster/lib/ccr/cpp/__init__.py
rename to castervoice/lib/ccr/csharp/__init__.py
diff --git a/caster/lib/ccr/csharp/csharp.py b/castervoice/lib/ccr/csharp/csharp.py
similarity index 95%
rename from caster/lib/ccr/csharp/csharp.py
rename to castervoice/lib/ccr/csharp/csharp.py
index 43c833294..f7af2b5d8 100644
--- a/caster/lib/ccr/csharp/csharp.py
+++ b/castervoice/lib/ccr/csharp/csharp.py
@@ -6,11 +6,11 @@
from dragonfly import Mimic
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class CSharp(MergeRule):
diff --git a/caster/lib/ccr/csharp/__init__.py b/castervoice/lib/ccr/dart/__init__.py
similarity index 100%
rename from caster/lib/ccr/csharp/__init__.py
rename to castervoice/lib/ccr/dart/__init__.py
diff --git a/caster/lib/ccr/dart/dart.py b/castervoice/lib/ccr/dart/dart.py
similarity index 94%
rename from caster/lib/ccr/dart/dart.py
rename to castervoice/lib/ccr/dart/dart.py
index 5f928e671..8b8ff4070 100644
--- a/caster/lib/ccr/dart/dart.py
+++ b/castervoice/lib/ccr/dart/dart.py
@@ -4,11 +4,11 @@
@author: comodoro
'''
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Dart(MergeRule):
diff --git a/caster/lib/ccr/go/__init__.py b/castervoice/lib/ccr/go/__init__.py
similarity index 100%
rename from caster/lib/ccr/go/__init__.py
rename to castervoice/lib/ccr/go/__init__.py
diff --git a/caster/lib/ccr/go/go.py b/castervoice/lib/ccr/go/go.py
similarity index 94%
rename from caster/lib/ccr/go/go.py
rename to castervoice/lib/ccr/go/go.py
index 8b56d8193..6178a022c 100644
--- a/caster/lib/ccr/go/go.py
+++ b/castervoice/lib/ccr/go/go.py
@@ -5,10 +5,10 @@
'''
from dragonfly import Choice, Key, Text
-from caster.lib import control
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.ccr.standard import SymbolSpecs
+from castervoice.lib import control
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.ccr.standard import SymbolSpecs
class Go(MergeRule):
diff --git a/caster/lib/ccr/dart/__init__.py b/castervoice/lib/ccr/haxe/__init__.py
similarity index 100%
rename from caster/lib/ccr/dart/__init__.py
rename to castervoice/lib/ccr/haxe/__init__.py
diff --git a/caster/lib/ccr/haxe/haxe.py b/castervoice/lib/ccr/haxe/haxe.py
similarity index 94%
rename from caster/lib/ccr/haxe/haxe.py
rename to castervoice/lib/ccr/haxe/haxe.py
index 1c3d67a64..ca14bd2ba 100644
--- a/caster/lib/ccr/haxe/haxe.py
+++ b/castervoice/lib/ccr/haxe/haxe.py
@@ -1,8 +1,8 @@
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Haxe(MergeRule):
diff --git a/caster/lib/ccr/haxe/__init__.py b/castervoice/lib/ccr/html/__init__.py
similarity index 100%
rename from caster/lib/ccr/haxe/__init__.py
rename to castervoice/lib/ccr/html/__init__.py
diff --git a/caster/lib/ccr/html/html.py b/castervoice/lib/ccr/html/html.py
similarity index 98%
rename from caster/lib/ccr/html/html.py
rename to castervoice/lib/ccr/html/html.py
index 64914a38b..e00f74a9c 100644
--- a/caster/lib/ccr/html/html.py
+++ b/castervoice/lib/ccr/html/html.py
@@ -1,7 +1,7 @@
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
class HTML(MergeRule):
diff --git a/caster/lib/ccr/html/__init__.py b/castervoice/lib/ccr/java/__init__.py
similarity index 100%
rename from caster/lib/ccr/html/__init__.py
rename to castervoice/lib/ccr/java/__init__.py
diff --git a/caster/lib/ccr/java/java.py b/castervoice/lib/ccr/java/java.py
similarity index 96%
rename from caster/lib/ccr/java/java.py
rename to castervoice/lib/ccr/java/java.py
index 5e677b975..8a4176a43 100644
--- a/caster/lib/ccr/java/java.py
+++ b/castervoice/lib/ccr/java/java.py
@@ -1,10 +1,10 @@
from dragonfly import Paste, MappingRule
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class JavaNon(MappingRule):
diff --git a/caster/lib/ccr/java/__init__.py b/castervoice/lib/ccr/javascript/__init__.py
similarity index 100%
rename from caster/lib/ccr/java/__init__.py
rename to castervoice/lib/ccr/javascript/__init__.py
diff --git a/caster/lib/ccr/javascript/javascript.py b/castervoice/lib/ccr/javascript/javascript.py
similarity index 94%
rename from caster/lib/ccr/javascript/javascript.py
rename to castervoice/lib/ccr/javascript/javascript.py
index 76e423f11..a28f03ef1 100644
--- a/caster/lib/ccr/javascript/javascript.py
+++ b/castervoice/lib/ccr/javascript/javascript.py
@@ -3,12 +3,12 @@
@author: synkarius
'''
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.additions import SelectiveAction
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.additions import SelectiveAction
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Javascript(MergeRule):
diff --git a/caster/lib/ccr/javascript/__init__.py b/castervoice/lib/ccr/latex/__init__.py
similarity index 100%
rename from caster/lib/ccr/javascript/__init__.py
rename to castervoice/lib/ccr/latex/__init__.py
diff --git a/caster/lib/ccr/latex/latex.py b/castervoice/lib/ccr/latex/latex.py
similarity index 96%
rename from caster/lib/ccr/latex/latex.py
rename to castervoice/lib/ccr/latex/latex.py
index d36f02dec..9eadab26d 100644
--- a/caster/lib/ccr/latex/latex.py
+++ b/castervoice/lib/ccr/latex/latex.py
@@ -5,11 +5,11 @@
'''
from dragonfly import Function, Choice
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.ccr.standard import SymbolSpecs
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.ccr.standard import SymbolSpecs
# Return \first{second}, if second is empty then end inside the brackets for user input
diff --git a/caster/lib/ccr/latex/__init__.py b/castervoice/lib/ccr/matlab/__init__.py
similarity index 100%
rename from caster/lib/ccr/latex/__init__.py
rename to castervoice/lib/ccr/matlab/__init__.py
diff --git a/caster/lib/ccr/matlab/matlab.py b/castervoice/lib/ccr/matlab/matlab.py
similarity index 92%
rename from caster/lib/ccr/matlab/matlab.py
rename to castervoice/lib/ccr/matlab/matlab.py
index d139e3d0a..63832cf3a 100644
--- a/caster/lib/ccr/matlab/matlab.py
+++ b/castervoice/lib/ccr/matlab/matlab.py
@@ -6,11 +6,11 @@
from dragonfly import Dictation, MappingRule
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class MatlabNon(MappingRule):
diff --git a/caster/lib/ccr/matlab/__init__.py b/castervoice/lib/ccr/prolog/__init__.py
similarity index 100%
rename from caster/lib/ccr/matlab/__init__.py
rename to castervoice/lib/ccr/prolog/__init__.py
diff --git a/caster/lib/ccr/prolog/prolog.py b/castervoice/lib/ccr/prolog/prolog.py
similarity index 82%
rename from caster/lib/ccr/prolog/prolog.py
rename to castervoice/lib/ccr/prolog/prolog.py
index 527cc26c5..0be640631 100644
--- a/caster/lib/ccr/prolog/prolog.py
+++ b/castervoice/lib/ccr/prolog/prolog.py
@@ -5,11 +5,11 @@
'''
from dragonfly import Dictation, MappingRule
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
-from caster.lib.ccr.standard import SymbolSpecs
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
+from castervoice.lib.ccr.standard import SymbolSpecs
class PrologNon(MappingRule):
diff --git a/caster/lib/ccr/prolog/__init__.py b/castervoice/lib/ccr/python/__init__.py
similarity index 100%
rename from caster/lib/ccr/prolog/__init__.py
rename to castervoice/lib/ccr/python/__init__.py
diff --git a/caster/lib/ccr/python/python.py b/castervoice/lib/ccr/python/python.py
similarity index 94%
rename from caster/lib/ccr/python/python.py
rename to castervoice/lib/ccr/python/python.py
index 6afae20a3..6161ea49a 100644
--- a/caster/lib/ccr/python/python.py
+++ b/castervoice/lib/ccr/python/python.py
@@ -5,11 +5,11 @@
'''
from dragonfly import Dictation, MappingRule
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class PythonNon(MappingRule):
diff --git a/caster/lib/ccr/python/__init__.py b/castervoice/lib/ccr/r/__init__.py
similarity index 100%
rename from caster/lib/ccr/python/__init__.py
rename to castervoice/lib/ccr/r/__init__.py
diff --git a/caster/lib/ccr/r/r.py b/castervoice/lib/ccr/r/r.py
similarity index 96%
rename from caster/lib/ccr/r/r.py
rename to castervoice/lib/ccr/r/r.py
index 5c80702a8..b765f7ff9 100644
--- a/caster/lib/ccr/r/r.py
+++ b/castervoice/lib/ccr/r/r.py
@@ -6,11 +6,11 @@
from dragonfly import Dictation, MappingRule, Choice
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class Rlang(MergeRule):
diff --git a/caster/lib/ccr/r/__init__.py b/castervoice/lib/ccr/recording/__init__.py
similarity index 100%
rename from caster/lib/ccr/r/__init__.py
rename to castervoice/lib/ccr/recording/__init__.py
diff --git a/caster/lib/ccr/recording/again.py b/castervoice/lib/ccr/recording/again.py
similarity index 84%
rename from caster/lib/ccr/recording/again.py
rename to castervoice/lib/ccr/recording/again.py
index 88b4f6554..7c1ef8ccb 100644
--- a/caster/lib/ccr/recording/again.py
+++ b/castervoice/lib/ccr/recording/again.py
@@ -7,11 +7,11 @@
from dragonfly.actions.action_function import Function
from dragonfly.actions.action_playback import Playback
-from caster.lib import settings
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.state.actions import AsynchronousAction
-from caster.lib.dfplus.state.short import L, S, R
-from caster.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib import settings
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.state.actions import AsynchronousAction
+from castervoice.lib.dfplus.state.short import L, S, R
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
class Again(MergeRule):
diff --git a/caster/lib/ccr/recording/alias.py b/castervoice/lib/ccr/recording/alias.py
similarity index 89%
rename from caster/lib/ccr/recording/alias.py
rename to castervoice/lib/ccr/recording/alias.py
index d91aae7dc..65d6aeb6e 100644
--- a/caster/lib/ccr/recording/alias.py
+++ b/castervoice/lib/ccr/recording/alias.py
@@ -1,13 +1,13 @@
from dragonfly.actions.action_function import Function
-from caster.asynch.hmc import h_launch
-from caster.lib import context, utilities, settings
-from caster.lib import control
-from caster.lib.actions import Text
-from caster.lib.dfplus.merge.selfmodrule import SelfModifyingRule
-from caster.lib.dfplus.state.actions import AsynchronousAction
-from caster.lib.dfplus.state.actions2 import NullAction
-from caster.lib.dfplus.state.short import R, L, S
+from castervoice.asynch.hmc import h_launch
+from castervoice.lib import context, utilities, settings
+from castervoice.lib import control
+from castervoice.lib.actions import Text
+from castervoice.lib.dfplus.merge.selfmodrule import SelfModifyingRule
+from castervoice.lib.dfplus.state.actions import AsynchronousAction
+from castervoice.lib.dfplus.state.actions2 import NullAction
+from castervoice.lib.dfplus.state.short import R, L, S
_NEXUS = control.nexus()
diff --git a/caster/lib/ccr/recording/bringme.py b/castervoice/lib/ccr/recording/bringme.py
similarity index 94%
rename from caster/lib/ccr/recording/bringme.py
rename to castervoice/lib/ccr/recording/bringme.py
index 8f433688a..09cd66802 100644
--- a/caster/lib/ccr/recording/bringme.py
+++ b/castervoice/lib/ccr/recording/bringme.py
@@ -6,10 +6,10 @@
# import dragonfly
from dragonfly import Choice, Function, Dictation
-from caster.lib import control, context, utilities, settings
-from caster.lib.actions import Text, Key
-from caster.lib.dfplus.merge.selfmodrule import SelfModifyingRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, context, utilities, settings
+from castervoice.lib.actions import Text, Key
+from castervoice.lib.dfplus.merge.selfmodrule import SelfModifyingRule
+from castervoice.lib.dfplus.state.short import R
CONFIG = utilities.load_toml_file(settings.SETTINGS["paths"]["BRINGME_PATH"])
if not CONFIG:
diff --git a/caster/lib/ccr/recording/history.py b/castervoice/lib/ccr/recording/history.py
similarity index 90%
rename from caster/lib/ccr/recording/history.py
rename to castervoice/lib/ccr/recording/history.py
index 07a60fde5..89ce3f433 100644
--- a/caster/lib/ccr/recording/history.py
+++ b/castervoice/lib/ccr/recording/history.py
@@ -2,13 +2,13 @@
from dragonfly.actions.action_function import Function
from dragonfly.actions.action_playback import Playback
-from caster.asynch.hmc import h_launch
-from caster.lib import control
-from caster.lib import settings, utilities
-from caster.lib.dfplus.merge.selfmodrule import SelfModifyingRule
-from caster.lib.dfplus.state.actions import AsynchronousAction
-from caster.lib.dfplus.state.actions2 import NullAction
-from caster.lib.dfplus.state.short import R, L, S
+from castervoice.asynch.hmc import h_launch
+from castervoice.lib import control
+from castervoice.lib import settings, utilities
+from castervoice.lib.dfplus.merge.selfmodrule import SelfModifyingRule
+from castervoice.lib.dfplus.state.actions import AsynchronousAction
+from castervoice.lib.dfplus.state.actions2 import NullAction
+from castervoice.lib.dfplus.state.short import R, L, S
_NEXUS = control.nexus()
diff --git a/caster/lib/ccr/recording/__init__.py b/castervoice/lib/ccr/rust/__init__.py
similarity index 100%
rename from caster/lib/ccr/recording/__init__.py
rename to castervoice/lib/ccr/rust/__init__.py
diff --git a/caster/lib/ccr/rust/rust.py b/castervoice/lib/ccr/rust/rust.py
similarity index 94%
rename from caster/lib/ccr/rust/rust.py
rename to castervoice/lib/ccr/rust/rust.py
index 29fc02673..08e693cac 100644
--- a/caster/lib/ccr/rust/rust.py
+++ b/castervoice/lib/ccr/rust/rust.py
@@ -1,11 +1,11 @@
from dragonfly import Choice, MappingRule
-from caster.lib import control, alphanumeric
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control, alphanumeric
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class RustNon(MappingRule):
diff --git a/caster/lib/ccr/rust/__init__.py b/castervoice/lib/ccr/sql/__init__.py
similarity index 100%
rename from caster/lib/ccr/rust/__init__.py
rename to castervoice/lib/ccr/sql/__init__.py
diff --git a/caster/lib/ccr/sql/sql.py b/castervoice/lib/ccr/sql/sql.py
similarity index 94%
rename from caster/lib/ccr/sql/sql.py
rename to castervoice/lib/ccr/sql/sql.py
index ee6cceeb1..51a3576a7 100644
--- a/caster/lib/ccr/sql/sql.py
+++ b/castervoice/lib/ccr/sql/sql.py
@@ -4,10 +4,10 @@
@author: synkarius
'''
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
class SQL(MergeRule):
diff --git a/caster/lib/ccr/standard.py b/castervoice/lib/ccr/standard.py
similarity index 100%
rename from caster/lib/ccr/standard.py
rename to castervoice/lib/ccr/standard.py
diff --git a/caster/lib/ccr/sql/__init__.py b/castervoice/lib/ccr/vhdl/__init__.py
similarity index 100%
rename from caster/lib/ccr/sql/__init__.py
rename to castervoice/lib/ccr/vhdl/__init__.py
diff --git a/caster/lib/ccr/vhdl/vhdl.py b/castervoice/lib/ccr/vhdl/vhdl.py
similarity index 95%
rename from caster/lib/ccr/vhdl/vhdl.py
rename to castervoice/lib/ccr/vhdl/vhdl.py
index 964243e4b..3f60ed0da 100644
--- a/caster/lib/ccr/vhdl/vhdl.py
+++ b/castervoice/lib/ccr/vhdl/vhdl.py
@@ -5,12 +5,12 @@
'''
from dragonfly import Mimic, MappingRule, Function, Choice
-from caster.lib import control
-from caster.lib.actions import Key, Text
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import control
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
from vhdl_strings import *
diff --git a/caster/lib/ccr/vhdl/vhdl_strings.py b/castervoice/lib/ccr/vhdl/vhdl_strings.py
similarity index 96%
rename from caster/lib/ccr/vhdl/vhdl_strings.py
rename to castervoice/lib/ccr/vhdl/vhdl_strings.py
index 7bbd6404d..a63e3c749 100644
--- a/caster/lib/ccr/vhdl/vhdl_strings.py
+++ b/castervoice/lib/ccr/vhdl/vhdl_strings.py
@@ -1,4 +1,4 @@
-from caster.lib.actions import Key, Text
+from castervoice.lib.actions import Key, Text
case_string=Text("case TOKEN is")+Key("enter,tab")+Text("when 'TOKEN' => TOKEN")+\
Key("enter,backspace")+Text("end case;")
diff --git a/caster/lib/clipboard.py b/castervoice/lib/clipboard.py
similarity index 98%
rename from caster/lib/clipboard.py
rename to castervoice/lib/clipboard.py
index e96d5b5a0..e40e40560 100644
--- a/caster/lib/clipboard.py
+++ b/castervoice/lib/clipboard.py
@@ -1,6 +1,6 @@
from dragonfly import Clipboard as DragonflyClipboard
-from caster.lib import settings
+from castervoice.lib import settings
def _is_aenea_available():
diff --git a/caster/lib/context.py b/castervoice/lib/context.py
similarity index 97%
rename from caster/lib/context.py
rename to castervoice/lib/context.py
index 5bc0ec7f8..bccd465e3 100644
--- a/caster/lib/context.py
+++ b/castervoice/lib/context.py
@@ -2,9 +2,9 @@
from dragonfly import AppContext
-from caster.lib import utilities, settings
-from caster.lib.actions import Key
-from caster.lib.clipboard import Clipboard
+from castervoice.lib import utilities, settings
+from castervoice.lib.actions import Key
+from castervoice.lib.clipboard import Clipboard
# Override dragonfly.AppContext with aenea.ProxyAppContext if the 'use_aenea'
# setting is set to true.
diff --git a/caster/lib/control.py b/castervoice/lib/control.py
similarity index 71%
rename from caster/lib/control.py
rename to castervoice/lib/control.py
index e0fc16286..95c06e944 100644
--- a/caster/lib/control.py
+++ b/castervoice/lib/control.py
@@ -1,4 +1,4 @@
-from caster.lib.ctrl.nexus import Nexus
+from castervoice.lib.ctrl.nexus import Nexus
_NEXUS = None
diff --git a/caster/lib/ccr/vhdl/__init__.py b/castervoice/lib/ctrl/__init__.py
similarity index 100%
rename from caster/lib/ccr/vhdl/__init__.py
rename to castervoice/lib/ctrl/__init__.py
diff --git a/caster/lib/ctrl/dependencies.py b/castervoice/lib/ctrl/dependencies.py
similarity index 97%
rename from caster/lib/ctrl/dependencies.py
rename to castervoice/lib/ctrl/dependencies.py
index 65643627e..568dd03c0 100644
--- a/caster/lib/ctrl/dependencies.py
+++ b/castervoice/lib/ctrl/dependencies.py
@@ -3,7 +3,7 @@
@author: synkarius
'''
-from caster.lib import settings
+from castervoice.lib import settings
class DependencyMan:
diff --git a/caster/lib/ctrl/nexus.py b/castervoice/lib/ctrl/nexus.py
similarity index 59%
rename from caster/lib/ctrl/nexus.py
rename to castervoice/lib/ctrl/nexus.py
index 8d8b23130..e0699eb2e 100644
--- a/caster/lib/ctrl/nexus.py
+++ b/castervoice/lib/ctrl/nexus.py
@@ -1,12 +1,13 @@
from dragonfly.grammar.grammar_base import Grammar
from dragonfly.grammar.recobs import RecognitionHistory
-from caster.lib import settings
-from caster.lib.ctrl.dependencies import DependencyMan
-from caster.lib.ctrl.wsrdf import TimerForWSR, RecognitionHistoryForWSR
-from caster.lib.dfplus.communication import Communicator
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.state.stack import CasterState
+from castervoice.lib import settings
+from castervoice.lib.ctrl.dependencies import DependencyMan
+from castervoice.lib.ctrl.wsrdf import TimerForWSR, RecognitionHistoryForWSR
+from castervoice.lib.dfplus.communication import Communicator
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.state.stack import CasterState
+from castervoice.lib.ctrl.user import UserContentManager
class Nexus:
@@ -35,6 +36,13 @@ def __init__(self, real_merger_config=True):
self.macros_grammar = Grammar("recorded_macros")
self.merger = CCRMerger(real_merger_config)
+
+ self.user_content_manager = None
+
+ def process_user_content(self):
+ self.user_content_manager = UserContentManager()
+
+ self.merger.add_user_content(self.user_content_manager)
_NEXUS = None
diff --git a/castervoice/lib/ctrl/user.py b/castervoice/lib/ctrl/user.py
new file mode 100644
index 000000000..efacf1985
--- /dev/null
+++ b/castervoice/lib/ctrl/user.py
@@ -0,0 +1,56 @@
+'''
+Created on Jan 26, 2019
+
+@author: synkarius
+'''
+
+from sys import path
+import importlib, os, glob
+from castervoice.lib import settings
+import traceback
+
+class UserContentManager(object):
+
+ def __init__(self):
+ self.rules = self.import_user_dir("get_rule", settings.SETTINGS["paths"]["USER_DIR"] + "/rules")
+ self.filters = self.import_user_dir("get_filter", settings.SETTINGS["paths"]["USER_DIR"] + "/filters")
+
+ def import_user_dir(self, fn_name, fpath):
+ result = []
+
+ # check for existence of user dir
+ if not os.path.isdir(fpath):
+ msg = "No directory '{}' was found. Did you configure your USER_DIR correctly in {}?"
+ print(msg.format(fpath, settings.get_filename()))
+ return result
+ path.append(fpath)
+
+ # get names of all python files in dir
+ python_files = glob.glob(fpath + "/*.py")
+ modules = [
+ os.path.basename(f)[:-3]
+ for f in python_files
+ if not f.endswith('__init__.py')
+ ]
+ for lib_name in modules:
+ # try to import the user rules one by one
+ lib = None
+ try:
+ lib = importlib.import_module(lib_name)
+ except Exception as e:
+ print("Could not load '{}'. Module has errors: {}".format(lib_name, traceback.format_exc()))
+ continue
+
+ # get them and add them to nexus
+ fn = None
+ try:
+ fn = getattr(lib, fn_name)
+ except AttributeError:
+ msg = "No method named '{}' was found on '{}'. Did you forget to implement it?"
+ print(msg.format(fn_name, lib_name))
+ continue
+
+
+ result.append(fn())
+
+ return result
\ No newline at end of file
diff --git a/caster/lib/ctrl/wsrdf.py b/castervoice/lib/ctrl/wsrdf.py
similarity index 100%
rename from caster/lib/ctrl/wsrdf.py
rename to castervoice/lib/ctrl/wsrdf.py
diff --git a/caster/lib/dev/__init__.py b/castervoice/lib/dev/__init__.py
similarity index 100%
rename from caster/lib/dev/__init__.py
rename to castervoice/lib/dev/__init__.py
diff --git a/caster/lib/dev/dev.py b/castervoice/lib/dev/dev.py
similarity index 89%
rename from caster/lib/dev/dev.py
rename to castervoice/lib/dev/dev.py
index 1c34d821e..aca47eefe 100644
--- a/caster/lib/dev/dev.py
+++ b/castervoice/lib/dev/dev.py
@@ -7,19 +7,19 @@
from dragonfly import (Function, BringApp, WaitWindow, Dictation, Choice,
Grammar, MappingRule, Paste)
-from caster.lib import utilities, settings, context, control
-from caster.lib.dev import devgen
-from caster.lib.actions import Key, Text
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.state.actions import ContextSeeker, AsynchronousAction, \
+from castervoice.lib import utilities, settings, context, control
+from castervoice.lib.dev import devgen
+from castervoice.lib.actions import Key, Text
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.state.actions import ContextSeeker, AsynchronousAction, \
RegisteredAction
-from caster.lib.dfplus.state.actions2 import NullAction, ConfirmAction, \
+from castervoice.lib.dfplus.state.actions2 import NullAction, ConfirmAction, \
BoxAction
-from caster.lib.dfplus.state.short import L, S, R
-from caster.lib.dfplus.state.stackitems import StackItemRegisteredAction
-from caster.lib.tests import testrunner
-from caster.lib.tests.complexity import run_tests
-from caster.lib.tests.testutils import MockAlternative
+from castervoice.lib.dfplus.state.short import L, S, R
+from castervoice.lib.dfplus.state.stackitems import StackItemRegisteredAction
+from castervoice.lib.tests import testrunner
+from castervoice.lib.tests.complexity import run_tests
+from castervoice.lib.tests.testutils import MockAlternative
grammar = Grammar('development')
@@ -54,13 +54,13 @@ def experiment():
# spoken #for reference
# ]:
# s = SequenceMatcher(None, item, spoken) # difflib
-# caster_abbrev = selector._abbreviated_string(spoken).lower() # caster
+# caster_abbrev = selector._abbreviated_string(spoken).lower() # castervoice
#
# l = StringMatcher()
# l.set_seqs(spoken, item)
#
#
-# print("caster", item, selector._phrase_to_symbol_similarity_score(caster_abbrev, item))
+# print("castervoice", item, selector._phrase_to_symbol_similarity_score(caster_abbrev, item))
# print("difflib: ", item, s.ratio())
# print("levenshtein: ", item, l.ratio())
# print("sift4: ", item, sift4(item, spoken, None, None))
@@ -125,7 +125,7 @@ def launch_url(url):
class DevelopmentHelp(MappingRule):
mapping = {
- # caster development tools
+ # castervoice development tools
"(show | open) documentation":
Function(launch_url),
"open natlink folder":
@@ -154,7 +154,7 @@ class DevelopmentHelp(MappingRule):
"python": "*.py",
}),
Choice("url", {
- "caster": "https://caster.readthedocs.io/en/latest/",
+ "castervoice": "https://castervoice.readthedocs.io/en/latest/",
"dragonfly": "https://dragonfly2.readthedocs.io/en/latest/",
}),
]
diff --git a/caster/lib/dev/devgen.py b/castervoice/lib/dev/devgen.py
similarity index 93%
rename from caster/lib/dev/devgen.py
rename to castervoice/lib/dev/devgen.py
index 642f8b5cf..69404f2d5 100644
--- a/caster/lib/dev/devgen.py
+++ b/castervoice/lib/dev/devgen.py
@@ -1,6 +1,6 @@
ο»Ώfrom dragonfly import MappingRule, Grammar, Config, Section, Item, Dictation, Mimic
-from caster.lib import settings, utilities
-from caster.lib.actions import Key, Text
+from castervoice.lib import settings, utilities
+from dragonfly.actions import Key, Text
_grammar = Grammar("dev gen")
diff --git a/caster/lib/ctrl/__init__.py b/castervoice/lib/dfplus/__init__.py
similarity index 100%
rename from caster/lib/ctrl/__init__.py
rename to castervoice/lib/dfplus/__init__.py
diff --git a/caster/lib/dfplus/additions.py b/castervoice/lib/dfplus/additions.py
similarity index 97%
rename from caster/lib/dfplus/additions.py
rename to castervoice/lib/dfplus/additions.py
index 74b4ea198..312cd3bd7 100644
--- a/caster/lib/dfplus/additions.py
+++ b/castervoice/lib/dfplus/additions.py
@@ -4,7 +4,7 @@
IntegerContentBase
from dragonfly.language.loader import language
-from caster.lib import utilities, settings, alphanumeric
+from castervoice.lib import utilities, settings, alphanumeric
class SelectiveAction(ActionBase):
diff --git a/caster/lib/dfplus/communication.py b/castervoice/lib/dfplus/communication.py
similarity index 100%
rename from caster/lib/dfplus/communication.py
rename to castervoice/lib/dfplus/communication.py
diff --git a/caster/lib/dfplus/__init__.py b/castervoice/lib/dfplus/hint/__init__.py
similarity index 100%
rename from caster/lib/dfplus/__init__.py
rename to castervoice/lib/dfplus/hint/__init__.py
diff --git a/caster/lib/dfplus/hint/hintnode.py b/castervoice/lib/dfplus/hint/hintnode.py
similarity index 95%
rename from caster/lib/dfplus/hint/hintnode.py
rename to castervoice/lib/dfplus/hint/hintnode.py
index 7dfd2eb2d..bf6fe6831 100644
--- a/caster/lib/dfplus/hint/hintnode.py
+++ b/castervoice/lib/dfplus/hint/hintnode.py
@@ -5,10 +5,10 @@
'''
from dragonfly import ActionBase
-from caster.lib import utilities
-from caster.lib.dfplus.merge.selfmodrule import SelfModifyingRule
-from caster.lib.dfplus.state.actions import ContextSeeker
-from caster.lib.dfplus.state.short import L, S
+from castervoice.lib import utilities
+from castervoice.lib.dfplus.merge.selfmodrule import SelfModifyingRule
+from castervoice.lib.dfplus.state.actions import ContextSeeker
+from castervoice.lib.dfplus.state.short import L, S
class HintNode(object):
diff --git a/caster/lib/dfplus/hint/__init__.py b/castervoice/lib/dfplus/hint/nodes/__init__.py
similarity index 100%
rename from caster/lib/dfplus/hint/__init__.py
rename to castervoice/lib/dfplus/hint/nodes/__init__.py
diff --git a/caster/lib/dfplus/hint/nodes/css.py b/castervoice/lib/dfplus/hint/nodes/css.py
similarity index 98%
rename from caster/lib/dfplus/hint/nodes/css.py
rename to castervoice/lib/dfplus/hint/nodes/css.py
index 657a8954d..ffdf53f76 100644
--- a/caster/lib/dfplus/hint/nodes/css.py
+++ b/castervoice/lib/dfplus/hint/nodes/css.py
@@ -6,11 +6,11 @@
from dragonfly.grammar.grammar_base import Grammar
-from caster.lib import control
-from caster.lib.actions import Text
-from caster.lib.dfplus.hint import hintnode
-from caster.lib.dfplus.hint.hintnode import NodeRule
-from caster.lib.dfplus.state.actions2 import NullAction
+from castervoice.lib import control
+from castervoice.lib.actions import Text
+from castervoice.lib.dfplus.hint import hintnode
+from castervoice.lib.dfplus.hint.hintnode import NodeRule
+from castervoice.lib.dfplus.state.actions2 import NullAction
H = hintnode.HintNode
_style = H("style", Text("-style: "), [
diff --git a/caster/lib/dfplus/hint/nodes/__init__.py b/castervoice/lib/dfplus/merge/__init__.py
similarity index 100%
rename from caster/lib/dfplus/hint/nodes/__init__.py
rename to castervoice/lib/dfplus/merge/__init__.py
diff --git a/caster/lib/dfplus/merge/ccrmerger.py b/castervoice/lib/dfplus/merge/ccrmerger.py
similarity index 97%
rename from caster/lib/dfplus/merge/ccrmerger.py
rename to castervoice/lib/dfplus/merge/ccrmerger.py
index 6c624808f..011639fa0 100644
--- a/caster/lib/dfplus/merge/ccrmerger.py
+++ b/castervoice/lib/dfplus/merge/ccrmerger.py
@@ -9,10 +9,10 @@
from dragonfly.grammar.grammar_base import Grammar
from dragonfly.grammar.rule_compound import CompoundRule
-from caster.lib import utilities, settings, textformat
-from caster.lib.dfplus.merge import gfilter
-from caster.lib.dfplus.merge.mergepair import MergePair, MergeInf
-from caster.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib import utilities, settings, textformat
+from castervoice.lib.dfplus.merge import gfilter
+from castervoice.lib.dfplus.merge.mergepair import MergePair, MergeInf
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
def app_merge(mp):
@@ -136,6 +136,12 @@ def add_selfmodrule(self, rule):
def add_filter(self, filter):
if not filter in self._filters:
self._filters.append(filter)
+
+ def add_user_content(self, user_content_manager):
+ for rule in user_content_manager.rules:
+ self.add_global_rule(rule)
+ for filter_ in user_content_manager.filters:
+ self.add_filter(filter_)
def _add_to(self, rule, group):
if rule.get_pronunciation() in \
diff --git a/caster/lib/dfplus/merge/filter.py b/castervoice/lib/dfplus/merge/filter.py
similarity index 100%
rename from caster/lib/dfplus/merge/filter.py
rename to castervoice/lib/dfplus/merge/filter.py
diff --git a/caster/lib/dfplus/merge/gfilter.py b/castervoice/lib/dfplus/merge/gfilter.py
similarity index 97%
rename from caster/lib/dfplus/merge/gfilter.py
rename to castervoice/lib/dfplus/merge/gfilter.py
index 0bb4c59cb..f51489ebd 100644
--- a/caster/lib/dfplus/merge/gfilter.py
+++ b/castervoice/lib/dfplus/merge/gfilter.py
@@ -4,8 +4,8 @@
import io
import os
-from caster.lib import settings
-from caster.lib.dfplus.merge.mergepair import MergeInf, MergePair
+from castervoice.lib import settings
+from castervoice.lib.dfplus.merge.mergepair import MergeInf, MergePair
from dragonfly.grammar.elements import Choice
@@ -123,7 +123,7 @@ def __init__(self, lines):
DEFS = None
if os.path.isfile(settings.SETTINGS["paths"]["FILTER_DEFS_PATH"]):
- '''user must create caster/user/fdefs.txt for it to get picked up here'''
+ '''user must create castervoice/user/fdefs.txt for it to get picked up here'''
with io.open(
settings.SETTINGS["paths"]["FILTER_DEFS_PATH"], "rt", encoding="utf-8") as f:
lines = f.readlines()
diff --git a/caster/lib/dfplus/merge/mergepair.py b/castervoice/lib/dfplus/merge/mergepair.py
similarity index 100%
rename from caster/lib/dfplus/merge/mergepair.py
rename to castervoice/lib/dfplus/merge/mergepair.py
diff --git a/caster/lib/dfplus/merge/mergerule.py b/castervoice/lib/dfplus/merge/mergerule.py
similarity index 100%
rename from caster/lib/dfplus/merge/mergerule.py
rename to castervoice/lib/dfplus/merge/mergerule.py
diff --git a/caster/lib/dfplus/merge/selfmodrule.py b/castervoice/lib/dfplus/merge/selfmodrule.py
similarity index 87%
rename from caster/lib/dfplus/merge/selfmodrule.py
rename to castervoice/lib/dfplus/merge/selfmodrule.py
index cb7e75365..96dc61222 100644
--- a/caster/lib/dfplus/merge/selfmodrule.py
+++ b/castervoice/lib/dfplus/merge/selfmodrule.py
@@ -5,10 +5,10 @@
'''
from dragonfly.grammar.elements import Dictation
-from caster.lib.dfplus.additions import IntegerRefST
-from caster.lib.dfplus.merge.mergepair import MergeInf
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.actions2 import NullAction
+from castervoice.lib.dfplus.additions import IntegerRefST
+from castervoice.lib.dfplus.merge.mergepair import MergeInf
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.actions2 import NullAction
class SelfModifyingRule(MergeRule):
diff --git a/caster/lib/dfplus/merge/__init__.py b/castervoice/lib/dfplus/state/__init__.py
similarity index 100%
rename from caster/lib/dfplus/merge/__init__.py
rename to castervoice/lib/dfplus/state/__init__.py
diff --git a/caster/lib/dfplus/state/actions.py b/castervoice/lib/dfplus/state/actions.py
similarity index 97%
rename from caster/lib/dfplus/state/actions.py
rename to castervoice/lib/dfplus/state/actions.py
index f12647354..ca63c8bc2 100644
--- a/caster/lib/dfplus/state/actions.py
+++ b/castervoice/lib/dfplus/state/actions.py
@@ -1,7 +1,7 @@
from dragonfly import ActionBase
-from caster.lib import control
-from caster.lib.dfplus.state.stackitems import StackItemRegisteredAction, \
+from castervoice.lib import control
+from castervoice.lib.dfplus.state.stackitems import StackItemRegisteredAction, \
StackItemSeeker, StackItemAsynchronous
_NEXUS = control.nexus()
diff --git a/caster/lib/dfplus/state/actions2.py b/castervoice/lib/dfplus/state/actions2.py
similarity index 95%
rename from caster/lib/dfplus/state/actions2.py
rename to castervoice/lib/dfplus/state/actions2.py
index d73a67cf8..a51447ba1 100644
--- a/caster/lib/dfplus/state/actions2.py
+++ b/castervoice/lib/dfplus/state/actions2.py
@@ -1,11 +1,11 @@
from dragonfly.actions.action_function import Function
-from caster.asynch.hmc import h_launch
-from caster.lib import settings, utilities
-from caster.lib.dfplus.state.actions import AsynchronousAction, \
+from castervoice.asynch.hmc import h_launch
+from castervoice.lib import settings, utilities
+from castervoice.lib.dfplus.state.actions import AsynchronousAction, \
RegisteredAction
-from caster.lib.dfplus.state.short import L, S
-from caster.lib.dfplus.state.stackitems import StackItemConfirm, \
+from castervoice.lib.dfplus.state.short import L, S
+from castervoice.lib.dfplus.state.stackitems import StackItemConfirm, \
StackItemAsynchronous
diff --git a/caster/lib/dfplus/state/contextoptions.py b/castervoice/lib/dfplus/state/contextoptions.py
similarity index 100%
rename from caster/lib/dfplus/state/contextoptions.py
rename to castervoice/lib/dfplus/state/contextoptions.py
diff --git a/castervoice/lib/dfplus/state/short.py b/castervoice/lib/dfplus/state/short.py
new file mode 100644
index 000000000..7869f52f3
--- /dev/null
+++ b/castervoice/lib/dfplus/state/short.py
@@ -0,0 +1,12 @@
+'''
+Created on Jun 7, 2015
+
+@author: dave
+'''
+# shorter names for classes
+from castervoice.lib.dfplus.state.actions import RegisteredAction
+from castervoice.lib.dfplus.state.contextoptions import ContextLevel, ContextSet
+
+R = RegisteredAction
+L = ContextLevel
+S = ContextSet
diff --git a/caster/lib/dfplus/state/stack.py b/castervoice/lib/dfplus/state/stack.py
similarity index 98%
rename from caster/lib/dfplus/state/stack.py
rename to castervoice/lib/dfplus/state/stack.py
index 082fc7b28..21fde7012 100644
--- a/caster/lib/dfplus/state/stack.py
+++ b/castervoice/lib/dfplus/state/stack.py
@@ -5,8 +5,8 @@
'''
import Queue
-from caster.lib import settings, utilities
-from caster.lib.dfplus.state.stackitems import StackItemSeeker, \
+from castervoice.lib import settings, utilities
+from castervoice.lib.dfplus.state.stackitems import StackItemSeeker, \
StackItemRegisteredAction, StackItemAsynchronous, StackItemConfirm
diff --git a/caster/lib/dfplus/state/stackitems.py b/castervoice/lib/dfplus/state/stackitems.py
similarity index 99%
rename from caster/lib/dfplus/state/stackitems.py
rename to castervoice/lib/dfplus/state/stackitems.py
index f0c531bf0..cd0d9581d 100644
--- a/caster/lib/dfplus/state/stackitems.py
+++ b/castervoice/lib/dfplus/state/stackitems.py
@@ -5,7 +5,7 @@
'''
from dragonfly import Pause, ActionBase
-from caster.lib import settings
+from castervoice.lib import settings
class StackItem:
diff --git a/caster/lib/dll/tirg-dll.dll b/castervoice/lib/dll/tirg-dll.dll
similarity index 100%
rename from caster/lib/dll/tirg-dll.dll
rename to castervoice/lib/dll/tirg-dll.dll
diff --git a/caster/lib/gdi.py b/castervoice/lib/gdi.py
similarity index 100%
rename from caster/lib/gdi.py
rename to castervoice/lib/gdi.py
diff --git a/caster/lib/navigation.py b/castervoice/lib/navigation.py
similarity index 97%
rename from caster/lib/navigation.py
rename to castervoice/lib/navigation.py
index 123e50d02..d10889a63 100644
--- a/caster/lib/navigation.py
+++ b/castervoice/lib/navigation.py
@@ -9,10 +9,10 @@
import dragonfly
from dragonfly import Choice, monitors
-from caster.asynch.mouse.legion import LegionScanner
-from caster.lib import control, settings, utilities, textformat
-from caster.lib.actions import Key, Text, Mouse
-from caster.lib.clipboard import Clipboard
+from castervoice.asynch.mouse.legion import LegionScanner
+from castervoice.lib import control, settings, utilities, textformat
+from castervoice.lib.actions import Key, Text, Mouse
+from castervoice.lib.clipboard import Clipboard
DIRECTION_STANDARD = {
"sauce [E]": "up",
diff --git a/caster/lib/settings.py b/castervoice/lib/settings.py
similarity index 89%
rename from caster/lib/settings.py
rename to castervoice/lib/settings.py
index a3a0c78c4..179b9a290 100644
--- a/caster/lib/settings.py
+++ b/castervoice/lib/settings.py
@@ -2,18 +2,24 @@
import collections
import io
-import toml
import os
import sys
-import errno
+import toml
import _winreg
+
SETTINGS = {}
BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "lib", 1)[0].replace("\\", "/")
-_SETTINGS_PATH = BASE_PATH + "/bin/data/settings.toml"
+_USER_DIR = os.path.expanduser("~").replace("\\", "/") + "/.caster"
+_SETTINGS_PATH = _USER_DIR + "/data/settings.toml"
+
+for directory in ["data", "rules", "filters", "sikuli"]:
+ d = _USER_DIR+"/"+directory
+ if not os.path.exists(d):
+ os.makedirs(d)
# title
-SOFTWARE_VERSION_NUMBER = "0.5.11"
+SOFTWARE_VERSION_NUMBER = "0.6.8"
SOFTWARE_NAME = "Caster v " + SOFTWARE_VERSION_NUMBER
HOMUNCULUS_VERSION = "HMC v " + SOFTWARE_VERSION_NUMBER
HMC_TITLE_RECORDING = " :: Recording Manager"
@@ -36,6 +42,8 @@
WSR = False
+def get_filename():
+ return _SETTINGS_PATH
def _validate_engine_path():
'''
@@ -118,22 +126,27 @@ def _find_natspeak():
_DEFAULT_SETTINGS = {
"paths": {
"BASE_PATH": BASE_PATH,
+ "USER_DIR": _USER_DIR,
# DATA
- "BRINGME_PATH": BASE_PATH + "/bin/data/bringme.toml",
+ "BRINGME_PATH": _USER_DIR + "/data/bringme.toml",
"BRINGME_DEFAULTS_PATH": BASE_PATH + "/bin/share/bringme.toml.defaults",
- "ALIAS_PATH": BASE_PATH + "/bin/data/aliases.toml",
- "CCR_CONFIG_PATH": BASE_PATH + "/bin/data/ccr.toml",
+ "ALIAS_PATH": _USER_DIR + "/data/aliases.toml",
+ "CCR_CONFIG_PATH": _USER_DIR + "/data/ccr.toml",
"DLL_PATH": BASE_PATH + "/lib/dll/",
- "FILTER_DEFS_PATH": BASE_PATH + "/user/words.txt",
- "LOG_PATH": BASE_PATH + "/bin/data/log.txt",
- "RECORDED_MACROS_PATH": BASE_PATH + "/bin/data/recorded_macros.toml",
- "SAVED_CLIPBOARD_PATH": BASE_PATH + "/bin/data/clipboard.toml",
- "SIKULI_SCRIPTS_FOLDER_PATH": BASE_PATH + "/asynch/sikuli/scripts",
+ "FILTER_DEFS_PATH": _USER_DIR + "/data/words.txt",
+ "LOG_PATH": _USER_DIR + "/log.txt",
+ "RECORDED_MACROS_PATH": _USER_DIR + "/data/recorded_macros.toml",
+ "SAVED_CLIPBOARD_PATH": _USER_DIR + "/data/clipboard.toml",
+ "SIKULI_SCRIPTS_PATH": _USER_DIR + "/sikuli",
# REMOTE_DEBUGGER_PATH is the folder in which pydevd.py can be found
"REMOTE_DEBUGGER_PATH": "",
+ # SIKULIX EXECUTABLES
+ "SIKULI_IDE": "",
+ "SIKULI_RUNNER": "",
+
# EXECUTABLES
"DOUGLAS_PATH": BASE_PATH + "/asynch/mouse/grids.py",
"ENGINE_PATH": _validate_engine_path(),
@@ -144,14 +157,11 @@ def _find_natspeak():
"REBOOT_PATH": BASE_PATH + "/bin/reboot.bat",
"REBOOT_PATH_WSR": BASE_PATH + "/bin/reboot_wsr.bat",
"SETTINGS_WINDOW_PATH": BASE_PATH + "/asynch/settingswindow.py",
- "SIKULI_COMPATIBLE_JAVA_EXE_PATH": "",
- "SIKULI_IDE_JAR_PATH": "",
- "SIKULI_SCRIPTS_JAR_PATH": "",
- "SIKULI_SERVER_PATH": BASE_PATH + "/asynch/sikuli/scripts/xmlrpc_server.sikuli",
+ "SIKULI_SERVER_PATH": BASE_PATH + "/asynch/sikuli/server/xmlrpc_server.sikuli",
"WSR_PATH": "C:/Windows/Speech/Common/sapisvr.exe",
# CCR
- "CONFIGDEBUGTXT_PATH": BASE_PATH + "/bin/data/configdebug.txt",
+ "CONFIGDEBUGTXT_PATH": _USER_DIR + "/data/configdebug.txt",
# PYTHON
"PYTHONW": "C:/Python27/pythonw",
@@ -192,6 +202,12 @@ def _find_natspeak():
"winword": True,
"wsr": True,
},
+
+ # sikuli settings
+ "sikuli": {
+ "enabled": False,
+ "version": ""
+ },
# feature switches
"feature_rules": {
@@ -207,7 +223,6 @@ def _find_natspeak():
# miscellaneous section
"miscellaneous": {
"dev_commands": False,
- "sikuli_enabled": False,
"keypress_wait": 50, # milliseconds
"max_ccr_repetitions": 16,
"atom_palette_wait": 30, # hundredths of a second
diff --git a/caster/lib/dfplus/state/__init__.py b/castervoice/lib/tests/__init__.py
similarity index 100%
rename from caster/lib/dfplus/state/__init__.py
rename to castervoice/lib/tests/__init__.py
diff --git a/caster/lib/tests/complexity.py b/castervoice/lib/tests/complexity.py
similarity index 94%
rename from caster/lib/tests/complexity.py
rename to castervoice/lib/tests/complexity.py
index f49101360..1c2431c0e 100644
--- a/caster/lib/tests/complexity.py
+++ b/castervoice/lib/tests/complexity.py
@@ -10,19 +10,19 @@
from dragonfly.grammar.elements import Choice
from dragonfly.grammar.grammar_base import Grammar
-from caster.lib import settings
-from caster.lib.actions import Text
-from caster.lib.ccr.core.alphabet import Alphabet
-from caster.lib.ccr.core.nav import Navigation
-from caster.lib.ccr.core.numbers import Numbers
-from caster.lib.ccr.core.punctuation import Punctuation
-from caster.lib.ccr.python.python import Python
-from caster.lib.dfplus.hint.hintnode import NodeRule
-from caster.lib.dfplus.hint.nodes import css
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.merge.mergepair import MergeInf
-from caster.lib.dfplus.merge.mergerule import MergeRule
-from caster.lib.dfplus.state.short import R
+from castervoice.lib import settings
+from castervoice.lib.actions import Text
+from castervoice.lib.ccr.core.alphabet import Alphabet
+from castervoice.lib.ccr.core.nav import Navigation
+from castervoice.lib.ccr.core.numbers import Numbers
+from castervoice.lib.ccr.core.punctuation import Punctuation
+from castervoice.lib.ccr.python.python import Python
+from castervoice.lib.dfplus.hint.hintnode import NodeRule
+from castervoice.lib.dfplus.hint.nodes import css
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.merge.mergepair import MergeInf
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.dfplus.state.short import R
def get_500_words():
diff --git a/caster/lib/tests/testrunner.py b/castervoice/lib/tests/testrunner.py
similarity index 84%
rename from caster/lib/tests/testrunner.py
rename to castervoice/lib/tests/testrunner.py
index 6e53711b3..9aca3f55e 100644
--- a/caster/lib/tests/testrunner.py
+++ b/castervoice/lib/tests/testrunner.py
@@ -1,6 +1,6 @@
import unittest
-from caster.lib.tests.unit import merger, mergerule, filter, state, stack, node, textformat
+from castervoice.lib.tests.unit import merger, mergerule, filter, state, stack, node, textformat
def get_master_suite():
diff --git a/caster/lib/tests/testutils.py b/castervoice/lib/tests/testutils.py
similarity index 93%
rename from caster/lib/tests/testutils.py
rename to castervoice/lib/tests/testutils.py
index 0b46b07c7..38fa27081 100644
--- a/caster/lib/tests/testutils.py
+++ b/castervoice/lib/tests/testutils.py
@@ -3,8 +3,8 @@
from dragonfly.actions.action_startapp import BringApp
from dragonfly.actions.action_waitwindow import WaitWindow
-from caster.lib import context
-from caster.lib.actions import Key, Text
+from castervoice.lib import context
+from castervoice.lib.actions import Key, Text
# get_notepad()
# notepad_message("\nStarting Tests")
diff --git a/caster/lib/tests/__init__.py b/castervoice/lib/tests/unit/__init__.py
similarity index 100%
rename from caster/lib/tests/__init__.py
rename to castervoice/lib/tests/unit/__init__.py
diff --git a/caster/lib/tests/unit/filter.py b/castervoice/lib/tests/unit/filter.py
similarity index 81%
rename from caster/lib/tests/unit/filter.py
rename to castervoice/lib/tests/unit/filter.py
index 859ce3bd0..fcad9d740 100644
--- a/caster/lib/tests/unit/filter.py
+++ b/castervoice/lib/tests/unit/filter.py
@@ -1,15 +1,15 @@
-from caster.apps import eclipse
-from caster.apps.eclipse import EclipseCCR
-from caster.lib.actions import Text
-from caster.lib.ccr.bash.bash import Bash
-from caster.lib.ccr.java.java import Java
-from caster.lib.ccr.python.python import Python
-from caster.lib.ccr.recording.alias import ChainAlias
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.merge.filter import make_filter, there_is_spec_overlap, incoming_gets_priority
-from caster.lib.dfplus.merge.mergepair import MergeInf
-from caster.lib.tests.unit.state import TestNexus
+from castervoice.apps import eclipse
+from castervoice.apps.eclipse import EclipseCCR
+from castervoice.lib.actions import Text
+from castervoice.lib.ccr.bash.bash import Bash
+from castervoice.lib.ccr.java.java import Java
+from castervoice.lib.ccr.python.python import Python
+from castervoice.lib.ccr.recording.alias import ChainAlias
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.merge.filter import make_filter, there_is_spec_overlap, incoming_gets_priority
+from castervoice.lib.dfplus.merge.mergepair import MergeInf
+from castervoice.lib.tests.unit.state import TestNexus
class TestFilterFunctions(TestNexus):
diff --git a/caster/lib/tests/unit/merger.py b/castervoice/lib/tests/unit/merger.py
similarity index 87%
rename from caster/lib/tests/unit/merger.py
rename to castervoice/lib/tests/unit/merger.py
index ad2148f73..1433d4736 100644
--- a/caster/lib/tests/unit/merger.py
+++ b/castervoice/lib/tests/unit/merger.py
@@ -1,16 +1,16 @@
from dragonfly.grammar.rule_mapping import MappingRule
-from caster.apps import eclipse
-from caster.apps.eclipse import EclipseCCR
-from caster.lib.actions import Key
-from caster.lib.ccr.bash.bash import Bash
-from caster.lib.ccr.java.java import Java
-from caster.lib.ccr.python.python import Python
-from caster.lib.ccr.recording.alias import ChainAlias
-from caster.lib.ccr.standard import SymbolSpecs
-from caster.lib.dfplus.merge.ccrmerger import CCRMerger
-from caster.lib.dfplus.merge.mergepair import MergeInf
-from caster.lib.tests.unit.state import TestNexus
+from castervoice.apps import eclipse
+from castervoice.apps.eclipse import EclipseCCR
+from castervoice.lib.actions import Key
+from castervoice.lib.ccr.bash.bash import Bash
+from castervoice.lib.ccr.java.java import Java
+from castervoice.lib.ccr.python.python import Python
+from castervoice.lib.ccr.recording.alias import ChainAlias
+from castervoice.lib.ccr.standard import SymbolSpecs
+from castervoice.lib.dfplus.merge.ccrmerger import CCRMerger
+from castervoice.lib.dfplus.merge.mergepair import MergeInf
+from castervoice.lib.tests.unit.state import TestNexus
def demo_filter(_):
diff --git a/caster/lib/tests/unit/mergerule.py b/castervoice/lib/tests/unit/mergerule.py
similarity index 82%
rename from caster/lib/tests/unit/mergerule.py
rename to castervoice/lib/tests/unit/mergerule.py
index 76a6bbdaf..b2b00f708 100644
--- a/caster/lib/tests/unit/mergerule.py
+++ b/castervoice/lib/tests/unit/mergerule.py
@@ -1,12 +1,12 @@
-#Embedded file name: C:\NatLink\NatLink\MacroSystem\caster\lib\tests\unit\mergerule.py
+#Embedded file name: C:\NatLink\NatLink\MacroSystem\castervoice\lib\tests\unit\mergerule.py
import unittest
-from caster.lib.context import AppContext
-from caster.apps.eclipse import EclipseCCR
-from caster.lib.ccr.java.java import Java
-from caster.lib.ccr.javascript.javascript import Javascript
-from caster.lib.ccr.python.python import Python
-from caster.lib.ccr.recording.alias import Alias
-from caster.lib.dfplus.merge.mergerule import MergeRule
+from castervoice.lib.context import AppContext
+from castervoice.apps.eclipse import EclipseCCR
+from castervoice.lib.ccr.java.java import Java
+from castervoice.lib.ccr.javascript.javascript import Javascript
+from castervoice.lib.ccr.python.python import Python
+from castervoice.lib.ccr.recording.alias import Alias
+from castervoice.lib.dfplus.merge.mergerule import MergeRule
class TestMergeRule(unittest.TestCase):
diff --git a/caster/lib/tests/unit/nexus.py b/castervoice/lib/tests/unit/nexus.py
similarity index 76%
rename from caster/lib/tests/unit/nexus.py
rename to castervoice/lib/tests/unit/nexus.py
index be3a4b892..dbb304731 100644
--- a/caster/lib/tests/unit/nexus.py
+++ b/castervoice/lib/tests/unit/nexus.py
@@ -1,6 +1,6 @@
import unittest
-from caster.lib.ctrl.nexus import Nexus
+from castervoice.lib.ctrl.nexus import Nexus
class TestNexus(unittest.TestCase):
diff --git a/caster/lib/tests/unit/node.py b/castervoice/lib/tests/unit/node.py
similarity index 94%
rename from caster/lib/tests/unit/node.py
rename to castervoice/lib/tests/unit/node.py
index 4eec8c424..e29c1703c 100644
--- a/caster/lib/tests/unit/node.py
+++ b/castervoice/lib/tests/unit/node.py
@@ -1,8 +1,8 @@
from dragonfly.actions.action_base import ActionBase
-from caster.lib.dfplus.hint.hintnode import HintNode, NodeRule
-from caster.lib.dfplus.state.actions2 import NullAction
-from caster.lib.tests.unit.nexus import TestNexus
+from castervoice.lib.dfplus.hint.hintnode import HintNode, NodeRule
+from castervoice.lib.dfplus.state.actions2 import NullAction
+from castervoice.lib.tests.unit.nexus import TestNexus
class FText(ActionBase):
diff --git a/caster/lib/tests/unit/stack.py b/castervoice/lib/tests/unit/stack.py
similarity index 97%
rename from caster/lib/tests/unit/stack.py
rename to castervoice/lib/tests/unit/stack.py
index 388a9634a..a294e69e9 100644
--- a/caster/lib/tests/unit/stack.py
+++ b/castervoice/lib/tests/unit/stack.py
@@ -1,16 +1,16 @@
from dragonfly.actions.action_function import Function
-from caster.lib import utilities
-from caster.lib.actions import Text
-from caster.lib.dfplus.state.actions import AsynchronousAction, ContextSeeker, \
+from castervoice.lib import utilities
+from castervoice.lib.actions import Text
+from castervoice.lib.dfplus.state.actions import AsynchronousAction, ContextSeeker, \
RegisteredAction
-from caster.lib.dfplus.state.actions2 import NullAction
-from caster.lib.dfplus.state.short import L, S, R
-from caster.lib.dfplus.state.stackitems import StackItemAsynchronous, \
+from castervoice.lib.dfplus.state.actions2 import NullAction
+from castervoice.lib.dfplus.state.short import L, S, R
+from castervoice.lib.dfplus.state.stackitems import StackItemAsynchronous, \
StackItemRegisteredAction, StackItemSeeker
-from caster.lib.tests.testutils import MockAlternative
-from caster.lib.tests.unit.nexus import TestNexus
+from castervoice.lib.tests.testutils import MockAlternative
+from castervoice.lib.tests.unit.nexus import TestNexus
class TestStack(TestNexus):
diff --git a/caster/lib/tests/unit/state.py b/castervoice/lib/tests/unit/state.py
similarity index 87%
rename from caster/lib/tests/unit/state.py
rename to castervoice/lib/tests/unit/state.py
index 69362023e..bf7b2e8a0 100644
--- a/caster/lib/tests/unit/state.py
+++ b/castervoice/lib/tests/unit/state.py
@@ -1,12 +1,12 @@
from dragonfly.actions.action_function import Function
-from caster.lib.dfplus.state.actions import AsynchronousAction
-from caster.lib.dfplus.state.actions2 import NullAction
-from caster.lib.dfplus.state.short import S, L, R
-from caster.lib.dfplus.state.stackitems import StackItemAsynchronous, \
+from castervoice.lib.dfplus.state.actions import AsynchronousAction
+from castervoice.lib.dfplus.state.actions2 import NullAction
+from castervoice.lib.dfplus.state.short import S, L, R
+from castervoice.lib.dfplus.state.stackitems import StackItemAsynchronous, \
StackItemRegisteredAction
-from caster.lib.tests.testutils import MockAlternative
-from caster.lib.tests.unit.nexus import TestNexus
+from castervoice.lib.tests.testutils import MockAlternative
+from castervoice.lib.tests.unit.nexus import TestNexus
class TestState(TestNexus):
diff --git a/caster/lib/tests/unit/textformat.py b/castervoice/lib/tests/unit/textformat.py
similarity index 97%
rename from caster/lib/tests/unit/textformat.py
rename to castervoice/lib/tests/unit/textformat.py
index 19c3c9e11..1a0465f49 100644
--- a/caster/lib/tests/unit/textformat.py
+++ b/castervoice/lib/tests/unit/textformat.py
@@ -1,5 +1,5 @@
import unittest
-from caster.lib.textformat import TextFormat
+from castervoice.lib.textformat import TextFormat
class TestTextFormat(unittest.TestCase):
diff --git a/caster/lib/text_utils.py b/castervoice/lib/text_utils.py
similarity index 94%
rename from caster/lib/text_utils.py
rename to castervoice/lib/text_utils.py
index 78d23ef52..a5304d7cb 100644
--- a/caster/lib/text_utils.py
+++ b/castervoice/lib/text_utils.py
@@ -1,8 +1,8 @@
import time
-from caster.lib.actions import Key, Text
-from caster.lib import settings, context
+from castervoice.lib.actions import Key, Text
+from castervoice.lib import settings, context
def master_text_nav(mtn_mode, mtn_dir, nnavi500, extreme):
'''
diff --git a/caster/lib/textformat.py b/castervoice/lib/textformat.py
similarity index 98%
rename from caster/lib/textformat.py
rename to castervoice/lib/textformat.py
index 101df6de5..c3436a027 100644
--- a/caster/lib/textformat.py
+++ b/castervoice/lib/textformat.py
@@ -1,7 +1,7 @@
from builtins import str
-from caster.lib import settings
-from caster.lib.actions import Text
+from castervoice.lib import settings
+from castervoice.lib.actions import Text
class TextFormat():
diff --git a/caster/lib/utilities.py b/castervoice/lib/utilities.py
similarity index 97%
rename from caster/lib/utilities.py
rename to castervoice/lib/utilities.py
index 4324d762b..3db7f2607 100644
--- a/caster/lib/utilities.py
+++ b/castervoice/lib/utilities.py
@@ -3,13 +3,13 @@
from __future__ import print_function, unicode_literals
import io
-import toml
import os
import re
import sys
import traceback
from __builtin__ import True
from subprocess import Popen
+import toml
import win32gui
import win32ui
@@ -20,11 +20,11 @@
from dragonfly.windows.window import Window
try: # Style C -- may be imported into Caster, or externally
- BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "caster", 1)[0]
+ BASE_PATH = os.path.realpath(__file__).rsplit(os.path.sep + "castervoice", 1)[0]
if BASE_PATH not in sys.path:
sys.path.append(BASE_PATH)
finally:
- from caster.lib import settings
+ from castervoice.lib import settings
# filename_pattern was used to determine when to update the list in the element window,
# checked to see when a new file name had appeared
@@ -127,7 +127,7 @@ def reboot(wsr=False):
if wsr:
popen_parameters.append(settings.SETTINGS["paths"]["REBOOT_PATH_WSR"])
popen_parameters.append(settings.SETTINGS["paths"]["WSR_PATH"])
- # caster path inserted too if there's a way to wake up WSR
+ # castervoice path inserted too if there's a way to wake up WSR
else:
popen_parameters.append(settings.SETTINGS["paths"]["REBOOT_PATH"])
popen_parameters.append(settings.SETTINGS["paths"]["ENGINE_PATH"])
diff --git a/requirements.txt b/requirements.txt
index 17e17fb1c..82b0e3c4f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
Caster
wxPython>=4.0.3
-dragonfly2>=0.10.1
+dragonfly2>=0.11.0
Pillow>=5.3.0
toml>=0.10.0
diff --git a/setup.py b/setup.py
new file mode 100644
index 000000000..8ff7555f3
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,38 @@
+import setuptools
+
+with open("README.md", "r") as fh:
+ long_description = fh.read()
+
+setuptools.setup(
+ name="castervoice",
+ version="0.6.8",
+ author="synkarius",
+ author_email="dconway1985@gmail.com",
+ description="Dragonfly-Based Voice Programming Toolkit",
+ long_description=long_description,
+ long_description_content_type="text/markdown",
+ url="https://github.com/dictation-toolbox/castervoice",
+ packages=setuptools.find_packages(),
+ classifiers=[
+ "Programming Language :: Python :: 2",
+ "Operating System :: OS Independent"
+ ],
+ install_requires=[
+ "dragonfly2>=0.11.0",
+ "wxpython>=4.0.3",
+ "pillow>=5.3.0",
+ "toml>=0.10.0",
+ "future"
+ ],
+ package_data={
+ "castervoice": [
+ "bin/data/configdebug.txt",
+ "bin/share/bringme.toml.defaults",
+ "bin/reboot.bat",
+ "bin/reboot_wsr.bat",
+ "lib/dll/tirg-dll.dll",
+ "asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.html",
+ "asynch/sikuli/server/xmlrpc_server.sikuli/xmlrpc_server.py"
+ ]
+ }
+)