File: Record.py

package info (click to toggle)
cain 1.10%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 29,848 kB
  • sloc: cpp: 49,612; python: 14,988; xml: 11,654; ansic: 3,644; makefile: 129; sh: 2
file content (77 lines) | stat: -rw-r--r-- 2,838 bytes parent folder | download | duplicates (4)
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
"""The species and reactions to record."""

import wx
import sys
import os, os.path

from CheckBoxSelectAll import CheckBoxSelectAll

class Record(wx.Notebook):
    """The species and reactions to record."""
    
    def __init__(self, parent):
        wx.Notebook.__init__(self, parent)

        # CONTINUE: I want to display this information for the tabs, not on
        # the whole window. Currently this does not work for linux.
        if sys.platform in ('darwin', 'win32', 'win64'):
            self.SetToolTip(wx.ToolTip('Before you launch a simulation, select the species and reactions to record. For histogram output you can record only species populations. If you change a model, hit the refresh button to update the lists.'))
        self.species = CheckBoxSelectAll(self, None, size=(150, 200))
        self.reactions = CheckBoxSelectAll(self, None, size=(150, 200))
        self.AddPage(self.species, 'Species', True)
        self.AddPage(self.reactions, 'Reactions', False)

    def set(self, species, reactions):
        self.species.set(species)
        self.reactions.set(reactions)

    def get(self):
        """Get the checked species and the checked reactions."""
        return (self.species.get(), self.reactions.get())

    def isValid(self, species, reactions):
        """Return true if the lists of the species and reactions are the same
        as those specified."""
        return self.species.areEqual(species) and\
            self.reactions.areEqual(reactions)

    def checkAll(self, value):
        self.species.checkAll(value)
        self.reactions.checkAll(value)

    def checkSpecies(self, value):
        self.species.checkAll(value)

    def checkList(self, species, reactions):
        self.species.checkList(species)
        self.reactions.checkList(reactions)

    def enable(self):
        self.species.enable()
        self.reactions.enable()

    def disable(self):
        self.species.disable()
        self.reactions.disable()


if __name__ == '__main__':
    class TestFrame(wx.Frame):
        def __init__(self, parent=None):
            wx.Frame.__init__(self, parent, title='Record',
                              size=(300,400))
            panel = Record(self)
            panel.set(['s1', 's2', 's3'],
                      ['TheFirstReaction', 'r2', 'r3', 'r4', 'r5', 'r6', 'r7',
                       'r8'])
            assert panel.isValid(['s1', 's2', 's3'],
                                 ['TheFirstReaction', 'r2', 'r3', 'r4', 'r5',
                                  'r6', 'r7', 'r8'])
            assert not panel.isValid(['s1', 's2', 's4'],
                                     ['TheFirstReaction', 'r2', 'r3', 'r4',
                                      'r5', 'r6', 'r7', 'r8'])

    app = wx.PySimpleApp()
    frame = TestFrame()
    frame.Show()
    app.MainLoop()