# -*- coding: utf-8 -*- # from PortGlosa import traduzir import os import select import socket import subprocess import sys import threading import time import vlibrashook from PortGlosa import traduzir class Servent(): def __init__(self): self.__sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # self.__sock.setblocking(1) def receive(self, connection, address_nvda): try: while True: data = connection.recv(1024) if len(data) > 0: print("Received: %s %s" % (address_nvda, data)) if (self.client.connected()): #translated = data print "Traduzindo." translated = traduzir(data + "\n") print("Translated: %s" % (translated)) if (self.client.send(translated)): print("Sent: %s" % (translated)) else: break except Exception as e: try: connection.shutdown(1) connection.close(1) except Exception as e: pass def accept(self, host = "127.0.0.1", port = 10001): self.client = vlibrashook.client(host, 10000) self.client.start() self.__sock.bind((host, port)) self.__sock.listen(1) time.sleep(1) print("Listen: %s:%s" % (host, port)) while True: print("Waiting for NVDA client: %s:%s" % (host, port)) (connection, address_nvda) = self.__sock.accept() print("Client NVDA connected!") # --------------------------------------------------------------------------------- # single thread # --------------------------------------------------------------------------------- self.receive(connection, address_nvda) # --------------------------------------------------------------------------------- # multithread # --------------------------------------------------------------------------------- # t = threading.Thread(target = self.receive, args = ((connection, address_nvda))) # self.__threadlist.append(t) # t.start() def file_exists(file_path): if ((os.path.isfile(file_path) == 1) and (os.path.exists(file_path) == 1)): return True else: return False def main(): nvda_slave_x86 = "C:\\Program Files (x86)\\NVDA\\nvda_slave.exe" nvda_slave_x64 = "C:\\Program Files\\NVDA\\nvda_slave.exe" if (file_exists(nvda_slave_x86)): nvda_slave = nvda_slave_x86 elif(file_exists(nvda_slave_x64)): nvda_slave = nvda_slave_x64 else: print("NVDA slave not found: %s" % (nvda_slave_x86)) print("NVDA slave not found: %s" % (nvda_slave_x64)) sys.exit(1) # try: # # subprocess.call(["python", ".\\nvda\\source\\nvda.pyw"]) # nvdaproc = subprocess.call([nvda_slave, "launchNVDA", "-r"]) # except: # print("Erro no subprocesso NVDA") # sys.exit(1) servent = Servent() servent.accept() if __name__ == "__main__": main()