mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-12-27 22:14:57 +03:00
92 lines
2.9 KiB
Python
92 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import platform
|
|
import sys
|
|
from PyQt4.QtGui import QFileDialog
|
|
|
|
from util import (
|
|
doAlert,
|
|
doQuestion,
|
|
)
|
|
|
|
|
|
class Moses():
|
|
def __init__(self):
|
|
pass
|
|
|
|
def findRegistryPath(self):
|
|
import _winreg
|
|
key = None
|
|
path = None
|
|
try:
|
|
reg = _winreg.ConnectRegistry(None, _winreg.HKEY_CURRENT_USER)
|
|
key = _winreg.OpenKey(
|
|
reg, r'Software\Moses Core Team\MosesDecoder')
|
|
value, type = _winreg.QueryValueEx(key, 'Path')
|
|
path = value
|
|
except Exception, e:
|
|
print >> sys.stderr, str(e)
|
|
return None
|
|
finally:
|
|
if key:
|
|
_winreg.CloseKey(key)
|
|
return path
|
|
|
|
def checkMosesInstall(self):
|
|
for func in (self.getMosesCmd, self.getTokenizer, self.getDetokenizer, self.getTruecase, self.getDetruecase):
|
|
if not os.path.exists(func()):
|
|
doAlert(
|
|
"Missing executables in Moses installation path [%s], "
|
|
"exit." % self.mosesPath)
|
|
return False
|
|
return True
|
|
|
|
def detect(self):
|
|
pf = platform.system()
|
|
if pf == 'Windows':
|
|
self.mosesPath = self.findRegistryPath()
|
|
if self.mosesPath:
|
|
return self.checkMosesInstall()
|
|
else:
|
|
if not doQuestion(
|
|
'Cannot find Moses installation, click "Yes" to '
|
|
'manually set the Moses path, click "No" to exit.'):
|
|
return False
|
|
# If not found, use a dialog.
|
|
startdir = 'C:\\'
|
|
if "ProgramFiles(x86)" in os.environ:
|
|
startdir = os.environ["ProgramFiles(x86)"]
|
|
elif "ProgramFiles" in os.environ:
|
|
startdir = os.environ["ProgramFiles"]
|
|
else:
|
|
pass
|
|
dialog = QFileDialog(None, directory=startdir)
|
|
dialog.setFileMode(QFileDialog.Directory)
|
|
dialog.setViewMode(QFileDialog.Detail)
|
|
dialog.setOptions(QFileDialog.ShowDirsOnly)
|
|
if dialog.exec_():
|
|
self.mosesPath = str(dialog.selectedFiles()[0])
|
|
return self.checkMosesInstall()
|
|
else:
|
|
doAlert("Failed to find Moses Installation path, exit.")
|
|
return False
|
|
else:
|
|
doAlert("Platform %s not supported yet" % pf)
|
|
return False
|
|
|
|
def getMosesCmd(self):
|
|
return os.path.join(self.mosesPath, 'moses-cmd.exe')
|
|
|
|
def getTokenizer(self):
|
|
return os.path.join(self.mosesPath, 'tokenizer.exe')
|
|
|
|
def getDetokenizer(self):
|
|
return os.path.join(self.mosesPath, 'detokenizer.exe')
|
|
|
|
def getTruecase(self):
|
|
return os.path.join(self.mosesPath, 'truecase.exe')
|
|
|
|
def getDetruecase(self):
|
|
return os.path.join(self.mosesPath, 'detruecase.exe')
|