Exemple #1
0
    def __init__(self, parent, main_window):
        self.parent = parent
        self.main_window = main_window
        self.tracker_panel = self.parent.GetParent()
        super(ZoomCtrl, self).__init__(parent)

        # Attributes
        self.move = 0
        self.chart_range = 100
        self.plot_zoom = False
        self.max_lock = False

        main_sizer = wx.GridBagSizer(5, 5)

        # Zoom checkbox
        btn_size = (32, 32)
        zoom_bmp = find_icon("zoom", size=24)
        self.btn_zoom = wx.BitmapToggleButton(self,
                                              label=zoom_bmp,
                                              size=btn_size)
        self.spn_zoom = ct.SpinCtrl(self,
                                    ctrl_size=(100, -1),
                                    ctrl_value=100,
                                    ctrl_min=10,
                                    ctrl_step=10)
        back_bmp = find_icon("back", size=24)
        self.btn_back = wx.BitmapButton(self, bitmap=back_bmp, size=btn_size)
        frwd_bmp = find_icon("forward", size=24)
        self.btn_frwd = wx.BitmapButton(self, bitmap=frwd_bmp, size=btn_size)
        xmax_bmp = find_icon("max", size=24)
        self.btn_lock = wx.BitmapToggleButton(self,
                                              label=xmax_bmp,
                                              size=btn_size)

        main_sizer.Add(self.btn_zoom, pos=(0, 0))
        main_sizer.Add(self.spn_zoom,
                       flag=wx.ALIGN_CENTER_VERTICAL,
                       pos=(0, 1))
        main_sizer.Add(self.btn_back, pos=(0, 2))
        main_sizer.Add(self.btn_frwd, pos=(0, 3))
        main_sizer.Add(self.btn_lock, pos=(0, 4))

        self.SetSizer(main_sizer)
        self.set_control()

        # button bindings
        self.btn_zoom.Bind(
            wx.EVT_TOGGLEBUTTON,
            self.onZoom,
        )
        self.spn_zoom.Bind(wx.EVT_SPINCTRL, self.onZoom)
        self.btn_back.Bind(wx.EVT_BUTTON, self.onBack)
        self.btn_frwd.Bind(wx.EVT_BUTTON, self.onFrwd)
        self.btn_lock.Bind(wx.EVT_TOGGLEBUTTON, self.onLock)
Exemple #2
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent=parent)
        self.parent = parent
        self.chart_sash_position = 0

        self.main_sizer = wx.GridBagSizer(10, 10)

        # Status box
        self.info_panel = wx.Panel(self)
        self.info_sizer = wx.FlexGridSizer(1, 4, 0, 10)
        self.info_sizer.AddGrowableCol(3)
        self.info_panel.SetSizer(self.info_sizer)

        self.count_box = wx.StaticBox(self.info_panel, label='Hits')
        self.count_box_sizer = wx.StaticBoxSizer(self.count_box, wx.HORIZONTAL)
        self.count_txt = wx.StaticText(self.info_panel, label='')
        self.count_box_sizer.Add(self.count_txt,
                                 flag=wx.ALL | wx.ALIGN_CENTER,
                                 border=10)

        self.idx_count_box = wx.StaticBox(self.info_panel, label='Indexed')
        self.idx_count_box_sizer = wx.StaticBoxSizer(self.idx_count_box,
                                                     wx.HORIZONTAL)
        self.idx_count_txt = wx.StaticText(self.info_panel, label='')
        self.idx_count_box_sizer.Add(self.idx_count_txt,
                                     flag=wx.ALL | wx.ALIGN_CENTER,
                                     border=10)

        self.pg_box = wx.StaticBox(self.info_panel, label='Best Lattice')
        self.pg_box_sizer = wx.StaticBoxSizer(self.pg_box, wx.HORIZONTAL)
        self.pg_txt = wx.StaticText(self.info_panel, label='')
        self.pg_box_sizer.Add(self.pg_txt,
                              flag=wx.ALL | wx.ALIGN_CENTER,
                              border=10)

        self.uc_box = wx.StaticBox(self.info_panel, label='Best Unit Cell')
        self.uc_box_sizer = wx.StaticBoxSizer(self.uc_box, wx.HORIZONTAL)
        self.uc_txt = wx.StaticText(self.info_panel, label='')
        self.uc_box_sizer.Add(self.uc_txt,
                              flag=wx.ALL | wx.ALIGN_CENTER,
                              border=10)

        font = wx.Font(20, wx.DEFAULT, wx.NORMAL, wx.BOLD)
        self.count_txt.SetFont(font)
        self.idx_count_txt.SetFont(font)
        font = wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.BOLD)
        self.pg_txt.SetFont(font)
        self.uc_txt.SetFont(font)

        self.info_sizer.Add(self.count_box_sizer, flag=wx.EXPAND)
        self.info_sizer.Add(self.idx_count_box_sizer, flag=wx.EXPAND)
        self.info_sizer.Add(self.pg_box_sizer, flag=wx.EXPAND)
        self.info_sizer.Add(self.uc_box_sizer, flag=wx.EXPAND)

        # Put chart and image list into splitter window
        self.chart_splitter = wx.SplitterWindow(
            self, style=wx.SP_LIVE_UPDATE | wx.SP_3DSASH | wx.SP_NOBORDER)

        # Put in chart
        self.graph_panel = wx.Panel(self.chart_splitter)
        self.graph_sizer = wx.GridBagSizer(5, 5)

        self.chart = TrackChart(self.graph_panel, main_window=parent)
        self.min_bragg = ct.SpinCtrl(self.graph_panel,
                                     label='Min. Bragg spots',
                                     ctrl_size=(100, -1),
                                     ctrl_value=10)
        self.chart_window = ct.SpinCtrl(self.graph_panel,
                                        checkbox=True,
                                        checkbox_label='Finite chart window',
                                        ctrl_size=(100, -1),
                                        ctrl_value=100,
                                        ctrl_min=10,
                                        ctrl_step=10)

        self.graph_sizer.Add(self.chart,
                             flag=wx.EXPAND,
                             pos=(0, 0),
                             span=(1, 3))
        self.graph_sizer.Add(self.min_bragg, flag=wx.ALIGN_LEFT, pos=(1, 0))
        self.graph_sizer.Add(self.chart_window,
                             flag=wx.ALIGN_CENTER,
                             pos=(1, 1))

        self.graph_sizer.AddGrowableRow(0)
        self.graph_sizer.AddGrowableCol(1)
        self.graph_panel.SetSizer(self.graph_sizer)

        # List of images
        self.image_list_panel = wx.Panel(self.chart_splitter)
        self.image_list_sizer = wx.BoxSizer(wx.VERTICAL)
        self.image_list = ImageList(self.image_list_panel)
        self.btn_view_sel = wx.Button(self.image_list_panel,
                                      label='View Selected')
        self.btn_view_all = wx.Button(self.image_list_panel, label='View All')
        self.btn_wrt_file = wx.Button(self.image_list_panel,
                                      label='Write to File')
        self.btn_view_sel.Disable()
        self.btn_wrt_file.Disable()
        self.btn_view_all.Disable()

        btn_sizer = wx.FlexGridSizer(1, 3, 0, 5)
        btn_sizer.Add(self.btn_wrt_file, flag=wx.ALIGN_LEFT)
        btn_sizer.Add(self.btn_view_all, flag=wx.ALIGN_RIGHT)
        btn_sizer.Add(self.btn_view_sel, flag=wx.ALIGN_RIGHT)
        btn_sizer.AddGrowableCol(0)

        self.image_list_sizer.Add(self.image_list, 1, flag=wx.EXPAND)
        self.image_list_sizer.Add(btn_sizer, flag=wx.ALIGN_RIGHT | wx.EXPAND)
        self.image_list_panel.SetSizer(self.image_list_sizer)

        # Add all to main sizer
        self.main_sizer.Add(self.info_panel,
                            pos=(0, 0),
                            flag=wx.EXPAND | wx.ALL,
                            border=10)
        self.main_sizer.Add(self.chart_splitter,
                            pos=(1, 0),
                            flag=wx.EXPAND | wx.ALL,
                            border=10)
        self.main_sizer.AddGrowableCol(0)
        self.main_sizer.AddGrowableRow(1)
        self.SetSizer(self.main_sizer)
        self.chart_splitter.SplitVertically(self.graph_panel,
                                            self.image_list_panel)
        self.chart_splitter.Unsplit()
  def __init__(self, parent, phil=None, *args, **kwargs):
    PRIMEBaseBackendDialog.__init__(self, parent,
                                    backend_name='PRIME',
                                    phil=phil,
                                    phil_size=(500, 500),
                                    opt_size=(500, 500),
                                    *args, **kwargs)

    self.prime_phil = phil
    self.new_prime_phil = None
    self.pparams = self.prime_phil.extract()

    self.splitter.SplitVertically(self.options, self.phil_panel)

    # Target file input
    self.phil = ct.PHILBox(self.phil_panel,
                           btn_import=True,
                           btn_import_label='Import PHIL',
                           btn_export=False,
                           btn_default=False,
                           btn_pos='bottom',
                           ctr_size=(-1, 300),
                           ctr_value='')
    self.phil_sizer.Add(self.phil, 1, flag=wx.EXPAND | wx.ALL, border=5)

    # PRIME Options (there is some redundancy with the PHIL textbox)
    self.prm_options = wx.Panel(self.options)
    opt_box = wx.StaticBox(self.prm_options, label='Advanced Options')
    opt_box_sizer = wx.StaticBoxSizer(opt_box, wx.VERTICAL)
    self.prm_options.SetSizer(opt_box_sizer)

    # Resolution
    self.scale_res = ct.OptionCtrl(self.prm_options,
                                   label='Scale Resolution: ',
                                   label_size=(120, -1),
                                   label_style='normal',
                                   ctrl_size=wx.DefaultSize,
                                   items=[('low', 50),
                                          ('high', 1.5)])
    opt_box_sizer.Add(self.scale_res, flag=f.stack, border=10)

    self.merge_res = ct.OptionCtrl(self.prm_options,
                                   label='Merge Resolution: ',
                                   label_size=(120, -1),
                                   label_style='normal',
                                   ctrl_size=wx.DefaultSize,
                                   items=[('low', 50),
                                          ('high', 1.5)])
    opt_box_sizer.Add(self.merge_res, flag=f.stack, border=10)

    self.p_scale_res = ct.OptionCtrl(self.prm_options,
                                     label='Postref Scale Res.: ',
                                     label_size=(120, -1),
                                     label_style='normal',
                                     ctrl_size=wx.DefaultSize,
                                     items=[('low', 50),
                                            ('high', 1.5)])
    opt_box_sizer.Add(self.p_scale_res, flag=f.stack, border=10)

    self.p_cryst_res = ct.OptionCtrl(self.prm_options,
                                     checkbox=True,
                                     checkbox_label='Crystal Orientation: ',
                                     label_size=(120, -1),
                                     label_style='normal',
                                     ctrl_size=wx.DefaultSize,
                                     items=[('low', 50),
                                            ('high', 1.5)])
    opt_box_sizer.Add(self.p_cryst_res, flag=f.stack, border=10)

    self.p_rrange_res = ct.OptionCtrl(self.prm_options,
                                      checkbox=True,
                                      checkbox_label='Reflecting Range: ',
                                      label_size=(120, -1),
                                      label_style='normal',
                                      ctrl_size=wx.DefaultSize,
                                      items=[('low', 50),
                                             ('high', 1.5)])
    opt_box_sizer.Add(self.p_rrange_res, flag=f.stack, border=10)

    self.p_uc_res = ct.OptionCtrl(self.prm_options,
                                  checkbox=True,
                                  checkbox_label='Unit Cell: ',
                                  label_size=(120, -1),
                                  label_style='normal',
                                  ctrl_size=wx.DefaultSize,
                                  items=[('low', 50),
                                         ('high', 1.5)])
    opt_box_sizer.Add(self.p_uc_res, flag=f.stack, border=10)

    self.p_all_res = ct.OptionCtrl(self.prm_options,
                                   checkbox=True,
                                   checkbox_label='All Parameters: ',
                                   label_size=(120, -1),
                                   label_style='normal',
                                   ctrl_size=wx.DefaultSize,
                                   items=[('low', 50),
                                          ('high', 1.5)])
    opt_box_sizer.Add(self.p_all_res, flag=f.stack, border=10)

    self.btn_synch_res = wx.Button(self.prm_options,
                                   label="Set Res. Limits to Postref. Scale")
    opt_box_sizer.Add(self.btn_synch_res, flag=f.stack, border=10)


    # Target space group
    self.sg = ct.OptionCtrl(self.prm_options,
                            label='Space Group: ',
                            label_size=(120, -1),
                            label_style='normal',
                            ctrl_size=(100, -1),
                            items=[('spacegroup','P212121')])
    opt_box_sizer.Add(self.sg, flag=f.stack, border=10)

    # Target unit cell
    self.uc = ct.OptionCtrl(self.prm_options,
                            label='Unit Cell: ',
                            label_size=(120, -1),
                            label_style='normal',
                            ctrl_size=(300, -1),
                            items=[('unit_cell', '72 120 134 90 90 90')])
    self.anom = wx.CheckBox(self.prm_options, label='Anomalous')
    self.anom.SetValue(False)
    opt_box_sizer.Add(self.uc, flag=f.stack, border=10)
    opt_box_sizer.Add(self.anom, flag=f.stack, border=10)

    # CC cutoff
    self.cc = ct.OptionCtrl(self.prm_options,
                            label='CC cutoff: ',
                            label_size=(120, -1),
                            label_style='normal',
                            ctrl_size=(100, -1),
                            items=[('cc_cutoff', 0.25)])
    opt_box_sizer.Add(self.cc, flag=f.stack, border=10)

    # Pixel size
    self.pix = ct.OptionCtrl(self.prm_options,
                             label='Pixel size: ',
                             label_size=(120, -1),
                             label_style='normal',
                             ctrl_size=(100, -1),
                             items=[('pixel_size', 0.172)])
    opt_box_sizer.Add(self.pix, flag=wx.RIGHT | wx.LEFT | wx.TOP, border=10)

    self.cycles = ct.SpinCtrl(self.prm_options,
                              label='No. of Cycles:',
                              label_size=(120, -1),
                              label_style='normal',
                              ctrl_size=(60, -1))
    opt_box_sizer.Add(self.cycles, flag=wx.ALL, border=10)

    # self.options_sizer.Add(self.phil_sizer, 1, flag=wx.EXPAND | wx.ALL, border=10)
    self.options_sizer.Add(self.prm_options, 1, flag=wx.EXPAND | wx.ALL, border=10)

    # Button bindings
    self.Bind(wx.EVT_BUTTON, self.onImportPHIL, self.phil.btn_import)
    self.Bind(wx.EVT_BUTTON, self.onOK, id=wx.ID_OK)
    self.Bind(wx.EVT_BUTTON, self.onHideScript, self.btn_hide_script)
    self.Bind(wx.EVT_BUTTON, self.onResSynchronize, self.btn_synch_res)
    self.Bind(wx.EVT_CHOICE, self.onAdvanced, self.dlg_ctr.choice)

    self.show_hide_script()
    self.show_hide_advanced(show=False)
    self.Layout()
    self.options.SetupScrolling()
    self.read_param_phil()
  def __init__(self, parent, phil=None, *args, **kwargs):
    BaseDialog.__init__(self, parent, *args, **kwargs)

    self.pparams = phil.extract()
    self.pref_phil = None

    main_sizer = wx.BoxSizer(wx.VERTICAL)

    main_box = wx.StaticBox(self, label='PRIME Preferences')
    vbox = wx.StaticBoxSizer(main_box, wx.VERTICAL)

    self.SetSizer(main_sizer)

    q_choices = ['psanaq', 'psnehq', 'psfehq'] + ['custom']
    self.queues = ct.ChoiceCtrl(self,
                                label='Queue:',
                                label_size=(120, -1),
                                label_style='bold',
                                ctrl_size=wx.DefaultSize,
                                choices=q_choices)
    vbox.Add(self.queues, flag=wx.ALL, border=10)

    self.custom_queue = ct.OptionCtrl(self,
                                      items=[('cqueue', '')],
                                      label='Custom Queue:',
                                      label_size=(120, -1),
                                      label_style='normal',
                                      ctrl_size=(150, -1))
    self.custom_queue.Disable()
    vbox.Add(self.custom_queue, flag=wx.ALL, border=10)

    self.nodes = ct.SpinCtrl(self,
                             label='No. of nodes',
                             label_size=(120, -1),
                             ctrl_value=12,
                             ctrl_size=(80, -1),
                             ctrl_min=1,
                             ctrl_max=5000)
    self.nodes.Disable()
    vbox.Add(self.nodes, flag=wx.ALL, border=10)

    mp_choices = ['multiprocessing', 'bsub']
    self.mp_methods = ct.ChoiceCtrl(self,
                                    label='Method:',
                                    label_size=(120, -1),
                                    label_style='bold',
                                    ctrl_size=wx.DefaultSize,
                                    choices=mp_choices)
    vbox.Add(self.mp_methods, flag=wx.ALL, border=10)

    main_sizer.Add(vbox, flag=wx.EXPAND | wx.ALL, border=10)

    # Dialog control
    dialog_box = self.CreateSeparatedButtonSizer(wx.OK | wx.CANCEL)
    main_sizer.Add(dialog_box,
                   flag=wx.EXPAND | wx.ALIGN_RIGHT | wx.ALL,
                   border=10)

    self.Bind(wx.EVT_CHOICE, self.onQueue, self.queues.ctr)
    self.Bind(wx.EVT_CHOICE, self.onMethod, self.mp_methods.ctr)
    self.Bind(wx.EVT_BUTTON, self.onOK, id=wx.ID_OK)

    self.set_choices()
Exemple #5
0
    def __init__(self, parent):
        BasePanel.__init__(self, parent=parent)

        self.parent = parent
        self.img_filename = None
        self.input_phil = None
        self.sparams = None
        self.coord_filename = None
        self.mtz_filename = None
        self.stol_filename = None
        self.ref_img_filename = None
        self.dblclick = False

        self.project_folder = ct.InputCtrl(self,
                                           label='Project Folder: ',
                                           label_size=(150, -1),
                                           label_style='bold',
                                           value=os.path.abspath(os.curdir),
                                           buttons=True)

        self.project_title = ct.InputCtrl(self,
                                          label='Description',
                                          label_size=(150, -1),
                                          label_style='normal')

        self.splitter = wx.SplitterWindow(self,
                                          style=wx.SP_LIVE_UPDATE
                                          | wx.SP_3DSASH | wx.SP_NOBORDER)
        self.file_panel = wx.Panel(self.splitter, size=(-1, 200))
        self.file_sizer = wx.BoxSizer(wx.VERTICAL)
        self.file_panel.SetSizer(self.file_sizer)
        self.preview_panel = wx.Panel(self.splitter, size=(-1, 500))
        self.preview_sizer = wx.BoxSizer(wx.VERTICAL)
        self.preview_panel.SetSizer(self.preview_sizer)
        self.splitter.SplitHorizontally(self.file_panel, self.preview_panel,
                                        200)

        self.input = FileListCtrl(self.file_panel)
        self.file_sizer.Add(self.input, 1, flag=wx.ALL | wx.EXPAND, border=10)

        # Image preview box w/ options
        prev_box = wx.GridBagSizer(5, 15)

        # self.opt_knb_start = ct.KnobCtrl(self.preview_panel,
        #                                  label='start',
        #                                  label_size=(40, -1),
        #                                  spin_ctr_size=(50, -1),
        #                                  knob_size=(120, 120),
        #                                  values_start=0,
        #                                  values_end=360,
        #                                  values_step=1,
        #                                  value=0)
        #
        # self.opt_knb_end = ct.KnobCtrl(self.preview_panel,
        #                                label='end',
        #                                label_size=(40, -1),
        #                                spin_ctr_size=(50, -1),
        #                                knob_size=(120, 120),
        #                                values_start=0,
        #                                values_end=360,
        #                                values_step=1,
        #                                value=360)

        self.opt_spc_start = ct.SpinCtrl(self.preview_panel,
                                         label='start:',
                                         label_size=(50, -1),
                                         ctrl_size=(60, -1),
                                         ctrl_value='0',
                                         ctrl_max=360,
                                         ctrl_min=0,
                                         ctrl_step=0.1,
                                         ctrl_digits=1)

        self.opt_spc_end = ct.SpinCtrl(self.preview_panel,
                                       label='finish:',
                                       label_size=(50, -1),
                                       ctrl_size=(60, -1),
                                       ctrl_value='360',
                                       ctrl_max=360,
                                       ctrl_min=0,
                                       ctrl_step=0.1,
                                       ctrl_digits=1)

        self.opt_spc_osc = ct.SpinCtrl(self.preview_panel,
                                       label='step:',
                                       label_size=(50, -1),
                                       ctrl_size=(60, -1),
                                       ctrl_value='1.0',
                                       ctrl_max=360,
                                       ctrl_min=0,
                                       ctrl_step=0.1,
                                       ctrl_digits=2)

        self.opt_btn_prev = wx.Button(self.preview_panel,
                                      label='PREVIEW IMAGE')

        self.opt_chk_bkg = wx.CheckBox(self.preview_panel,
                                       label='Add Background')
        self.opt_chk_bkg.SetValue(True)
        self.opt_chk_noise = wx.CheckBox(self.preview_panel, label='Add Noise')
        self.opt_chk_noise.SetValue(True)
        self.opt_chk_rand = wx.CheckBox(self.preview_panel,
                                        label='Randomize Orientation')
        self.opt_chk_rand.SetValue(True)

        self.opt_spc_scale = ct.SpinCtrl(self.preview_panel,
                                         label='Crystal size (um): ',
                                         label_size=(120, -1),
                                         ctrl_size=(100, -1),
                                         ctrl_min=1,
                                         ctrl_max=1000,
                                         ctrl_step=1,
                                         ctrl_value=30)

        self.img_figure = Figure(figsize=(3, 3))
        self.img_axes = self.img_figure.add_subplot(111)

        self.img_axes.set_frame_on(False)
        self.img_axes.axis('off')
        self.img_axes.set_aspect('equal')

        self.img_figure.patch.set_visible(False)
        self.img_canvas = FigureCanvas(self.preview_panel, -1, self.img_figure)

        prev_box.Add(self.opt_spc_start, pos=(0, 0))
        prev_box.Add(self.opt_spc_end, pos=(0, 1))
        prev_box.Add(self.opt_spc_osc, pos=(1, 0))
        prev_box.Add(self.opt_chk_bkg, flag=wx.EXPAND, pos=(4, 0), span=(1, 2))
        prev_box.Add(self.opt_chk_noise,
                     flag=wx.EXPAND,
                     pos=(5, 0),
                     span=(1, 2))
        prev_box.Add(self.opt_chk_rand,
                     flag=wx.EXPAND,
                     pos=(6, 0),
                     span=(1, 2))
        prev_box.Add(self.opt_spc_scale,
                     flag=wx.EXPAND,
                     pos=(7, 0),
                     span=(1, 2))
        prev_box.Add(self.opt_btn_prev,
                     flag=wx.EXPAND,
                     pos=(8, 0),
                     span=(1, 2))
        prev_box.Add(self.img_canvas, pos=(0, 2), span=(9, 1), flag=wx.EXPAND)
        prev_box.AddGrowableCol(2)
        prev_box.AddGrowableRow(8)

        self.preview_sizer.Add(prev_box, 1, flag=wx.EXPAND | wx.ALL, border=10)

        self.main_sizer.Add(self.project_title,
                            flag=wx.EXPAND | wx.ALL,
                            border=10)
        self.main_sizer.Add(self.project_folder,
                            flag=wx.EXPAND | wx.ALL,
                            border=10)
        self.main_sizer.Add(self.splitter, 1, flag=wx.EXPAND)

        # Button bindings
        self.Bind(wx.EVT_BUTTON, self.onRunPreview, self.opt_btn_prev)

        # Thread bindings
        self.Bind(thr.EVT_NBDONE, self.onFinishedSimThread)

        # Image bindings
        xid = self.img_canvas.mpl_connect('button_press_event',
                                          self.on_button_press)
        xid = self.img_canvas.mpl_connect('button_release_event',
                                          self.on_button_release)
Exemple #6
0
    def __init__(self, parent, phil=None, *args, **kwargs):
        IOTABaseDialog.__init__(self, parent, *args, **kwargs)

        self.pparams = phil.extract()
        self.pref_phil = None

        main_sizer = wx.BoxSizer(wx.VERTICAL)

        main_box = wx.StaticBox(self, label="PRIME Preferences")
        vbox = wx.StaticBoxSizer(main_box, wx.VERTICAL)

        self.SetSizer(main_sizer)

        q_choices = ["psanaq", "psnehq", "psfehq"] + ["custom"]
        self.queues = ct.ChoiceCtrl(
            self,
            label="Queue:",
            label_size=(120, -1),
            label_style="bold",
            ctrl_size=wx.DefaultSize,
            choices=q_choices,
        )
        vbox.Add(self.queues, flag=wx.ALL, border=10)

        self.custom_queue = ct.OptionCtrl(
            self,
            items=[("cqueue", "")],
            label="Custom Queue:",
            label_size=(120, -1),
            label_style="normal",
            ctrl_size=(150, -1),
        )
        self.custom_queue.Disable()
        vbox.Add(self.custom_queue, flag=wx.ALL, border=10)

        self.nodes = ct.SpinCtrl(
            self,
            label="No. of nodes",
            label_size=(120, -1),
            ctrl_value=12,
            ctrl_size=(80, -1),
            ctrl_min=1,
            ctrl_max=5000,
        )
        self.nodes.Disable()
        vbox.Add(self.nodes, flag=wx.ALL, border=10)

        mp_choices = ["multiprocessing", "bsub"]
        self.mp_methods = ct.ChoiceCtrl(
            self,
            label="Method:",
            label_size=(120, -1),
            label_style="bold",
            ctrl_size=wx.DefaultSize,
            choices=mp_choices,
        )
        vbox.Add(self.mp_methods, flag=wx.ALL, border=10)

        main_sizer.Add(vbox, flag=wx.EXPAND | wx.ALL, border=10)

        # Dialog control
        dialog_box = self.CreateSeparatedButtonSizer(wx.OK | wx.CANCEL)
        main_sizer.Add(dialog_box, flag=wx.EXPAND | wx.ALIGN_RIGHT | wx.ALL, border=10)

        self.Bind(wx.EVT_CHOICE, self.onQueue, self.queues.ctr)
        self.Bind(wx.EVT_CHOICE, self.onMethod, self.mp_methods.ctr)
        self.Bind(wx.EVT_BUTTON, self.onOK, id=wx.ID_OK)

        self.set_choices()
Exemple #7
0
    def __init__(self, parent, main_window, run_number):
        wx.Panel.__init__(self, parent=parent)
        self.parent = parent
        self.main_window = main_window
        self.chart_sash_position = 0

        self.all_data = []
        self.new_data = []
        self.run_number = run_number

        self.main_sizer = wx.GridBagSizer(10, 10)

        # Status box
        self.info_panel = wx.Panel(self)
        self.info_sizer = wx.FlexGridSizer(1, 5, 0, 5)
        self.info_sizer.AddGrowableCol(4)
        self.info_panel.SetSizer(self.info_sizer)

        self.count_box = wx.StaticBox(self.info_panel, label="Hits")
        self.count_box_sizer = wx.StaticBoxSizer(self.count_box, wx.HORIZONTAL)
        self.count_txt = wx.StaticText(self.info_panel, label="")
        self.count_box_sizer.Add(self.count_txt,
                                 flag=wx.ALL | wx.ALIGN_CENTER,
                                 border=10)

        self.idx_count_box = wx.StaticBox(self.info_panel, label="Indexed")
        self.idx_count_box_sizer = wx.StaticBoxSizer(self.idx_count_box,
                                                     wx.HORIZONTAL)
        self.idx_count_txt = wx.StaticText(self.info_panel, label="")
        self.idx_count_box_sizer.Add(self.idx_count_txt,
                                     flag=wx.ALL | wx.ALIGN_CENTER,
                                     border=10)

        self.res_box = wx.StaticBox(self.info_panel, label="Median Resolution")
        self.res_box_sizer = wx.StaticBoxSizer(self.res_box, wx.HORIZONTAL)
        self.res_txt = wx.StaticText(self.info_panel, label="")
        self.res_box_sizer.Add(self.res_txt,
                               flag=wx.ALL | wx.ALIGN_CENTER,
                               border=10)

        self.pg_box = wx.StaticBox(self.info_panel, label="Best Lattice")
        self.pg_box_sizer = wx.StaticBoxSizer(self.pg_box, wx.HORIZONTAL)
        self.pg_txt = wx.StaticText(self.info_panel, label="")
        self.pg_box_sizer.Add(self.pg_txt,
                              flag=wx.ALL | wx.ALIGN_CENTER,
                              border=10)

        self.uc_box = wx.StaticBox(self.info_panel, label="Best Unit Cell")
        self.uc_box_sizer = wx.StaticBoxSizer(self.uc_box, wx.HORIZONTAL)
        self.uc_txt = wx.StaticText(self.info_panel, label="")
        self.uc_box_sizer.Add(self.uc_txt,
                              flag=wx.ALL | wx.ALIGN_CENTER,
                              border=10)

        font = wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.BOLD)
        self.count_txt.SetFont(font)
        self.idx_count_txt.SetFont(font)
        self.res_txt.SetFont(font)
        font = wx.Font(16, wx.DEFAULT, wx.NORMAL, wx.BOLD)
        self.pg_txt.SetFont(font)
        self.uc_txt.SetFont(font)

        self.info_sizer.Add(self.count_box_sizer, flag=wx.EXPAND)
        self.info_sizer.Add(self.idx_count_box_sizer, flag=wx.EXPAND)
        self.info_sizer.Add(self.res_box_sizer, flag=wx.EXPAND)
        self.info_sizer.Add(self.pg_box_sizer, flag=wx.EXPAND)
        self.info_sizer.Add(self.uc_box_sizer, flag=wx.EXPAND)

        # Put in chart
        self.graph_panel = wx.Panel(self)
        self.graph_sizer = wx.GridBagSizer(5, 5)

        self.chart_zoom = ZoomCtrl(self.graph_panel, main_window)
        self.chart = TrackChart(self.graph_panel, main_window=self.main_window)
        self.min_bragg = ct.SpinCtrl(
            self.graph_panel,
            label="Min. Bragg spots",
            ctrl_size=(100, -1),
            ctrl_value=10,
        )

        self.graph_sizer.Add(self.chart,
                             flag=wx.EXPAND,
                             pos=(0, 0),
                             span=(1, 3))
        self.graph_sizer.Add(self.min_bragg, flag=wx.ALIGN_LEFT, pos=(1, 0))
        self.graph_sizer.Add(self.chart_zoom, flag=wx.ALIGN_CENTER, pos=(1, 1))

        self.graph_sizer.AddGrowableRow(0)
        self.graph_sizer.AddGrowableCol(1)
        self.graph_panel.SetSizer(self.graph_sizer)

        # Add all to main sizer
        self.main_sizer.Add(self.info_panel,
                            pos=(0, 0),
                            flag=wx.EXPAND | wx.ALL,
                            border=5)
        self.main_sizer.Add(self.graph_panel,
                            pos=(1, 0),
                            flag=wx.EXPAND | wx.ALL,
                            border=5)
        self.main_sizer.AddGrowableCol(0)
        self.main_sizer.AddGrowableRow(1)
        self.SetSizer(self.main_sizer)