def create_detbuttons(self, pane): btnpanel = wx.Panel(pane, name='buttons') btnsizer = wx.GridBagSizer(1, 1) btns = {} sx = 30 sy = int(sx / 2) for i in range(1, self.nmca + 1): b = Button(btnpanel, '%d' % i, size=(sx, sx), action=partial(self.onSelectDet, index=i)) b.SetFont(Font(10)) self.wids['det%i' % i] = b btns[i] = b dtype = self.det_type.lower().replace('-', '').replace(' ', '').replace('_', '') if dtype.startswith('sxd7') and self.nmca == 7: btnsizer.Add((sx, sy), (0, 0), (1, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[4], (1, 0), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[5], (3, 0), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add((sx, sy), (5, 0), (1, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[3], (0, 2), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[7], (2, 2), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[6], (4, 2), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add((sx, sy), (0, 4), (1, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[2], (1, 4), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[1], (3, 4), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add((sx, sy), (5, 4), (1, 2), wx.ALIGN_LEFT, 1) elif dtype.startswith('me7') and self.nmca == 7: btnsizer.Add((sx, sy), (0, 0), (1, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[7], (1, 0), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[6], (3, 0), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add((sx, sy), (5, 0), (1, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[2], (0, 2), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[1], (2, 2), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[5], (4, 2), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add((sx, sy), (0, 4), (1, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[3], (1, 4), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[4], (3, 4), (2, 2), wx.ALIGN_LEFT, 1) btnsizer.Add((sx, sy), (5, 4), (1, 2), wx.ALIGN_LEFT, 1) elif dtype.startswith('me4') and self.nmca == 4: btnsizer.Add(btns[1], (0, 0), (1, 1), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[2], (1, 0), (1, 1), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[3], (1, 1), (1, 1), wx.ALIGN_LEFT, 1) btnsizer.Add(btns[4], (0, 1), (1, 1), wx.ALIGN_LEFT, 1) else: NPERROW = 4 icol, irow = 0, 0 for nmca in range(1, self.nmca + 1): btnsizer.Add(btns[nmca], (irow, icol), (1, 1), wx.ALIGN_LEFT, 1) icol += 1 if icol > NPERROW - 1: icol = 0 irow += 1 pack(btnpanel, btnsizer) return btnpanel
def Btn(msg, x, act): b = Button(ltop, msg, size=(x, 30), action=act) b.SetFont(Font(10)) return b
def createEpicsPanel(self): pane = wx.Panel(self, name='epics panel') psizer = wx.GridBagSizer(4, 12) # wx.BoxSizer(wx.HORIZONTAL) btnpanel = wx.Panel(pane, name='buttons') nmca = self.nmca NPERROW = 6 self.SetFont(Font(9)) if self.det_type.lower().startswith('me-4') and nmca<5: btnsizer = wx.GridBagSizer(2, 2) else: btnsizer = wx.GridBagSizer(int((nmca+NPERROW-2)/(1.0*NPERROW)), NPERROW) style = wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL rstyle = wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL bkg_choices = ['None'] psizer.Add(SimpleText(pane, ' MCAs: '), (0, 0), (1, 1), style, 1) for i in range(1, 1+nmca): bkg_choices.append("%i" % i) b = Button(btnpanel, '%i' % i, size=(30, 30), action=partial(self.onSelectDet, index=i)) b.SetFont(Font(10)) self.wids['det%i' % i] = b loc = divmod(i-1, NPERROW) if self.det_type.lower().startswith('me-4') and nmca<NPERROW-1: loc = self.me4_layout[i-1] btnsizer.Add(b, loc, (1, 1), style, 1) pack(btnpanel, btnsizer) nrows = 1 + loc[0] if self.det_type.lower().startswith('me-4') and nmca<5: nrows = 2 psizer.Add(btnpanel, (0, 1), (nrows, 1), style, 1) self.wids['det_status'] = SimpleText(pane, ' ', size=(120, -1), style=style) self.wids['deadtime'] = SimpleText(pane, ' ', size=(120, -1), style=style) self.wids['bkg_det'] = Choice(pane, size=(100, -1), choices=bkg_choices, action=self.onSelectDet) self.wids['dwelltime'] = FloatCtrl(pane, value=0.0, precision=1, minval=0, size=(80, -1), act_on_losefocus=True, action=self.onSetDwelltime) self.wids['elapsed'] = SimpleText(pane, ' ', size=(80, -1), style=style) self.wids['mca_sum'] = Choice(pane, size=(100, -1), choices=['Single', 'Accumulate'], action=self.onMcaSumChoice, default=1 ) b1 = Button(pane, 'Start', size=(90, -1), action=self.onStart) b2 = Button(pane, 'Stop', size=(90, -1), action=self.onStop) b3 = Button(pane, 'Erase', size=(90, -1), action=self.onErase) b4 = Button(pane, 'Continuous', size=(90, -1), action=partial(self.onStart, dtime=0.0)) sum_lab = SimpleText(pane, 'Accumulate Mode:', size=(150, -1)) bkg_lab = SimpleText(pane, 'Background MCA:', size=(150, -1)) pre_lab = SimpleText(pane, 'Dwell Time (s):', size=(125, -1)) ela_lab = SimpleText(pane, 'Elapsed Time (s):', size=(125, -1)) sta_lab = SimpleText(pane, 'Status :', size=(100, -1)) dea_lab = SimpleText(pane, '% Deadtime:', size=(100, -1)) psizer.Add(bkg_lab, (0, 2), (1, 1), style, 1) psizer.Add(self.wids['bkg_det'], (0, 3), (1, 1), style, 1) psizer.Add(sum_lab, (1, 2), (1, 1), style, 1) psizer.Add(self.wids['mca_sum'], (1, 3), (1, 1), style, 1) psizer.Add(pre_lab, (0, 4), (1, 1), style, 1) psizer.Add(ela_lab, (1, 4), (1, 1), style, 1) psizer.Add(self.wids['dwelltime'], (0, 5), (1, 1), style, 1) psizer.Add(self.wids['elapsed'], (1, 5), (1, 1), style, 1) psizer.Add(b1, (0, 6), (1, 1), style, 1) psizer.Add(b4, (0, 7), (1, 1), style, 1) psizer.Add(b2, (1, 6), (1, 1), style, 1) psizer.Add(b3, (1, 7), (1, 1), style, 1) psizer.Add(sta_lab, (0, 8), (1, 1), style, 1) psizer.Add(self.wids['det_status'], (0, 9), (1, 1), style, 1) psizer.Add(dea_lab, (1, 8), (1, 1), style, 1) psizer.Add(self.wids['deadtime'], (1, 9), (1, 1), style, 1) pack(pane, psizer) # pane.SetMinSize((500, 53)) self.det.connect_displays(status=self.wids['det_status'], elapsed=self.wids['elapsed']) wx.CallAfter(self.onSelectDet, index=1, init=True) self.timer_counter = 0 self.mca_timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.UpdateData, self.mca_timer) self.mca_timer.Start(100) return pane