PyScore

01: # -*- python -*-
02: #### guiutils.py #### python package PyScore.utility module guiutils ####
03: 
04: # PyScore
05: # a race scoring programme
06: # written by Matt Draisey
07: # 2004 April 6
08: 
09: reloadable=True
10: reloadables=[]
11: 
12: #### guiutils.py #### python package PyScore.utility module guiutils ####
13: 
14: import gtk,gobject
15: 
16: # public keyboard control helpers
17: 
18: cursor_mover={}
19: for (keyname,step,count) in (
20:     ("Home",        8,-1),
21:     ("KP_Home",     8,-1),
22:     ("Page_Up",     7,-1),
23:     ("KP_Page_Up",  7,-1),
24:     ("Up",          3,-1),
25:     ("KP_Up",       3,-1),
26:     ("Down",        3, 1),
27:     ("KP_Down",     3, 1),
28:     ("Page_Down",   7, 1),
29:     ("KP_Page_Down",7, 1),
30:     ("End",         8, 1),
31:     ("KP_End",      8, 1),
32: ):
33:     cursor_mover[gtk.gdk.keyval_from_name(keyname)]=(step,count)
34: 
35: def page_cursor_move(rowpath,rsize,step,count):
36:     if isinstance(rowpath,tuple) and len(rowpath)==1:
37:         (r,)=rowpath
38:     elif isinstance(rowpath,int):
39:         r=rowpath
40:     else:
41:         r=0
42:     if step==3:
43:         r+=count
44:     elif step==7:
45:         r+=count*4
46:     elif step==8:
47:         r+=count*rsize
48:     else:
49:         raise `step,count`
50:     if r<0:
51:         r=0
52:     elif r>=rsize:
53:         r=rsize-1
54:     if isinstance(rowpath,tuple) and len(rowpath)==1:
55:         return (r,)
56:     else:
57:         return r
58: 
59: # the gui reloader interface
60: 
61: def reloader(m,visited):
62:     if m not in visited:
63:         visited[m]=None
64:         try:
65:             m.__dict__
66:         except AttributeError:
67:             pass
68:         else:
69:             if "reloadables" in m.__dict__:
70:                 for n in m.reloadables:
71:                     reloader(n,visited)
72:             if "reloadable" in m.__dict__:
73:                 if m.reloadable:
74:                     print "reloading: ",m.__name__
75:                     reload(m)
76: 
77: #### guiutils.py #### python package PyScore.utility module guiutils ####