app = App(basedir)
return app.run()
-ABORT_EVENT_ID = wx.NewId()
-
-class AbortEvent(wx.PyEvent):
- def __init__(self, failure):
- wx.PyEvent.__init__(self)
- self.SetEventType(ABORT_EVENT_ID)
- self.failure = failure
-
class MacGuiClient(client.Client):
def __init__(self, basedir, app):
self.app = app
client.Client.__init__(self, basedir)
- def _abort_process(self, failure):
- event = AbortEvent(failure)
- wx.PostEvent(self.app.guiapp.frame, event)
+ def _service_startup_failed(self, failure):
+ wx.CallAfter(self.wx_abort, failure)
+ log.msg('node service startup failed')
+ log.err(failure)
+
+ def wx_abort(self, failure):
+ wx.MessageBox(failure.getTraceback(), 'Fatal Error in Node startup')
+ self.app.guiapp.ExitMainLoop()
class App(object):
def __init__(self, basedir):
MOUNT_ID = wx.NewId()
class SplashFrame(wx.Frame):
- def __init__(self, app):
+ def __init__(self):
wx.Frame.__init__(self, None, -1, 'Allmydata Tahoe')
- self.app = app
self.SetSizeHints(100, 100, 600, 800)
self.SetIcon(amdicon.getIcon())
self.Fit()
self.Layout()
- # plumb up event handler for abort
- self.Connect(-1, -1, ABORT_EVENT_ID, self.wx_abort)
-
def on_close(self, event):
self.Show(False)
- def wx_abort(self, event):
- wx.MessageBox(event.failure.getTraceback(), 'Fatal Error in Node startup')
- self.app.ExitMainLoop()
-
class SplashPanel(wx.Panel):
def __init__(self, parent, on_close):
wx.Panel.__init__(self, parent, -1)
def OnInit(self):
try:
- self.frame = SplashFrame(self)
+ self.frame = SplashFrame()
self.frame.Show(True)
self.SetTopWindow(self.frame)
self._tub_ready_observerlist.fire(self)
return self
d.addCallback(_ready)
- def _die(failure):
- self.log('_startService() failed')
- log.err(failure)
- print "Node._startService failed, aborting"
- print failure
- #reactor.stop() # for unknown reasons, reactor.stop() isn't working. [ ] TODO
- self._abort_process(failure)
- d.addErrback(_die)
-
- def _abort_process(self, failure):
+ d.addErrback(self._service_startup_failed)
+
+ def _service_startup_failed(self, failure):
+ self.log('_startService() failed')
+ log.err(failure)
+ print "Node._startService failed, aborting"
+ print failure
+ #reactor.stop() # for unknown reasons, reactor.stop() isn't working. [ ] TODO
self.log('calling os.abort()')
- log('calling os.abort()')
+ log.msg('calling os.abort()')
print "calling os.abort()"
os.abort()