Back to index

python-biopython  1.60
Public Member Functions | Public Attributes
xbb_widget.xbb_widget Class Reference

List of all members.

Public Member Functions

def __init__
def init_variables
def init_colors
def init_optionsdb
def create_menu
def set_codon_table
def exit
def create_seqinfo
def create_buttons
def create_seqfield
def create_bindings
def zero
def get_length
def select_all
def select
def get_selection_or_sequence
def get_selection
def get_self_selection
def count_selection
def position
def open
def insert_sequence
def fix_sequence
def update_label
def export
def gcframe
def translate
def extract
def statistics
def blast
def reverse
def complement
def antiparallel
def search
def goto
def mark

Public Attributes

 is_a_master
 parent
 main_frame
 info_frame
 seq_frame
 blastit
 seqwidth
 translation_tables
 translator
 colorsbg
 colorsfg
 colorsNT
 colorsPMWbg
 colorsPMWfg
 menubar
 file_menu
 edit_menu
 translation_menu
 current_codon_table
 current_codon_table_id
 gencode_menu
 tools_menu
 help_menu
 seq_info1
 position_ids
 seq_info2
 statistics_ids
 button_frame
 buttons
 goto_entry
 sequence_id
 sequence_length
 blaster

Detailed Description

Definition at line 29 of file xbb_widget.py.


Constructor & Destructor Documentation

def xbb_widget.xbb_widget.__init__ (   self,
  parent = None 
)

Definition at line 30 of file xbb_widget.py.

00030 
00031     def __init__(self, parent = None):
00032         self.is_a_master = (parent == None)
00033         self.parent = parent
00034             
00035         self.init_variables()
00036         self.init_colors()
00037         # master frame
00038         self.main_frame = Frame(parent)
00039         if not parent:
00040             self.init_optionsdb()
00041             self.parent = self.main_frame.master
00042             
00043         self.main_frame.pack(fill = BOTH, expand = 1)
00044         
00045         # sequence info (GC%, positins etc.)
00046         self.info_frame = Frame(self.main_frame)
00047         self.info_frame.pack(fill = BOTH, expand = 1)
00048         
00049         self.create_menu(self.info_frame)
00050         self.create_seqinfo(self.info_frame)
00051 
00052         # sequence field and fast buttons
00053         self.seq_frame = Frame(self.main_frame)
00054         self.seq_frame.pack(fill = BOTH, expand = 1)
00055         
00056         self.create_buttons(self.seq_frame)
00057         self.create_seqfield(self.seq_frame)
00058 
00059         self.create_bindings()
00060         self.blastit = 'xbb_blast.py'
        

Member Function Documentation

Definition at line 457 of file xbb_widget.py.

00457 
00458     def antiparallel(self):
00459         w = self.sequence_id
00460         w.selection_own()
00461         try:
00462             start, stop = w.tag_ranges(SEL)
00463         except:
00464             start, stop = 1.0, self.sequence_id.index(END)
00465 
00466         seq = w.get(start, stop)
00467         seq = re.sub('[^A-Z]','',seq)    
00468 
00469         antip = self.translator.antiparallel(seq)
00470         w.delete(start, stop)
00471         w.insert(start, antip)
00472         w.tag_remove(SEL, 1.0, start)
00473         w.tag_add(SEL, start, stop)
00474         w.tag_remove(SEL, stop, END)

Definition at line 415 of file xbb_widget.py.

00415 
00416     def blast(self):
00417         seq = self.get_selection_or_sequence()
00418         self.blaster = BlastIt(seq, self.parent)

Here is the call graph for this function:

Definition at line 438 of file xbb_widget.py.

00438 
00439     def complement(self):
00440         w = self.sequence_id
00441         w.selection_own()
00442         try:
00443             start, stop = w.tag_ranges(SEL)
00444         except:
00445             start, stop = 1.0, self.sequence_id.index(END)
00446 
00447         seq = w.get(start, stop)
00448         seq = re.sub('[^A-Z]','',seq)    
00449 
00450         #print 'seq >%s<' % seq
00451         complementary = self.translator.complement(seq)
00452         w.delete(start, stop)
00453         w.insert(start, complementary)
00454         w.tag_remove(SEL, 1.0, start)
00455         w.tag_add(SEL, start, stop)
00456         w.tag_remove(SEL, stop, END)
             
def xbb_widget.xbb_widget.count_selection (   self,
  event 
)

Definition at line 309 of file xbb_widget.py.

00309 
00310     def count_selection(self, event):
00311         w = self.sequence_id
00312         w.selection_own()
00313         try:
00314             a = int(w.index('sel.first').split('.')[1]) +1
00315             b = int(w.index('sel.last').split('.')[1])
00316             length = b - a + 1
00317 
00318             self.position_ids['from_id'].configure(text = 'Start:%d'% a)
00319             self.position_ids['to_id'].configure(text = 'Stop:%d'% b)
00320             self.position_ids['length_id'].configure(text = '%d nt' % length)
00321 
00322             self.statistics_ids['length_id'].configure(text = 'Length=%d' % length)
00323             seq = self.get_self_selection()
00324             for nt in ['A','C','G','T']:
00325                 n = seq.count(nt)
00326                 self.statistics_ids[nt].configure(text = '%s=%d' % (nt,n))
00327                 
00328             
00329         except:
00330             pass
        

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 253 of file xbb_widget.py.

00253 
00254     def create_bindings(self):
00255         self.sequence_id.bind('<Motion>', self.position)
00256         self.sequence_id.bind('<Leave>', lambda x,s = self:
00257                               s.position_ids['id'].configure(text = ''))
00258         self.sequence_id.bind('<1>', self.zero)
00259         self.sequence_id.bind('<B1-Motion>', self.count_selection)
00260         self.sequence_id.bind('<Double-Button-1>', self.select_all)
        

Here is the call graph for this function:

def xbb_widget.xbb_widget.create_buttons (   self,
  parent 
)

Definition at line 224 of file xbb_widget.py.

00224 
00225     def create_buttons(self, parent):
00226         self.button_frame = Frame(parent)
00227         self.button_frame.pack(fill = Y, side = LEFT)
00228         self.buttons = {}
00229         for text, func in [('Open', self.open),
00230                            ('Export', self.export),
00231                            ('GC Frame', self.gcframe),
00232                            ('Blast', self.blast),
00233                            ('Exit', self.exit)]:
00234             b_id = Button(self.button_frame, text = text,
00235                           command = func, width = 7)
00236             b_id.pack(side = TOP, pady = 5, padx = 10)
00237             self.buttons[text] = b_id
00238 
00239         f = Frame(self.button_frame)
00240         l = Label(f, text = 'Goto:', bg = self.colorsbg['frame'], fg = self.colorsfg['button'])
00241         l.pack(side = LEFT)
00242         l.bind('<Button-1>', self.goto)
00243         
00244         self.goto_entry = Entry(f, width = 5)
00245         self.goto_entry.pack(side = RIGHT, pady = 5, padx = 4)
00246         self.goto_entry.bind('<Return>', self.goto)
00247         f.pack(side = BOTTOM)
        
def xbb_widget.xbb_widget.create_menu (   self,
  parent 
)

Definition at line 124 of file xbb_widget.py.

00124 
00125     def create_menu(self, parent):
00126         self.menubar = Menu(self.main_frame)
00127         
00128         # File menu
00129         self.file_menu = Menu(self.menubar)
00130         menu = self.file_menu
00131         menu.add_command(label='Exit', command = self.exit)
00132         self.menubar.add_cascade(label="File", menu=self.file_menu)
00133 
00134         # Edit menu
00135         self.edit_menu = Menu(self.menubar)
00136         menu = self.edit_menu
00137         menu.add_command(label='Complement', command = self.complement)
00138         menu.add_command(label='Antiparallel', command = self.antiparallel)
00139         menu.add_command(label='Reverse', command = self.reverse)
00140         menu.add_command(label='Fix sequence', command = self.fix_sequence)
00141         menu.add_command(label='Search', command = self.search)
00142         self.menubar.add_cascade(label="Edit", menu=self.edit_menu)
00143 
00144         # Translation menu
00145         self.translation_menu = Menu(self.menubar)
00146         menu = self.translation_menu
00147         menu.add_command(label='+1 Frame', command = self.translate)
00148         menu.add_command(label='6 Frames', command = self.gcframe)
00149         menu.add_command(label='Extract to FASTA', command = self.extract)
00150 
00151         self.current_codon_table = StringVar()
00152         self.current_codon_table.set('Standard')
00153         self.current_codon_table_id = 1
00154         
00155         keys = self.translation_tables.keys()
00156         keys.remove('Standard')
00157         keys.sort()
00158         keys = ['Standard'] + keys
00159 
00160         self.gencode_menu = Menu(self.translation_menu)
00161         menu = self.gencode_menu
00162         for table in keys:
00163             menu.add_radiobutton(label=table, command = self.set_codon_table, variable = self.current_codon_table)
00164         self.translation_menu.add_cascade(label="Genetic Codes", menu=self.gencode_menu)
00165 
00166 
00167         self.menubar.add_cascade(label="Translations", menu=self.translation_menu)
00168 
00169         # Tools menu
00170         self.tools_menu = Menu(self.menubar)
00171         menu = self.tools_menu
00172         menu.add_command(label='Blast', command = self.blast)
00173         menu.add_command(label='Stats', command = self.statistics)
00174         self.menubar.add_cascade(label="Tools", menu=self.tools_menu)
00175         
00176         # Help menu
00177         self.help_menu = Menu(self.menubar, name = 'help')
00178         menu = self.help_menu
00179         menu.add_command(label='Help', command = xbbtools_help)
00180         self.menubar.add_cascade(label="Help", menu=self.help_menu)
00181 
00182         self.parent.config(menu = self.menubar)

def xbb_widget.xbb_widget.create_seqfield (   self,
  parent 
)

Definition at line 248 of file xbb_widget.py.

00248 
00249     def create_seqfield(self, parent):
00250         self.sequence_id = Text(parent, wrap = 'char',
00251                                 width = self.seqwidth)
00252         self.sequence_id.pack(fill = BOTH, expand = 1, side = RIGHT)

def xbb_widget.xbb_widget.create_seqinfo (   self,
  parent 
)

Definition at line 193 of file xbb_widget.py.

00193 
00194     def create_seqinfo(self, parent):
00195         # all the sequence information in the top labels
00196         self.seq_info1 = Frame(parent, relief = RIDGE,
00197                                borderwidth = 5, height = 30)
00198         self.seq_info1.pack(fill = BOTH, expand = 1, side = TOP)
00199 
00200         self.position_ids = {}
00201         d = self.position_ids
00202         d['id'] = Label(self.seq_info1, width = 10)
00203         d['from_id'] = Label(self.seq_info1, width = 10)
00204         d['to_id'] = Label(self.seq_info1, width = 10)
00205         d['length_id'] = Label(self.seq_info1, width = 10)
00206         d['label'] = Label(self.seq_info1, width = 10)
00207         for i in ['id', 'from_id', 'to_id', 'length_id', 'label']:
00208             d[i].pack(side = LEFT, fill = BOTH, expand = 1)
00209 
00210 
00211         
00212         self.seq_info2 = Frame(parent, relief = RIDGE,
00213                                borderwidth = 5, height = 30)
00214         self.seq_info2.pack(fill = BOTH, expand = 1, side = TOP)
00215         self.statistics_ids = {}
00216         d = self.statistics_ids
00217         d['length_id'] = Label(self.seq_info2, width = 10)
00218         d['length_id'].pack(side = LEFT, fill = BOTH, expand = 1)
00219         for nt in ['A','C','G','T']:
00220             d[nt] = Label(self.seq_info2, width = 10, fg = self.colorsNT[nt])
00221             d[nt].pack(side = LEFT, fill = BOTH, expand = 1)
00222             
00223 
        
def xbb_widget.xbb_widget.exit (   self,
  args 
)

Definition at line 186 of file xbb_widget.py.

00186 
00187     def exit(self, *args):
00188         # depending on if this widget is the first created or a child widget
00189         if self.is_a_master:
00190             sys.exit(0)
00191         else:
00192             self.main_frame.destroy()
            

Definition at line 363 of file xbb_widget.py.

00363 
00364     def export(self):
00365         seq = self.get_self_selection()
00366         print seq, len(seq)
        

Here is the call graph for this function:

def xbb_widget.xbb_widget.extract (   self,
  frame = 1 
)

Definition at line 381 of file xbb_widget.py.

00381 
00382     def extract(self, frame = 1):
00383         seq = self.get_selection_or_sequence()
00384         if not seq: return
00385         aa_seq = self.translator.frame(seq, frame, self.current_codon_table_id)
00386         print '>%s<' % aa_seq
00387         aa_seq = re.sub('(.{50})','\\1\n',str(aa_seq))
00388         np = NotePad()
00389         tid = np.text_id()
00390         tid.insert(END,'>frame%d\n%s' % (frame,aa_seq))

Here is the call graph for this function:

Definition at line 351 of file xbb_widget.py.

00351 
00352     def fix_sequence(self):
00353         seq = self.sequence_id.get(1.0,END)
00354         seq = seq.upper()
00355         seq = re.sub('[^A-Z]','',seq)
00356         self.sequence_id.delete(0.0,END)
00357         self.sequence_id.insert(END, seq)
        

Here is the caller graph for this function:

Definition at line 367 of file xbb_widget.py.

00367 
00368     def gcframe(self):
00369         seq = self.get_selection_or_sequence()
00370         if not seq: return
00371         np = NotePad()
00372         tid = np.text_id()
00373         tid.insert(END, self.translator.gcframe(seq, self.current_codon_table_id))

Here is the call graph for this function:

Definition at line 266 of file xbb_widget.py.

00266 
00267     def get_length(self):
00268         self.sequence_length = len(self.sequence_id.get(1.0,END))
00269         return self.sequence_length
    

Here is the caller graph for this function:

Definition at line 289 of file xbb_widget.py.

00289 
00290     def get_selection(self):
00291         w = self.sequence_id
00292         #print w.selection_own()
00293         #w.selection_own()
00294         try:
00295             return w.selection_get()
00296             #return string.upper(w.get(sel.first, sel.last))
00297         except:
00298             return ''
        

Here is the caller graph for this function:

Definition at line 280 of file xbb_widget.py.

00280 
00281     def get_selection_or_sequence(self):
00282         w = self.sequence_id
00283         seq = self.get_selection()
00284         if not len(seq):
00285             seq = self.sequence_id.get(1.0,END)
00286 
00287         seq = re.sub('[^A-Z]','',seq)    
00288         return seq
    

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 299 of file xbb_widget.py.

00299 
00300     def get_self_selection(self):
00301         w = self.sequence_id
00302         #w.selection_own()
00303         try:
00304             return w.selection_get()
00305             #return string.upper(w.get(sel.first, sel.last))
00306             #return string.upper(w.selection_own_get())
00307         except:
00308             return ''
        

Here is the caller graph for this function:

def xbb_widget.xbb_widget.goto (   self,
  args 
)

Definition at line 479 of file xbb_widget.py.

00479 
00480     def goto(self, *args):
00481         pos = self.goto_entry.get()
00482         try:
00483             pos = int(pos) -1
00484         except:
00485             try:
00486                 start, stop = pos.split(':')
00487                 start = int(start)-1
00488                 stop = int(stop)
00489                 self.mark(start, stop)
00490                 return
00491             except:
00492                 import traceback
00493                 traceback.print_exc()
00494 
00495                 self.goto_entry.delete(0,END)
00496                 return
00497             
00498         self.sequence_id.focus()
00499         self.sequence_id.mark_set('insert','1.%d' % pos)

Here is the call graph for this function:

Definition at line 68 of file xbb_widget.py.

00068 
00069     def init_colors(self):
00070         self.colorsbg = {'frame':'brown',
00071                          'canvas':'brown',
00072                          'button':'darkgreen',
00073                          'radiobutton':'darkgrey',
00074                          'checkbutton':'darkgrey',
00075                          'label':'dimgrey',
00076                          'text':'bisque1',
00077                          'entry':'bisque1',
00078                          'menu':'darkgreen',
00079                          'menubutton':'darkgreen',
00080                          'seqinfo':'dimgrey'}
00081         self.colorsfg = {'button':'lightblue',
00082                          'radiobutton':'lightblue',
00083                          'checkbutton':'lightblue',
00084                          'label':'green3',
00085                          'text':'black',
00086                          'entry':'black',
00087                          'menu':'black',
00088                          'menubutton':'lightblue'}
00089         self.colorsNT = {'A':'green',
00090                          'C':'lightblue',
00091                          'G':'orange',
00092                          'T':'tomato'
00093                          }
00094 
00095         self.colorsPMWbg = {
00096             'ComboBox':'darkgreen',
00097             'ComboBox.Label':'darkgreen',
00098             }
00099         
00100         self.colorsPMWfg = {
00101             'ComboBox.Label':'lightblue',
00102             }
00103 

Definition at line 104 of file xbb_widget.py.

00104 
00105     def init_optionsdb(self):
00106         # does anybody know a better way of defining colors ?
00107         # how would one implement Tk's -class ?
00108         tk = self.main_frame.master
00109         for k,v in self.colorsbg.items():
00110             name = '*' + k[0].upper() + k[1:] + '.background'
00111             tk.option_add(name, v)
00112 
00113         for k,v in self.colorsfg.items():
00114             name = '*' + k[0].upper() + k[1:] + '.foreground'
00115             tk.option_add(name, v)
00116             
00117         for k,v in self.colorsPMWbg.items():
00118             name = '*' + k[0].upper() + k[1:] + '.background'
00119             tk.option_add(name, v)
00120 
00121         for k,v in self.colorsPMWfg.items():
00122             name = '*' + k[0].upper() + k[1:] + '.foreground'
00123             tk.option_add(name, v)
            

Definition at line 61 of file xbb_widget.py.

00061 
00062     def init_variables(self):
00063         self.seqwidth = 60
00064         self.translation_tables = {}
00065         for i, table in CodonTable.unambiguous_dna_by_id.iteritems():
00066             self.translation_tables[table.names[0]] = i
00067         self.translator = xbb_translations()

def xbb_widget.xbb_widget.insert_sequence (   self,
  name,
  sequence 
)

Definition at line 345 of file xbb_widget.py.

00345 
00346     def insert_sequence(self, (name, sequence)):
00347         self.sequence_id.delete(0.0, END)
00348         self.sequence_id.insert(END, sequence.upper())
00349         self.fix_sequence()
00350         self.update_label(name)

Here is the call graph for this function:

Here is the caller graph for this function:

def xbb_widget.xbb_widget.mark (   self,
  start,
  stop 
)

Definition at line 500 of file xbb_widget.py.

00500 
00501     def mark(self, start, stop):
00502         self.sequence_id.focus()
00503         self.sequence_id.mark_set('insert','1.%d' % start)
00504         self.sequence_id.tag_add(SEL, '1.%d' % start, '1.%d' % stop)
        

Here is the caller graph for this function:

def xbb_widget.xbb_widget.open (   self,
  file = None 
)

Definition at line 338 of file xbb_widget.py.

00338 
00339     def open(self, file = None):
00340         if not file:
00341             file = askopenfilename()
00342         if not file: return
00343         genes = quick_FASTA_reader(file)
00344         self.insert_sequence(genes[0])

Here is the call graph for this function:

Here is the caller graph for this function:

def xbb_widget.xbb_widget.position (   self,
  event 
)

Definition at line 331 of file xbb_widget.py.

00331 
00332     def position(self, event):
00333         x = event.x
00334         y = event.y
00335         pos = self.sequence_id.index('@%d,%d' % (x,y)).split('.')
00336         pos = int(pos[1]) + 1
00337         self.position_ids['id'].configure(text = str(pos))
        

Here is the caller graph for this function:

Definition at line 419 of file xbb_widget.py.

00419 
00420     def reverse(self):
00421         w = self.sequence_id
00422         w.selection_own()
00423         try:
00424             start, stop = w.tag_ranges(SEL)
00425         except:
00426             start, stop = 1.0, self.sequence_id.index(END)
00427 
00428         seq = w.get(start, stop)
00429         seq = map(None,re.sub('[^A-Z]','',seq))
00430         seq.reverse()
00431         seq = ''.join(seq)
00432 
00433         w.delete(start, stop)
00434         w.insert(start, seq)
00435         w.tag_remove(SEL, 1.0, start)
00436         w.tag_add(SEL, start, stop)
00437         w.tag_remove(SEL, stop, END)

Definition at line 475 of file xbb_widget.py.

00475 
00476     def search(self):
00477         seq = self.get_selection_or_sequence()
00478         searcher = XDNAsearch(seq, master = self.sequence_id, highlight = 1)

Here is the call graph for this function:

def xbb_widget.xbb_widget.select (   self,
  a,
  b 
)

Definition at line 274 of file xbb_widget.py.

00274 
00275     def select(self, a, b):
00276         w = self.sequence_id
00277         w.selection_own()
00278         w.tag_add('sel', '1.%d' % (a - 1), '1.%d' % b)
00279         self.count_selection(None)

Here is the call graph for this function:

Here is the caller graph for this function:

def xbb_widget.xbb_widget.select_all (   self,
  event 
)

Definition at line 270 of file xbb_widget.py.

00270 
00271     def select_all(self, event):
00272         self.select(1, self.get_length())
00273         self.count_selection(None)
        

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 183 of file xbb_widget.py.

00183 
00184     def set_codon_table(self):
00185         self.current_codon_table_id = self.translation_tables[self.current_codon_table.get()]
        

Definition at line 391 of file xbb_widget.py.

00391 
00392     def statistics(self):
00393         seq = self.get_selection_or_sequence()
00394         if not seq: return
00395         seq = seq.upper()
00396         aa = {'A':0,'C':0,'G':0,'T':0,'N':0}
00397         for nt in seq:
00398             if nt not in aa: nt = 'N'
00399             aa[nt] = aa[nt] + 1
00400 
00401         GC = (100.0*(aa['G'] + aa['C']))/len(seq)
00402         
00403         np = NotePad()
00404         tid = np.text_id()
00405 
00406         tid.insert(END,"""%s
00407 
00408 Length = %d
00409 A=%d C=%d G=%d T=%d other=%d
00410 GC=%f
00411 
00412 """ % (time.strftime('%y %b %d, %X\n', time.localtime(time.time())),
00413                len(seq), aa['A'], aa['C'], aa['G'], aa['T'], aa['N'], GC)
00414                    )
        

Here is the call graph for this function:

def xbb_widget.xbb_widget.translate (   self,
  frame = 1 
)

Definition at line 374 of file xbb_widget.py.

00374 
00375     def translate(self, frame = 1):
00376         seq = self.get_selection_or_sequence()
00377         if not seq: return
00378         np = NotePad()
00379         tid = np.text_id()
00380         tid.insert(END, self.translator.frame_nice(seq, frame, self.current_codon_table_id))

Here is the call graph for this function:

def xbb_widget.xbb_widget.update_label (   self,
  header 
)

Definition at line 358 of file xbb_widget.py.

00358 
00359     def update_label(self, header):
00360         name = header.split(' ')[0]
00361         name = name.split(',')[0]
00362         self.position_ids['label'].configure(text = name)
        

Here is the caller graph for this function:

def xbb_widget.xbb_widget.zero (   self,
  event 
)

Definition at line 261 of file xbb_widget.py.

00261 
00262     def zero(self, event):
00263         p = self.position_ids
00264         for i in ['from_id', 'to_id', 'length_id']:
00265             self.position_ids[i].configure(text = '')

Here is the caller graph for this function:


Member Data Documentation

Definition at line 417 of file xbb_widget.py.

Definition at line 59 of file xbb_widget.py.

Definition at line 225 of file xbb_widget.py.

Definition at line 227 of file xbb_widget.py.

Definition at line 69 of file xbb_widget.py.

Definition at line 80 of file xbb_widget.py.

Definition at line 88 of file xbb_widget.py.

Definition at line 94 of file xbb_widget.py.

Definition at line 99 of file xbb_widget.py.

Definition at line 150 of file xbb_widget.py.

Definition at line 152 of file xbb_widget.py.

Definition at line 134 of file xbb_widget.py.

Definition at line 128 of file xbb_widget.py.

Definition at line 159 of file xbb_widget.py.

Definition at line 243 of file xbb_widget.py.

Definition at line 176 of file xbb_widget.py.

Definition at line 45 of file xbb_widget.py.

Definition at line 31 of file xbb_widget.py.

Definition at line 37 of file xbb_widget.py.

Definition at line 125 of file xbb_widget.py.

Definition at line 32 of file xbb_widget.py.

Definition at line 199 of file xbb_widget.py.

Definition at line 52 of file xbb_widget.py.

Definition at line 195 of file xbb_widget.py.

Definition at line 211 of file xbb_widget.py.

Definition at line 249 of file xbb_widget.py.

Definition at line 267 of file xbb_widget.py.

Definition at line 62 of file xbb_widget.py.

Definition at line 214 of file xbb_widget.py.

Definition at line 169 of file xbb_widget.py.

Definition at line 144 of file xbb_widget.py.

Definition at line 63 of file xbb_widget.py.

Definition at line 66 of file xbb_widget.py.


The documentation for this class was generated from the following file: