示例#1
0
  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)
示例#5
0
    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()
示例#6
0
    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)