def add_tool(self, id=wx.ID_ANY, label=None, bitmap=None, kind=wx.ITEM_NORMAL, shortHelp=None, longHelp=None): if type(bitmap) in (tuple, list): if len(bitmap) == 3: bsz = bitmap[2] bsc = (bitmap[2], bitmap[2]) else: bsz = bsc = None if bitmap[0] == 'custom': bmp = bitmaps.fetch_custom_icon_bitmap(bitmap[1], size=bsz) else: bmp = bitmaps.fetch_icon_bitmap(bitmap[0], bitmap[1], scale=bsc) else: bmp = bitmap short_string = shortHelp if shortHelp else '' long_string = longHelp if longHelp else '' if wx4: return self.toolbar.AddTool(toolId=id, label=label, kind=kind, bitmap=bmp, shortHelp=short_string) else: return self.toolbar.AddLabelTool(id=id, label=label, kind=kind, bitmap=bmp, shortHelp=short_string, longHelp=long_string)
def add_item(self, path): # Generate item inputs, inp_choices, inp_sel = self.set_type_choices(path) type_choice = ct.DataTypeChoice(self.ctr, choices=inp_choices) item = ct.InputListItem(path=path, type=type_choice, buttons=ct.MiniButtonBoxInput(self.ctr)) self.Bind(wx.EVT_CHOICE, self.onTypeChoice, item.type.type) # item.buttons.btn_mag.Bind(wx.EVT_BUTTON, self.onMagButton) # item.buttons.btn_delete.Bind(wx.EVT_BUTTON, self.onDelButton) # item.buttons.btn_info.Bind(wx.EVT_BUTTON, self.onInfoButton) self.Bind(wx.EVT_BUTTON, self.onMagButton, item.buttons.btn_mag) self.Bind(wx.EVT_BUTTON, self.onDelButton, item.buttons.btn_delete) self.Bind(wx.EVT_BUTTON, self.onInfoButton, item.buttons.btn_info) # Insert list item idx = self.ctr.InsertStringItem(self.ctr.GetItemCount() + 1, item.path) self.ctr.SetItemWindow(idx, 1, item.type, expand=True) self.ctr.SetItemWindow(idx, 2, item.buttons, expand=True) # Set drop-down selection, check it for data and open other tabs item.type.type.SetSelection(inp_sel) if item.type.type.GetString(inp_sel) in ('coordinates', 'structure factors', 'background', 'raw image file'): if "image" in item.type.type.GetString(inp_sel): view_bmp = bitmaps.fetch_custom_icon_bitmap('image_viewer16') item.buttons.btn_mag.SetBitmapLabel(view_bmp) else: warn_bmp = bitmaps.fetch_icon_bitmap('actions', 'status_unknown', size=16) item.buttons.btn_info.SetBitmapLabel(warn_bmp) item.warning = True # Record index in all relevant places item.id = idx item.buttons.index = idx item.type.index = idx item.type_selection = inp_sel # Resize columns to fit content self.ctr.SetColumnWidth(1, width=-1) self.ctr.SetColumnWidth(2, width=-1) self.ctr.SetColumnWidth(0, width=-3) # Make sure all the choice lists are the same size if item.type.type.GetSize()[0] < self.ctr.GetColumnWidth(2) - 5: item.type.type.SetSize((self.ctr.GetColumnWidth(2) - 5, -1)) # Attach data object to item self.ctr.SetItemData(item.id, item) self.Layout()
def __init__(self, parent): wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY) self.index = None self.btn_box = wx.BoxSizer(wx.HORIZONTAL) view_bmp = bitmaps.fetch_custom_icon_bitmap('image_viewer16') self.btn_viewer = btn.GenBitmapButton(self, bitmap=view_bmp) viewmag_bmp = bitmaps.fetch_icon_bitmap('actions', 'viewmag', size=16) self.btn_mag = btn.GenBitmapButton(self, bitmap=viewmag_bmp) star_on_bmp = bitmaps.fetch_icon_bitmap('actions', 'bookmark_gold', size=16) star_off_bmp = bitmaps.fetch_icon_bitmap('actions', 'bookmark_silver', size=16) self.btn_flag = btn.GenBitmapToggleButton(self, bitmap=star_off_bmp) self.btn_flag.SetBitmapSelected(star_on_bmp) self.btn_box.Add(self.btn_mag) self.btn_box.Add(self.btn_viewer, flag=wx.LEFT, border=5) self.btn_box.Add(self.btn_flag, flag=wx.LEFT, border=5) self.SetSizer(self.btn_box) self.SetBackgroundColour('white') self.Fit()
def __init__(self, parent, pparams, info): wx.Panel.__init__(self, parent) from prime.postrefine.mod_plotter import Plotter self.info = info self.pparams = pparams self.plot = Plotter(info=self.info, anomalous_flag=self.pparams.target_anomalous_flag) self.summary_sizer = wx.BoxSizer(wx.VERTICAL) sfont = wx.Font(norm_font_size, wx.DEFAULT, wx.NORMAL, wx.NORMAL) bfont = wx.Font(norm_font_size, wx.DEFAULT, wx.NORMAL, wx.BOLD) self.SetFont(bfont) # Run information run_box = wx.StaticBox(self, label='Run Information') run_box.SetFont(sfont) run_box_sizer = wx.StaticBoxSizer(run_box, wx.VERTICAL) run_box_grid = wx.FlexGridSizer(3, 2, 5, 20) self.title_txt = wx.StaticText(self, label='') self.title_txt.SetFont(sfont) self.folder_txt = wx.StaticText(self, label='') self.folder_txt.SetFont(sfont) run_box_grid.AddMany([(wx.StaticText(self, label='Title')), (self.title_txt, 1, wx.EXPAND), (wx.StaticText(self, label='Directory')), (self.folder_txt, 1, wx.EXPAND)]) run_box_grid.AddGrowableCol(1, 1) run_box_sizer.Add(run_box_grid, flag=wx.EXPAND | wx.ALL, border=10) self.summary_sizer.Add(run_box_sizer, flag=wx.EXPAND | wx.ALL, border=10) # Table 1 tb1_box = wx.StaticBox(self, label='Merging Statistics') tb1_box.SetFont(sfont) tb1_box_sizer = wx.StaticBoxSizer(tb1_box, wx.HORIZONTAL) self.tb1_labels, self.tb1_data = self.plot.table_one() self.tb1 = ct.TableCtrl(self, rlabels=self.tb1_labels, contents=self.tb1_data, label_style='bold') # Buttons (placeholder for now) btn_box_sizer = wx.BoxSizer(wx.VERTICAL) line_bmp = bitmaps.fetch_custom_icon_bitmap('line_graph24') self.btn_stats = ct.GradButton(self, bmp=line_bmp, label=' Statistical charts', size=(250, -1)) txt_bmp = bitmaps.fetch_icon_bitmap('mimetypes', 'txt', scale=(24, 24)) self.btn_table1 = ct.GradButton(self, bmp=txt_bmp, label=' Output Table 1', size=(250, -1)) btn_box_sizer.Add(self.btn_stats) self.Bind(wx.EVT_BUTTON, self.onPlotStats, self.btn_stats) btn_box_sizer.Add(self.btn_table1, flag=wx.TOP, border=5) self.Bind(wx.EVT_BUTTON, self.onWriteTableOne, self.btn_table1) tb1_box_sizer.Add(self.tb1, flag=wx.EXPAND | wx.ALL, border=10) tb1_box_sizer.AddStretchSpacer() tb1_box_sizer.Add(btn_box_sizer, flag=wx.ALIGN_RIGHT | wx.ALL, border=10) self.summary_sizer.Add(tb1_box_sizer, flag=wx.EXPAND | wx.ALL, border=10) self.SetSizer(self.summary_sizer)
def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(1500, 600)) self.parent = parent self.term_file = os.path.join(os.curdir, '.terminate_image_tracker') self.spf_backend = 'mosflm' self.run_indexing = False self.run_integration = False self.running_clustering = False # Status bar self.sb = self.CreateStatusBar() self.sb.SetFieldsCount(2) self.sb.SetStatusWidths([100, -1]) # Setup main sizer self.main_sizer = wx.BoxSizer(wx.VERTICAL) # Setup toolbar self.toolbar = self.CreateToolBar(style=wx.TB_3DBUTTONS | wx.TB_TEXT) quit_bmp = bitmaps.fetch_icon_bitmap('actions', 'exit') self.tb_btn_quit = self.toolbar.AddLabelTool( wx.ID_EXIT, label='Quit', bitmap=quit_bmp, shortHelp='Quit', longHelp='Quit image tracker') self.toolbar.AddSeparator() # pref_bmp = bitmaps.fetch_icon_bitmap('apps', 'advancedsettings') # self.tb_btn_prefs = self.toolbar.AddLabelTool(wx.ID_ANY, # label='Preferences', # bitmap=pref_bmp, # shortHelp='Preferences', # longHelp='IOTA image tracker preferences') # self.toolbar.AddSeparator() open_bmp = bitmaps.fetch_icon_bitmap('actions', 'open') self.tb_btn_open = self.toolbar.AddLabelTool(wx.ID_ANY, label='Open', bitmap=open_bmp, shortHelp='Open', longHelp='Open folder') run_bmp = bitmaps.fetch_icon_bitmap('actions', 'run') self.tb_btn_run = self.toolbar.AddLabelTool(wx.ID_ANY, label='Run', bitmap=run_bmp, shortHelp='Run', longHelp='Run Spotfinding') stop_bmp = bitmaps.fetch_icon_bitmap('actions', 'stop') self.tb_btn_stop = self.toolbar.AddLabelTool( wx.ID_ANY, label='Stop', bitmap=stop_bmp, shortHelp='Stop', longHelp='Stop Spotfinding') self.toolbar.AddSeparator() span_view = bitmaps.fetch_custom_icon_bitmap('zoom_list') self.tb_btn_view = self.toolbar.AddLabelTool( wx.ID_ANY, label='View', bitmap=span_view, kind=wx.ITEM_RADIO, shortHelp='Select to View', longHelp='Select images to view') span_zoom = bitmaps.fetch_custom_icon_bitmap('zoom_view') self.tb_btn_zoom = self.toolbar.AddLabelTool( wx.ID_ANY, label='Zoom In', bitmap=span_zoom, kind=wx.ITEM_RADIO, shortHelp='Zoom In', longHelp='Zoom in on chart') self.toolbar.ToggleTool(self.tb_btn_zoom.GetId(), True) self.toolbar.EnableTool(self.tb_btn_run.GetId(), False) self.toolbar.EnableTool(self.tb_btn_stop.GetId(), False) self.toolbar.Realize() # Setup timers self.spf_timer = wx.Timer(self) self.uc_timer = wx.Timer(self) self.ff_timer = wx.Timer(self) self.tracker_panel = TrackerPanel(self) self.data_dict = self.tracker_panel.image_list.image_list.ctr.data.copy( ) self.img_list_initialized = False self.main_sizer.Add(self.tracker_panel, 1, wx.EXPAND) # Bindings self.Bind(wx.EVT_TOOL, self.onQuit, self.tb_btn_quit) self.Bind(wx.EVT_TOOL, self.onGetImages, self.tb_btn_open) self.Bind(wx.EVT_TOOL, self.onRunSpotfinding, self.tb_btn_run) self.Bind(wx.EVT_TOOL, self.onStop, self.tb_btn_stop) self.Bind(wx.EVT_BUTTON, self.onSelView, self.tracker_panel.btn_view_sel) self.Bind(wx.EVT_BUTTON, self.onWrtFile, self.tracker_panel.btn_wrt_file) self.Bind(wx.EVT_BUTTON, self.onAllView, self.tracker_panel.btn_view_all) self.Bind(wx.EVT_TOOL, self.onZoom, self.tb_btn_zoom) self.Bind(wx.EVT_TOOL, self.onList, self.tb_btn_view) # Spotfinder / timer bindings self.Bind(thr.EVT_SPFDONE, self.onSpfOneDone) # Settings bindings self.Bind(wx.EVT_SPINCTRL, self.onMinBragg, self.tracker_panel.min_bragg.ctr) self.Bind(wx.EVT_SPINCTRL, self.onChartRange, self.tracker_panel.chart_window.ctr) self.Bind(wx.EVT_CHECKBOX, self.onChartRange, self.tracker_panel.chart_window.toggle) # Initialize tracker self.initialize_spotfinder()
def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(1500, 600)) self.parent = parent self.term_file = os.path.join(os.curdir, '.terminate_image_tracker') self.spf_backend = 'mosflm' self.reset_spotfinder() # Status bar self.sb = self.CreateStatusBar() self.sb.SetFieldsCount(2) self.sb.SetStatusWidths([100, -1]) # Setup main sizer self.main_sizer = wx.BoxSizer(wx.VERTICAL) # Setup toolbar self.toolbar = self.CreateToolBar(style=wx.TB_3DBUTTONS | wx.TB_TEXT) quit_bmp = bitmaps.fetch_icon_bitmap('actions', 'exit') self.tb_btn_quit = self.toolbar.AddLabelTool( wx.ID_EXIT, label='Quit', bitmap=quit_bmp, shortHelp='Quit', longHelp='Quit image tracker') self.toolbar.AddSeparator() pref_bmp = bitmaps.fetch_icon_bitmap('apps', 'advancedsettings') self.tb_btn_prefs = self.toolbar.AddLabelTool( wx.ID_ANY, label='Preferences', bitmap=pref_bmp, shortHelp='Preferences', longHelp='IOTA image tracker preferences') self.toolbar.AddSeparator() open_bmp = bitmaps.fetch_icon_bitmap('actions', 'open') self.tb_btn_open = self.toolbar.AddLabelTool(wx.ID_ANY, label='Open', bitmap=open_bmp, shortHelp='Open', longHelp='Open folder') run_bmp = bitmaps.fetch_icon_bitmap('actions', 'run') self.tb_btn_run = self.toolbar.AddLabelTool(wx.ID_ANY, label='Run', bitmap=run_bmp, shortHelp='Run', longHelp='Run Spotfinding') stop_bmp = bitmaps.fetch_icon_bitmap('actions', 'stop') self.tb_btn_stop = self.toolbar.AddLabelTool( wx.ID_ANY, label='Stop', bitmap=stop_bmp, shortHelp='Stop', longHelp='Stop Spotfinding') self.toolbar.AddSeparator() span_view = bitmaps.fetch_custom_icon_bitmap('zoom_list') self.tb_btn_view = self.toolbar.AddLabelTool( wx.ID_ANY, label='View', bitmap=span_view, kind=wx.ITEM_RADIO, shortHelp='Select to View', longHelp='Select images to view') span_zoom = bitmaps.fetch_custom_icon_bitmap('zoom_view') self.tb_btn_zoom = self.toolbar.AddLabelTool( wx.ID_ANY, label='Zoom In', bitmap=span_zoom, kind=wx.ITEM_RADIO, shortHelp='Zoom In', longHelp='Zoom in on chart') self.toolbar.ToggleTool(self.tb_btn_zoom.GetId(), True) self.toolbar.EnableTool(self.tb_btn_run.GetId(), False) self.toolbar.EnableTool(self.tb_btn_stop.GetId(), False) self.toolbar.Realize() # Setup timers self.spf_timer = wx.Timer(self) self.uc_timer = wx.Timer(self) self.ff_timer = wx.Timer(self) self.tracker_panel = TrackerPanel(self) self.data_dict = self.tracker_panel.image_list.image_list.ctr.data.copy( ) self.img_list_initialized = False self.main_sizer.Add(self.tracker_panel, 1, wx.EXPAND) # Generate default DIALS PHIL file default_phil = ip.parse(default_target) self.phil = phil_scope.fetch(source=default_phil) self.params = self.phil.extract() self.params.output.strong_filename = None self.phil = self.phil.format(python_object=self.params) # Bindings self.Bind(wx.EVT_TOOL, self.onQuit, self.tb_btn_quit) self.Bind(wx.EVT_TOOL, self.onGetImages, self.tb_btn_open) self.Bind(wx.EVT_TOOL, self.onRunSpotfinding, self.tb_btn_run) self.Bind(wx.EVT_TOOL, self.onStop, self.tb_btn_stop) self.Bind(wx.EVT_BUTTON, self.onSelView, self.tracker_panel.btn_view_sel) self.Bind(wx.EVT_BUTTON, self.onWrtFile, self.tracker_panel.btn_wrt_file) self.Bind(wx.EVT_BUTTON, self.onAllView, self.tracker_panel.btn_view_all) self.Bind(wx.EVT_TOOL, self.onZoom, self.tb_btn_zoom) self.Bind(wx.EVT_TOOL, self.onList, self.tb_btn_view) # Spotfinder / timer bindings self.Bind(thr.EVT_SPFDONE, self.onSpfOneDone) self.Bind(thr.EVT_SPFALLDONE, self.onSpfAllDone) self.Bind(thr.EVT_SPFTERM, self.onSpfTerminated) self.Bind(wx.EVT_TIMER, self.onSpfTimer, id=self.spf_timer.GetId()) self.Bind(wx.EVT_TIMER, self.onUCTimer, id=self.uc_timer.GetId()) self.Bind(wx.EVT_TIMER, self.onPlotOnlyTimer, id=self.ff_timer.GetId()) # Settings bindings #self.Bind(wx.EVT_BUTTON, self.onSpfOptions, self.tracker_panel.spf_options) self.Bind(wx.EVT_SPINCTRL, self.onMinBragg, self.tracker_panel.min_bragg.ctr) self.Bind(wx.EVT_SPINCTRL, self.onChartRange, self.tracker_panel.chart_window.ctr) # Read arguments if any self.args, self.phil_args = parse_command_args('').parse_known_args() self.spf_backend = self.args.backend self.tracker_panel.min_bragg.ctr.SetValue(self.args.bragg) if self.args.file is not None: self.results_file = self.args.file self.start_spotfinding(from_file=True) elif self.args.path is not None: path = os.path.abspath(self.args.path) self.open_images_and_get_ready(path=path) if self.args.start: print 'IMAGE_TRACKER: STARTING FROM FIRST RECORDED IMAGE' self.start_spotfinding() elif self.args.proceed: print 'IMAGE_TRACKER: STARTING FROM IMAGE RECORDED 1 MIN AGO' self.start_spotfinding(min_back=-1) elif self.args.time > 0: min_back = -self.args.time[0] print 'IMAGE_TRACKER: STARTING FROM IMAGE RECORDED {} MIN AGO' \ ''.format(min_back) self.start_spotfinding(min_back=min_back)