[Bio] / ModelEditor / ModelEditor Repository:
ViewVC logotype

Annotation of /ModelEditor/ModelEditor

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (view) (download)

1 : efrank 1.1 #!/usr/bin/env python
2 :    
3 : efrank 1.4 #import signal
4 : efrank 1.1 from wxPython.wx import *
5 :    
6 : efrank 1.7 from KahApp.KahConfigMgr import KahConfigMgr
7 : efrank 1.1 from ModelEditor.MainLayout import MainLayout
8 :     from ModelEditor.RXpanel import RXPanel
9 :     from ModelEditor.RecoElempanel import RecoElempanel
10 :     from ModelEditor.Catalogpanel import Catalogpanel
11 :     from ModelEditor.MetabolitePanel import MetabolitePanel
12 :     from ModelEditor.EnzymeWindow import EnzymeWindow
13 :     from ModelEditor.HelpPanel import HelpPanel
14 :     from ModelEditor.FontManager import FontManager
15 :     from ModelEditor.MainMenuBar import MainMenuBar
16 : efrank 1.7 from KahChemDb.KahChemDbDataFactory import KahChemDbDataFactory
17 :     from KahDataServices.KahDbDataFactory import KahDbDataFactory
18 : efrank 1.1 from CatalogServices.Catalog import Catalog
19 :    
20 :     #need to change panel to Panel. lower case panel is already in cvs.
21 :    
22 :     from wxPython.grid import *
23 :    
24 :    
25 :     class MyApp(wxApp):
26 :     def OnInit(self):
27 :     frame = Gui(None, -1, "test")
28 :     frame.Show()
29 :     return 1
30 :    
31 :    
32 :     class Gui(MainLayout):
33 :    
34 :     def __init__(self, *args, **kwds):
35 :    
36 :     #self.factoryMgr = None
37 :     MainLayout.__init__(self, *args, **kwds)
38 :    
39 : efrank 1.7 self.configMgr = KahConfigMgr()
40 :     self.setupConfig()
41 :    
42 : efrank 1.1 self.rootId = None # root ID for recoelem tree. why here??
43 :     self.catalogRootId = None # root ID for catalog tree.
44 :     self.fontManager = FontManager(self)
45 :     self.mainMenuBar = MainMenuBar(self)
46 :     self.rx = RXPanel(self)
47 :     self.re = RecoElempanel(self)
48 :     self.cat = Catalogpanel(self)
49 :     self.met = MetabolitePanel(self)
50 :     self.enzyme = EnzymeWindow(self)
51 :     self.help = HelpPanel(self)
52 : efrank 1.2 self.meAGMgr = None #MeAGMgr instance to manage ag issues
53 : efrank 1.1
54 : efrank 1.3 EVT_CLOSE(self, self.mainMenuBar.exitApp)
55 :    
56 : efrank 1.4 #signal.signal(signal.SIGINT, self.signalHandler)
57 :     #signal.signal(signal.SIGTERM, self.signalHandler)
58 :     #signal.signal(signal.SIGHUP, self.signalHandler)
59 :    
60 : efrank 1.7 self.doDefaultDataFactories()
61 :     self.doInitialPlugins()
62 :    
63 :     return
64 :    
65 :     #------------------------------------------------------------------------
66 :     def getConfigMgr( self ):
67 :     #------------------------------------------------------------------------
68 :     return self.configMgr
69 :    
70 :     #------------------------------------------------------------------------
71 :     def setupConfig( self ):
72 :     #------------------------------------------------------------------------
73 :    
74 :     # Config ourselves. Unusual usage of configMgr.
75 :    
76 :     self.configMgr.newSection( "ModelEditor" )
77 :     cfg = self.configMgr.getSection( "ModelEditor" )
78 :    
79 :     cfg.regString( "DefaultDataFactory", "kahchoo/bss@db02" )
80 :     cfg.regString( "DefaultDataFactoryDbType", "oracle" )
81 :     cfg.regString( "DefaultChemDb", "pgsql:5432:kahdb:trust:inme" )
82 :     cfg.regString( "DefaultChemDbType", "postgres" )
83 :     cfg.regStringList( "PluginList", [] )
84 :    
85 :     # now load the config
86 :    
87 :     self.configMgr.loadConfigFile( "ModelEditor.cfg" )
88 :     self.configMgr.dump()
89 :     return
90 :    
91 :    
92 :     #------------------------------------------------------------------------
93 :     def doDefaultDataFactories(self):
94 :     #------------------------------------------------------------------------
95 :    
96 :     cfg = self.configMgr.getSection( "ModelEditor" )
97 :     ddf = cfg.getString("DefaultDataFactory")
98 :     ddft = cfg.getString( "DefaultDataFactoryDbType")
99 :     dchem = cfg.getString( "DefaultChemDb")
100 :     dchemt = cfg.getString( "DefaultChemDbType")
101 :    
102 : efrank 1.8 # nb: making these datafactories auto registeres them in catalog
103 : efrank 1.9
104 : efrank 1.1 try:
105 : efrank 1.9 chem = KahChemDbDataFactory( dchem, dchemt )
106 : efrank 1.8 except NotImplementedError:
107 :     pass
108 :    
109 :     try:
110 : efrank 1.9 df = KahDbDataFactory( ddf, ddft )
111 : efrank 1.1 except NotImplementedError:
112 :     pass
113 :    
114 :     return
115 :    
116 : efrank 1.7 #------------------------------------------------------------------------
117 :     def doInitialPlugins(self):
118 :     #------------------------------------------------------------------------
119 :    
120 :     cfg = self.configMgr.getSection( "ModelEditor" )
121 :    
122 :     pluginList = cfg.getStringList("PluginList")
123 :     for p in pluginList:
124 :     print "trying to get plugin named: ", p
125 :    
126 :     try:
127 :     self.mainMenuBar.doAddPlugIn( p )
128 :     except ImportError, e:
129 :     print "Could not import %s: %s" % (p, e)
130 :     except LookupError:
131 :     print "No register hook called 'register' found in plugin"
132 :    
133 :     return
134 :    
135 :     #------------------------------------------------------------------------
136 : efrank 1.1 def error( self, message):
137 : efrank 1.7 #------------------------------------------------------------------------
138 : efrank 1.1 dlg = wxMessageDialog(self, message, style=wxOK)
139 :     dlg.ShowModal()
140 :     dlg.Destroy()
141 :     return
142 :    
143 : efrank 1.4 #------------------------------------------------------------------------
144 :     def signalHandler(self, signum, frame):
145 :     #------------------------------------------------------------------------
146 :     """
147 :     signal handler for sigint, sigterm, and sigHUP to let us close down cleanly.
148 :     We need to disconnect from AG.
149 :     """
150 :    
151 :     print "ModelEditor:signalHandler: caught signal=", signum
152 :    
153 :     try:
154 :     theMgr = self.cat.meAGMgr
155 :     if (not theMgr == None):
156 :     theMgr.done()
157 :     except Exception, e:
158 :     print e
159 :    
160 :     self.mainMenuBar.exitApp(None)
161 :     return
162 :    
163 :    
164 : efrank 1.1 ########################################################################
165 :     if __name__ == "__main__":
166 :     app = MyApp(0)
167 :     app.MainLoop()
168 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3