diff --git a/main.py b/main.py index 68af6ed..d965974 100755 --- a/main.py +++ b/main.py @@ -9,6 +9,8 @@ from profileexecutor import ProfileExecutor import sys import pickle import signal +import os +import shutil class MainWnd(QWidget): def __init__(self, p_parent = None): @@ -45,12 +47,12 @@ class MainWnd(QWidget): w_profile = json.loads(w_jsonProfile) w_profiles.append(w_profile) - with open("profiles.dat", "wb") as f: + with open(self.getSettingsPath("profiles.dat"), "wb") as f: pickle.dump(w_profiles, f, pickle.HIGHEST_PROTOCOL) def loadFromDatabase(self): w_profiles = [] - with open("profiles.dat", "rb") as f: + with open(self.getSettingsPath("profiles.dat"), "rb") as f: w_profiles = pickle.load(f) for w_profile in w_profiles: @@ -60,6 +62,15 @@ class MainWnd(QWidget): return len(w_profiles) + def getSettingsPath(self, setting): + home = os.path.expanduser("~") + '/.linvam/' + if not os.path.exists(home): + os.mkdir(home) + if not os.path.exists(home + setting): + shutil.copyfile(setting, home + setting) + + return home + setting + def loadTestProfiles(self): w_carProfileDict = { diff --git a/profileexecutor.py b/profileexecutor.py index 0753b0c..a89de52 100644 --- a/profileexecutor.py +++ b/profileexecutor.py @@ -3,6 +3,7 @@ from pynput.mouse import Button, Controller import time import threading import os, pyaudio +import shutil from pocketsphinx.pocketsphinx import * from sphinxbase.sphinxbase import * @@ -28,12 +29,21 @@ class ProfileExecutor(threading.Thread): # Process audio chunk by chunk. On keyword detected perform action and restart search self.m_decoder = Decoder(self.m_config) + def getSettingsPath(self, setting): + home = os.path.expanduser("~") + '/.linvam/' + if not os.path.exists(home): + os.mkdir(home) + if not os.path.exists(home + setting): + shutil.copyfile(setting, home + setting) + + return home + setting + def setProfile(self, p_profile): self.m_profile = p_profile if self.m_profile == None: return - w_commandWordFile = open('command.list', 'w') + w_commandWordFile = open(self.getSettingsPath('command.list'), 'w') w_commands = self.m_profile['commands'] i = 0 for w_command in w_commands: @@ -42,7 +52,7 @@ class ProfileExecutor(threading.Thread): w_commandWordFile.write(w_command['name'] + ' /1e-%d/' % w_command['threshold']) i = i + 1 w_commandWordFile.close() - self.m_config.set_string('-kws', 'command.list') + self.m_config.set_string('-kws', self.getSettingsPath('command.list')) def setEnableListening(self, p_enable): self.m_listening = p_enable