You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeutils/superkaramba/examples/globalMouse/eyes.py

198 lines
4.7 KiB

#this import statement allows access to the karamba functions
import karamba
#import os
import string
import math
import re
import xcursor
linkePupille = ""
rechtePupille = ""
init = 0
#old curser pos
x_old = -1
y_old = -1
#widget size
w_width = 167
w_height = 111
#widget pos
w_x = 10
w_y = 850
#eye center
lx, ly = 39, 55
rx, ry = 126, 55
#eye size
la, lb = 25, 38
ra, rb = 25, 38
#pupille size
lp_width, lp_height = 11, 17
rp_width, rp_height = 11, 17
def pupille(mouse_x, mouse_y, eye_center_x, eye_center_y, eye_a, eye_b, widget_x, widget_y):
x = mouse_x - eye_center_x - widget_x
y = mouse_y - eye_center_y - widget_y
#print(x, y)
r = math.sqrt(x * x + y * y)
phi = math.atan2(y, x)
#print(phi * math.pi)
eye_x = eye_a * math.cos(phi)
eye_y = eye_b * math.sin(phi)
eye_r = math.sqrt(eye_x * eye_x + eye_y * eye_y)
if eye_r < r:
return int(eye_x + eye_center_x), int(eye_y + eye_center_y)
return int(x + eye_center_x), int(y + eye_center_y)
#this is called when you widget is initialized
def initWidget(widget):
global init
global linkePupille
global rechtePupille
init = 0
linkePupille = ""
rechtePupille = ""
#this is called everytime your widget is updated
#the update inverval is specified in the .theme file
def widgetUpdated(widget):
global init
global linkePupille
global rechtePupille
global w_width
global w_height
global w_x
global w_y
global lx
global ly
global la
global lb
global lp_width
global lp_height
global rx
global ry
global ra
global rb
global rp_width
global rp_height
global x_old
global y_old
if init == 0:
theme_path = karamba.getThemePath(widget) + "/"
# read widget coordinates from eyes.theme
# f = open(theme_path + "eyes.theme")
# karamba_line = ""
#while re.compile('KARAMBA').search(karamba_line) == None:
# karamba_line = f.readline()
#w_x = int(re.compile('X=([0-9]+)').search(karamba_line).group(1))
#w_y = int(re.compile('Y=([0-9]+)').search(karamba_line).group(1))
#f.close()
#karamba.createWidgetMask(widget, theme_path + "pics/mask.png")
linkePupille = karamba.createImage(widget, 15, 30, theme_path + "pics/pupille.png")
rechtePupille = karamba.createImage(widget, 100, 30, theme_path + "pics/pupille.png")
init = 1
karamba.redrawWidget(widget)
# query mouse-cursor position
x, y = xcursor.position()
#fp = os.popen("./xpos")
#output = fp.read()
#x, y = output.split()
#print(x, y)
if x != x_old or y != y_old:
x_old, y_old = x, y
# Get Widget Position
w_x, w_y = karamba.getWidgetPosition(widget)
# Calc left pupille
xp, yp = pupille (int(x), int(y), lx, ly, la, lb, w_x, w_y)
xp = xp - lp_width // 2
yp = yp - lp_height // 2
#print(xp, yp)
karamba.moveImage(widget, linkePupille, xp, yp)
# Calc right pupille
xp, yp = pupille (int(x), int(y), rx, ry, ra, rb, w_x, w_y)
xp = xp - rp_width // 2
yp = yp - rp_height // 2
#print(xp, yp)
karamba.moveImage(widget, rechtePupille, xp, yp)
karamba.redrawWidget(widget)
#This gets called everytime our widget is clicked.
#Notes:
# widget = reference to our widget
# x = x position (relative to our widget)
# y = y position (relative to our widget)
# botton = button clicked:
# 1 = Left Mouse Button
# 2 = Middle Mouse Button
# 3 = Right Mouse Button, but this will never happen
# because the right mouse button brings up the
# Karamba menu.
# 4,5 = Scroll wheel up and down
def widgetClicked(widget, x, y, button):
pass
#This gets called everytime our widget is clicked.
#Notes
# widget = reference to our widget
# x = x position (relative to our widget)
# y = y position (relative to our widget)
# botton = button being held:
# 0 = No Mouse Button
# 1 = Left Mouse Button
# 2 = Middle Mouse Button
# 3 = Right Mouse Button, but this will never happen
# because the right mouse button brings up the
# Karamba menu.
def widgetMouseMoved(widget, x, y, button):
#Warning: Don't do anything too intensive here
#You don't want to run some complex piece of code everytime the mouse moves
pass
#global linkePupille
#karamba.moveImage(widget, linkePupille, x, y)
#karamba.redrawWidget(widget)
# This will be printed when the widget loads.
print("Loaded Karamba Eyes")