class ProcessingFrame(wx.Frame): def __init__(self, *args, **kwds): wx.Frame.__init__(self, *args, **kwds) self.viewer = None self.toolbar = self.CreateToolBar(style=wx.TB_3DBUTTONS | wx.TB_TEXT) btn = self.toolbar.AddLabelTool(id=-1, label="Image viewer", bitmap=icons.hkl_file.GetBitmap(), shortHelp="Image viewer", kind=wx.ITEM_NORMAL) self.Bind(wx.EVT_MENU, self.OnLaunchViewer, btn) self.toolbar.Realize() self.statusbar = self.CreateStatusBar() self.sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(self.sizer) self.nb = fnb.FlatNotebook(self, agwStyle=fnb.FNB_DEFAULT_STYLE | fnb.FNB_NO_X_BUTTON) self.sizer.Add(self.nb, 1, wx.EXPAND) self.nb.SetMinSize((800, 40)) self.start_panel = StartPanel(self.nb) self.nb.AddPage(self.start_panel, "Setup") self.output_panel = LogViewer(self.nb) self.nb.AddPage(self.output_panel, "Output") try: self.html_panel = wx.html2.WebView.New(self.nb) except NotImplementedError: self.html_panel = wx.html.HtmlWindow(self.nb) self.nb.AddPage(self.html_panel, "Report") #self.indexing_panel = indexing.IndexingPanel(self.nb) #self.nb.AddPage(self.indexing_panel, "Indexing") #self.integration_panel = integration.IntegrationPanel(self.nb) #self.nb.AddPage(self.integration_panel, "Integration") self.SetSize((800, 600)) self.event_dispatcher = process_control.event_agent(window=self, project_id=0, job_id=0) self.was_aborted = False #def LoadResults (self, dir_name) : #self.result = results_base.result(dir_name) #self.indexing_panel.SetIndexingResults(self.result.get_indexing()) #self.integration_panel.SetResults(self.result) #self.nb.SetSelection(1) def OnRunXia2(self, evt): #thread = WorkerThread(0, self) #thread.start() #return output_dir = self.start_panel.GetOutputDir() result = self.run_xia2(imagesets=self.start_panel.GetImagesets(), output_dir=output_dir) def run_xia2(self, **kwds): output_dir = kwds['output_dir'] imagesets = kwds['imagesets'] args = [] for imageset in imagesets: scan = imageset.get_scan() first, last = scan.get_image_range() args.append('image=%s:%i:%i' % (imageset.paths()[0], first, last)) kwds = {} self.nb.AdvanceSelection(forward=True) thread = xia2Thread(self, output_dir, args) thread.start() return def launch_viewer_frame(self): if (self.viewer is None): self.viewer = XrayFrame(parent=self, title="Image viewer") self.viewer.Show() self.Bind(wx.EVT_CLOSE, self.OnCloseViewer, self.viewer) def get_viewer_frame(self): self.launch_viewer_frame() return self.viewer def set_viewer_frame(self, frame): assert (self.viewer is None) self.viewer = frame def OnCloseViewer(self, evt): self.viewer.Destroy() self.viewer = None def OnLaunchViewer(self, evt): self.launch_viewer_frame() def callback_start(self, data): self.event_dispatcher.callback_start(data) def callback_stdout(self, data): self.output_panel.AppendText(data) self.event_dispatcher.callback_stdout(data) def callback_other(self, data): print 'other' self.event_dispatcher.callback_other(data) def callback_abort(self): self.event_dispatcher.callback_abort() self.close() def callback_final(self, result): if self.was_aborted: # XXX hack for jobs killed with 'qdel' self.callback_abort() return import glob html_files = glob.glob( os.path.join(result.output_dir, 'LogFiles/*_report.html')) print html_files if html_files: html_file = html_files[0] try: # wx.html.HtmlWindow self.html_panel.LoadFile(html_file) except AttributeError: # wx.html2.WebView self.html_panel.LoadURL(html_file) self.nb.AdvanceSelection() self.event_dispatcher.callback_final(result) self.close() def callback_error(self, error, traceback_info): self.event_dispatcher.callback_error(error, traceback_info) self.close() def callback_pause(self): self.event_dispatcher.callback_pause() def callback_resume(self): self.event_dispatcher.callback_resume() def close(self): pass def OnLogEvent(self, event): print event
class ProcessingFrame (wx.Frame) : def __init__ (self, *args, **kwds) : wx.Frame.__init__(self, *args, **kwds) self.viewer = None self.toolbar = self.CreateToolBar(style=wx.TB_3DBUTTONS|wx.TB_TEXT) btn = self.toolbar.AddLabelTool(id=-1, label="Image viewer", bitmap=icons.hkl_file.GetBitmap(), shortHelp="Image viewer", kind=wx.ITEM_NORMAL) self.Bind(wx.EVT_MENU, self.OnLaunchViewer, btn) self.toolbar.Realize() self.statusbar = self.CreateStatusBar() self.sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(self.sizer) self.nb = wx.lib.agw.flatnotebook.FlatNotebook(self) self.sizer.Add(self.nb, 1, wx.EXPAND) self.nb.SetMinSize((800,40)) self.start_panel = StartPanel(self.nb) self.nb.AddPage(self.start_panel, "Setup") self.indexing_panel = indexing.IndexingPanel(self.nb) self.nb.AddPage(self.indexing_panel, "Indexing") self.integration_panel = integration.IntegrationPanel(self.nb) self.nb.AddPage(self.integration_panel, "Integration") self.SetSize((800,600)) def LoadResults (self, dir_name) : self.result = results_base.result(dir_name) self.indexing_panel.SetIndexingResults(self.result.get_indexing()) self.integration_panel.SetResults(self.result) self.nb.SetSelection(1) def OnRunIndexing (self, evt) : dataset, frames = self.start_panel.GetDataset() output_dir = self.start_panel.GetOutputDir() result = self.run_indexing( dataset=dataset, frames=frames, output_dir=output_dir) self.LoadResults(output_dir) def run_indexing (self, **kwds) : from rstbx.viewer import drivers run = drivers.run_indexing(**kwds) indexing_result = process_control.run_function_as_process_in_dialog( parent=self, thread_function=run, title="Running LABELIT", message="Indexing images and performing simple test integration") return indexing_result def launch_viewer_frame (self) : if (self.viewer is None) : self.viewer = XrayFrame( parent=self, title="Image viewer") self.viewer.Show() self.Bind(wx.EVT_CLOSE, self.OnCloseViewer, self.viewer) def get_viewer_frame (self) : self.launch_viewer_frame() return self.viewer def set_viewer_frame (self, frame) : assert (self.viewer is None) self.viewer = frame def OnCloseViewer (self, evt) : self.viewer.Destroy() self.viewer = None def OnLaunchViewer (self, evt) : self.launch_viewer_frame()