Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/file/4a2341bc90b1/sandbox/wx-dc.py
Дата изменения: Unknown
Дата индексирования: Mon Feb 4 04:37:31 2013
Кодировка:
allpy: 4a2341bc90b1 sandbox/wx-dc.py

allpy

view sandbox/wx-dc.py @ 275:4a2341bc90b1

base.Sequence major cleanup * moved base.Sequence.secstr_has to pdb (it appears that secondary structure it uses is from PDB, which is not a nice thing to do; secondary structure is an entity in itself and must have same names across different sources) * removed stupid base.Sequence.monomers, since base.Sequence is subclass of list * removed all methods that reimplement list behaviour * fixed headers of base.Sequence.from_slice
author Daniil Alexeyevsky <me.dendik@gmail.com>
date Wed, 15 Dec 2010 20:06:27 +0300
parents
children 61e5d8e146c7
line source
1 #!/usr/bin/python
3 import wx
4 import bufferedcanvas
5 import common
7 class Text(bufferedcanvas.BufferedCanvas):
9 def __init__(self, seqs, *args, **kw):
10 self.seqs = seqs
11 self.font = wx.FFont(12, wx.FONTFAMILY_MODERN)
12 bufferedcanvas.BufferedCanvas.__init__(self, *args, **kw)
14 dc = wx.ClientDC(self)
15 dc.SetFont(self.font)
16 w = (len(seqs[0][1])+1) * dc.GetCharWidth()
17 h = (len(seqs)+1) * (dc.GetCharHeight() + 1)
18 self.size = w, h
19 self.SetVirtualSize(self.size)
21 self.Bind(wx.EVT_SCROLL, self.onPaint)
23 self.SetupScrolling()
25 def draw(self, dc):
26 dc.SetBackground(wx.Brush("White"))
27 dc.Clear()
28 dc.SetFont(self.font)
30 w = dc.GetCharWidth()
31 h = dc.GetCharHeight()
32 for i, (name, body, ids, colors) in enumerate(self.seqs):
33 for j in xrange(len(body)):
34 x = j * w
35 y = i * (h + 1)
36 dc.SetBrush(wx.Brush(colors[j]))
37 dc.SetPen(wx.Pen(colors[j]))
38 dc.DrawRectangle(x, y, x + w, y + h)
39 dc.SetPen(wx.Pen("Black"))
40 dc.DrawText(body[j], x, y)
42 if hasattr(self, 'size'):
43 self.SetVirtualSize(self.size)
45 seqs = common.autoload('data/small.fasta')
47 app = wx.App(False)
48 top = wx.Frame(None, title='Example', size=(500, 500))
49 text = Text(seqs, top)
50 top.Show(True)
52 app.MainLoop()