This file is indexed.

/usr/share/expeyes/eyes/GUIProgs/draw.py is in expeyes 3.1.5-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
from Tkinter import *

AXWIDTH = 30   # width of the axis display canvas

class disp:
    """
    Class for displaying items in a canvas using a world coordinate system. The range of the
    world coordinate system is specified by calling the setWorld method.
    """
    border = 0
    pad = 0
    bordcol = 'grey'     # Border color
    gridcol = 'grey'     # Grid color
    bgcolor = '#dbdbdb'  # background color for all 
    plotbg  = 'ivory'    # Plot window background color
    textcolor = 'blue'
    traces = []
    xtext = []
    ytext = []
    markerval = []
    markertext = None
       
    def __init__(self, parent, width=400., height=100.,color = 'ivory'):
	self.parent = parent
	self.SCX = width 
	self.SCY = height
	self.plotbg = color
	f = Frame(parent, bg = self.bgcolor, borderwidth = self.pad)
	f.pack(side=TOP)
	self.yaxis = Canvas(f, width = AXWIDTH, height = height, bg = self.bgcolor)
	self.yaxis.pack(side = LEFT, anchor = N, pady = self.border)
	f1 = Frame(f)
	f1.pack(side=LEFT)
	self.canvas = Canvas(f1, background = self.plotbg, width = width, height = height)
	self.canvas.pack(side = TOP)
        self.canvas.bind("<Button-1>", self.show_xy)
	self.xaxis = Canvas(f1, width = width, height = AXWIDTH, bg = self.bgcolor)
	self.xaxis.pack(side = LEFT, anchor = N, padx = self.border)
	self.canvas.create_rectangle ([(1,1),(width,height)], outline = self.bordcol)
	self.canvas.pack()
	Canvas(f, width = AXWIDTH, height = height, bg = self.bgcolor).pack(side=LEFT) # spacer only
	self.setWorld(0 , 0, self.SCX, self.SCY)   # initialize scale factors 
	self.grid(10,100)

    def setWorld(self, x1, y1, x2, y2):   #Calculates the scale factors 
	self.xmin = float(x1)
	self.ymin = float(y1)
	self.xmax = float(x2)
	self.ymax = float(y2)
	self.xscale = (self.xmax - self.xmin) / (self.SCX)
	self.yscale = (self.ymax - self.ymin) / (self.SCY)
      
    def w2s(self, p):	      # World to Screen xy conversion before plotting anything
	ip = []
	for xy in p:
		ix = self.border + int( (xy[0] - self.xmin) / self.xscale)
		iy = self.border + int( (xy[1] - self.ymin) / self.yscale)
		iy = self.SCY - iy
		ip.append((ix,iy))
	return ip

    def show_xy(self,event):   #Prints the XY coordinates of the current cursor position
	ix = self.canvas.canvasx(event.x) - self.border
	iy = self.SCY - self.canvas.canvasy(event.y) #- self.border
	x = ix * self.xscale + self.xmin
	y = iy * self.yscale + self.ymin
	s = 'x = %5.3f\ny = %5.3f' % (x,y)
	try:
		self.canvas.delete(self.markertext)
	except:
		pass
	self.markertext = self.canvas.create_text(self.border + 1,\
	self.SCY-1, anchor = SW, justify = LEFT, text = s)
	self.markerval = [x,y]

    def mark_axes(self, xlab='milli seconds', ylab='mV', numchans=1):
	# Draw the axis labels and values
        numchans = 1
        for t in self.xtext:	# display after dividing by scale factors
            self.xaxis.delete(t)
        for t in self.ytext:
            self.yaxis.delete(t)
        self.xtext = []
        self.ytext = []

        dx = float(self.SCX)/5
        for x in range(0,6):
            a = numchans * x *(self.xmax - self.xmin)/5 + self.xmin
            s = '%4.1f'%(a)
            adjust = 0
            if x == 0: adjust = 6
            if x == 5: adjust = -10
            t = self.xaxis.create_text(int(x*dx)+adjust,1,text = s, anchor=N, fill = self.textcolor)
            self.xtext.append(t)
        self.xtext.append(self.xaxis.create_text(int(self.SCX/2)\
            ,AXWIDTH, text = xlab, anchor=S, fill = self.textcolor))
            
        dy = float(self.SCY)/5
        for y in range(0,6):
            a = y*(self.ymax - self.ymin)/5	# + self.ymin
            if self.ymax > 99:
                s = '%4.0f'%(self.ymax-a)
            else:
                s = '%4.1f'%(self.ymax-a)
            adjust = 0
            if y == 0: adjust = 6
            if y == 5: adjust = -5
            t = self.yaxis.create_text(AXWIDTH, int(y*dy)+adjust, \
                text = s,anchor = E, fill = self.textcolor)
            self.ytext.append(t)
        self.ytext.append(self.yaxis.create_text(0,self.SCY/2,\
            text = ylab, anchor=W, fill = self.textcolor))

    def box(self, x1,  y1,  x2,  y2, col):
       ip = self.w2s([(x1,y1),(x2,y2)])
       self.canvas.create_rectangle(ip, outline=col)

    def line(self, points, col, permanent = False, smooth = True):
       ip = self.w2s(points)
       t = self.canvas.create_line(ip, fill=col, smooth = smooth)
       if permanent == False:
           self.traces.append(t)

    def delete_lines(self):
       for t in self.traces:
           self.canvas.delete(t)
       self.traces = []

    def grid(self, major, minor):
       dx = (self.xmax - self.xmin) / major
       dy = (self.ymax - self.ymin) / major
       x = self.xmin + dx
       while x < self.xmax:
         self.line([(x,self.ymin),(x,self.ymax)],self.gridcol, True)
         x = x +dx
       y = self.ymin + dy
       while y < self.ymax:
         self.line([(self.xmin,y),(self.xmax,y)],self.gridcol, True)
         y = y +dy

#------------------------------- disp class end --------------------------------------