import socket, threading, thread, sys, asyncore, xbmc, xbmcgui
from time import *
from string import *
TIMEOUT = 15
PORT = 10629
class showCaller(xbmcgui.WindowDialog):
def __init__(self):
w = self.getWidth()
h = self.getHeight()
self.addControl(xbmcgui.ControlImage(w - 490, h - 240, 420, 170, 'special://home/scripts/CallerID/frame.png'))
self.addControl(xbmcgui.ControlLabel(w - 475, h - 229, 380, 20, 'Nummerpresentation', 'font13', '0xffffffff'))
self.addControl(xbmcgui.ControlLabel(w - 470, h - 173, 302, 128, data, 'font14', '0xff000000'))
self.a = -1
self.shown = 1
subThread = threading.Thread(target=self.SubthreadProc, args=())
subThread.start()
def SubthreadProc(self):
sleep(TIMEOUT)
if self.shown:
self.close()
def onAction(self, action):
if self.a == action:
self.shown = 0
self.close()
self.a = action
class Server(asyncore.dispatcher):
def __init__(self, host, port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.bind((host, port))
self.listen(1)
def handle_accept(self):
socket, address = self.accept()
ConnectionHandler(socket)
def handle_close(self):
self.close()
class ConnectionHandler(asyncore.dispatcher_with_send):
def handle_read(self):
self.buffer = self.recv(1024)
self.buffer = split(self.buffer[5:], "~")
self.close()
global data
if len(self.buffer) > 1:
name = self.buffer[0]
number = self.buffer[1]
data = number + "\n" + name
w = showCaller()
w.doModal()
del w
else:
data = self.buffer
s = Server('', PORT)
try:
asyncore.loop(timeout=2)
except xbmc.abortRequested == true:
s.close()
sys.exit()