def onSelectFont(self, evt=None): fontdata = wx.FontData() fontdata.SetInitialFont(self.GetFont()) dlg = wx.FontDialog(self, fontdata) if dlg.ShowModal() == wx.ID_OK: font = dlg.GetFontData().GetChosenFont() set_font_with_children(self, font) self.Refresh() self.Layout() dlg.Destroy()
def __init__(self, parent=None, pos=(-1, -1), inst=None, db=None): self.epics_pvs = {} title = 'Add New Instrument' if inst is not None: title = 'Edit Instrument %s ' % inst.name style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL wx.Frame.__init__(self, None, -1, title, style=style, pos=pos) self.Handle_FocusEvents() panel = scrolled.ScrolledPanel(self, size=(500, 650), style=wx.GROW|wx.TAB_TRAVERSAL, name='p1') self.colors = GUIColors() font = self.GetFont() if parent is not None: font = parent.GetFont() titlefont = font titlefont.PointSize += 1 titlefont.SetWeight(wx.BOLD) panel.SetBackgroundColour(self.colors.bg) self.parent = parent self.db = db self.inst = db.get_instrument(inst) self.connecting_pvs = {} STY = wx.GROW|wx.ALL|wx.ALIGN_CENTER_VERTICAL LSTY = wx.ALIGN_LEFT|wx.GROW|wx.ALL|wx.ALIGN_CENTER_VERTICAL RSTY = wx.ALIGN_RIGHT|STY CSTY = wx.ALIGN_CENTER|STY CEN = wx.ALIGN_CENTER|wx.GROW|wx.ALL LEFT = wx.ALIGN_LEFT|wx.GROW|wx.ALL self.etimer = wx.Timer(self) self.etimer_count = 0 self.Bind(wx.EVT_TIMER, self.onTimer, self.etimer) sizer = wx.GridBagSizer(12, 3) # Name row label = SimpleText(panel, 'Instrument Name: ', minsize=(150, -1), style=LSTY) self.name = wx.TextCtrl(panel, value='', size=(260, -1)) sizer.Add(label, (0, 0), (1, 1), LSTY, 2) sizer.Add(self.name, (0, 1), (1, 2), LSTY, 2) sizer.Add(wx.StaticLine(panel, size=(195, -1), style=wx.LI_HORIZONTAL), (1, 0), (1, 3), CEN, 2) irow = 2 self.curpvs, self.newpvs = [], {} if inst is not None: self.name.SetValue(inst.name) sizer.Add(SimpleText(panel, 'Current PVs:', font=titlefont, colour=self.colors.title, style=LSTY), (2, 0), (1, 1), LSTY, 2) sizer.Add(SimpleText(panel, 'Display Type:', colour=self.colors.title, style=CSTY), (2, 1), (1, 1), LSTY, 2) sizer.Add(SimpleText(panel, 'Remove?:', colour=self.colors.title, style=CSTY), (2, 2), (1, 1), RSTY, 2) opvs = db.get_ordered_instpvs(inst) for instpvs in self.db.get_ordered_instpvs(inst): pv = instpvs.pv irow += 1 pvchoices = get_pvtypes(pv, instrument) label= SimpleText(panel, pv.name, minsize=(175, -1), style=LSTY) try: itype = pvchoices.index(pv.pvtype.name) except ValueError: itype = 0 pvtype = PVTypeChoice(panel, choices=pvchoices) pvtype.SetSelection(itype) pvtype.SetStringSelection(pv.pvtype.name) del_pv = YesNo(panel, defaultyes=False) self.curpvs.append((pv.name, label, pvtype, del_pv)) sizer.Add(label, (irow, 0), (1, 1), LSTY, 3) sizer.Add(pvtype, (irow, 1), (1, 1), CSTY, 3) sizer.Add(del_pv, (irow, 2), (1, 1), RSTY, 3) irow += 1 sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow, 0), (1, 3), CEN, 0) irow += 1 txt =SimpleText(panel, 'New PVs:', font=titlefont, colour=self.colors.title, style=LSTY) sizer.Add(txt, (irow, 0), (1, 1), LEFT, 3) sizer.Add(SimpleText(panel, 'Display Type', colour=self.colors.title, style=CSTY), (irow, 1), (1, 1), LSTY, 2) sizer.Add(SimpleText(panel, 'Remove?', colour=self.colors.title, style=CSTY), (irow, 2), (1, 1), RSTY, 2) # New PVs for npv in range(5): irow += 1 name = pvNameCtrl(self, panel, value='', size=(175, -1)) pvtype = PVTypeChoice(panel) del_pv = YesNo(panel, defaultyes=False) pvtype.Disable() del_pv.Disable() sizer.Add(name, (irow, 0), (1, 1), LSTY, 3) sizer.Add(pvtype, (irow, 1), (1, 1), CSTY, 3) sizer.Add(del_pv, (irow, 2), (1, 1), RSTY, 3) self.newpvs[name.GetId()] = dict(index=npv, name=name, type=pvtype, delpv=del_pv) btn_panel = wx.Panel(panel, size=(75, -1)) btn_sizer = wx.BoxSizer(wx.HORIZONTAL) btn_ok = add_button(btn_panel, 'Done', size=(70, -1), action=self.OnDone) btn_cancel = add_button(btn_panel, 'Cancel', size=(70, -1), action=self.onCancel) btn_sizer.Add(btn_ok, 0, wx.ALIGN_LEFT, 2) btn_sizer.Add(btn_cancel, 0, wx.ALIGN_RIGHT, 2) pack(btn_panel, btn_sizer) irow += 1 sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow, 0), (1, 3), CEN, 2) sizer.Add(btn_panel, (irow+1, 1), (1, 2), CEN, 2) sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow+2, 0), (1, 3), CEN, 2) set_font_with_children(self, font) pack(panel, sizer) panel.SetupScrolling() mainsizer = wx.BoxSizer(wx.VERTICAL) mainsizer.Add(panel, 1, LSTY) pack(self, mainsizer) self.Layout() self.Show() self.Raise()
def __init__(self, parent=None, pos=(-1, -1), db=None): self.parent = parent self.db = db style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL labstyle = wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL rlabstyle = wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALL tstyle = wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL wx.Frame.__init__(self, None, -1, 'Epics Instruments: Settings') font = parent.GetFont() titlefont = self.GetFont() titlefont.PointSize += 2 titlefont.SetWeight(wx.BOLD) sizer = wx.GridBagSizer(10, 5) panel = wx.Panel(self) # title row self.colors = GUIColors() panel.SetBackgroundColour(self.colors.bg) title = SimpleText(panel, 'Positions Settings', font=titlefont, minsize=(130, -1), colour=self.colors.title, style=tstyle) self.v_move = wx.CheckBox(panel, -1, 'Verify Move')# , style=wx.ALIGN_RIGHT) self.v_erase = wx.CheckBox(panel, -1, 'Verify Erase ')# style=wx.ALIGN_RIGHT) self.v_owrite = wx.CheckBox(panel, -1, 'Verify Overwrie')#, style=wx.ALIGN_RIGHT) self.v_move.SetValue(1==int(self.db.get_info('verify_move'))) self.v_erase.SetValue(1==int(self.db.get_info('verify_erase'))) self.v_owrite.SetValue(1==int(self.db.get_info('verify_overwrite'))) sizer.Add(title, (0, 0), (1, 1), labstyle|wx.ALL, 5) sizer.Add(self.v_move, (1, 0), (1, 1), labstyle, 5) sizer.Add(self.v_erase, (2, 0), (1, 1), labstyle, 5) sizer.Add(self.v_owrite,(3, 0), (1, 1), labstyle, 5) sizer.Add(wx.StaticLine(panel, size=(2, 50), style=wx.LI_VERTICAL), (0, 2), (4, 1), wx.ALIGN_CENTER|wx.GROW|wx.ALL, 3) title = SimpleText(panel, ' Epics Database Connection:', font=titlefont, colour=self.colors.title, style=tstyle) label = SimpleText(panel, 'DB Prefix:') self.epics_prefix = wx.TextCtrl(panel, -1, value='', size=(160, -1)) self.epics_use = wx.CheckBox(panel, -1, 'Use Epics Db') self.epics_use.SetValue(1==int(self.db.get_info('epics_use', default=0))) self.epics_prefix.SetValue(self.db.get_info('epics_prefix', default='')) sizer.Add(title, (0, 3), (1, 2), labstyle|wx.GROW|wx.ALL, 5) sizer.Add(label, (1, 3), (1, 1), labstyle|wx.ALL, 5) sizer.Add(self.epics_prefix, (1, 4), (1, 1), labstyle|wx.GROW|wx.ALL, 5) sizer.Add(self.epics_use, (2, 3), (1, 2), labstyle|wx.GROW|wx.ALL, 5) irow = 4 sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow, 0), (1, 5), wx.ALIGN_CENTER|wx.GROW|wx.ALL, 3) title = SimpleText(panel, 'Show Instruments:', font=titlefont, minsize=(130, -1), colour=self.colors.title, style=tstyle) irow += 1 sizer.Add(title, (irow, 0), (1, 2), labstyle|wx.ALL, 3) self.hideframes = {} strlen = 24 for inst in self.db.get_all_instruments(): strlen = max(strlen, len(inst.name)) for inst in self.db.get_all_instruments(): irow += 1 isshown = inst.name in self.get_page_map() iname = (inst.name + ' '*strlen)[:strlen] cb = wx.CheckBox(panel, -1, iname)#, style=wx.ALIGN_RIGHT) cb.SetValue(isshown) self.hideframes[inst.name] = cb sizer.Add(cb, (irow, 0), (1, 1), labstyle, 5) irow += 1 sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow, 0), (1, 5), wx.ALIGN_CENTER|wx.GROW|wx.ALL, 5) btn_ok = add_button(panel, 'OK', size=(70, -1), action=self.OnOK) btn_cancel = add_button(panel, 'Cancel', size=(70, -1), action=self.OnCancel) irow += 1 sizer.Add(btn_ok, (irow, 0), (1, 1), labstyle|wx.ALL, 5) sizer.Add(btn_cancel, (irow, 1), (1, 1), labstyle|wx.ALL, 5) set_font_with_children(self, font) pack(panel, sizer) mainsizer = wx.BoxSizer(wx.VERTICAL) mainsizer.Add(panel, 1, wx.GROW|wx.ALL, 1) pack(self, mainsizer) self.Show() self.Raise()
def __init__(self, parent=None, pos=(-1, -1), inst=None, db=None, epics_pvs=None): self.epics_pvs = epics_pvs if self.epics_pvs is None: self.epics_pvs = {} title = 'Add New Instrument' if inst is not None: title = 'Edit Instrument %s ' % inst.name style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL wx.Frame.__init__(self, None, -1, title, style=style, pos=pos) self.Handle_FocusEvents() panel = scrolled.ScrolledPanel(self, size=(500, 650), style=wx.GROW|wx.TAB_TRAVERSAL, name='p1') self.colors = GUIColors() font = self.GetFont() if parent is not None: font = parent.GetFont() titlefont = font titlefont.PointSize += 1 titlefont.SetWeight(wx.BOLD) panel.SetBackgroundColour(self.colors.bg) self.parent = parent self.db = db self.inst = db.get_instrument(inst) self.connecting_pvs = {} STY = wx.GROW|wx.ALL|wx.ALIGN_CENTER_VERTICAL LSTY = wx.ALIGN_LEFT|wx.GROW|wx.ALL|wx.ALIGN_CENTER_VERTICAL RSTY = wx.ALIGN_RIGHT|STY CSTY = wx.ALIGN_CENTER|STY CEN = wx.ALIGN_CENTER|wx.GROW|wx.ALL LEFT = wx.ALIGN_LEFT|wx.GROW|wx.ALL self.etimer = wx.Timer(self) self.etimer_count = 0 self.Bind(wx.EVT_TIMER, self.onTimer, self.etimer) sizer = wx.GridBagSizer(12, 3) # Name row label = SimpleText(panel, 'Instrument Name: ', minsize=(150, -1), style=LSTY) self.name = wx.TextCtrl(panel, value='', size=(260, -1)) sizer.Add(label, (0, 0), (1, 1), LSTY, 2) sizer.Add(self.name, (0, 1), (1, 2), LSTY, 2) sizer.Add(wx.StaticLine(panel, size=(195, -1), style=wx.LI_HORIZONTAL), (1, 0), (1, 3), CEN, 2) irow = 2 self.curpvs, self.newpvs = [], {} if inst is not None: self.name.SetValue(inst.name) sizer.Add(SimpleText(panel, 'Current PVs:', font=titlefont, colour=self.colors.title, style=LSTY), (2, 0), (1, 1), LSTY, 2) sizer.Add(SimpleText(panel, 'Display Type:', colour=self.colors.title, style=CSTY), (2, 1), (1, 1), LSTY, 2) sizer.Add(SimpleText(panel, 'Remove?:', colour=self.colors.title, style=CSTY), (2, 2), (1, 1), RSTY, 2) opvs = db.get_ordered_instpvs(inst) for instpvs in self.db.get_ordered_instpvs(inst): pv = instpvs.pv irow += 1 if pv.name in self.epics_pvs: pvchoices = get_pvtypes(self.epics_pvs[pv.name], instrument) else: pvchoices = get_pvtypes(pv, instrument) label= SimpleText(panel, pv.name, minsize=(175, -1), style=LSTY) try: itype = pvchoices.index(pv.pvtype.name) except ValueError: itype = 0 pvtype = PVTypeChoice(panel, choices=pvchoices) pvtype.SetSelection(itype) pvtype.SetStringSelection(pv.pvtype.name) del_pv = YesNo(panel, defaultyes=False) self.curpvs.append((pv.name, label, pvtype, del_pv)) sizer.Add(label, (irow, 0), (1, 1), LSTY, 3) sizer.Add(pvtype, (irow, 1), (1, 1), CSTY, 3) sizer.Add(del_pv, (irow, 2), (1, 1), RSTY, 3) irow += 1 sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow, 0), (1, 3), CEN, 0) irow += 1 txt =SimpleText(panel, 'New PVs:', font=titlefont, colour=self.colors.title, style=LSTY) sizer.Add(txt, (irow, 0), (1, 1), LEFT, 3) sizer.Add(SimpleText(panel, 'Display Type', colour=self.colors.title, style=CSTY), (irow, 1), (1, 1), LSTY, 2) sizer.Add(SimpleText(panel, 'Remove?', colour=self.colors.title, style=CSTY), (irow, 2), (1, 1), RSTY, 2) # New PVs for npv in range(5): irow += 1 name = pvNameCtrl(self, panel, value='', size=(175, -1)) pvtype = PVTypeChoice(panel) del_pv = YesNo(panel, defaultyes=False) pvtype.Disable() del_pv.Disable() sizer.Add(name, (irow, 0), (1, 1), LSTY, 3) sizer.Add(pvtype, (irow, 1), (1, 1), CSTY, 3) sizer.Add(del_pv, (irow, 2), (1, 1), RSTY, 3) self.newpvs[name.GetId()] = dict(index=npv, name=name, type=pvtype, delpv=del_pv) btn_panel = wx.Panel(panel, size=(75, -1)) btn_sizer = wx.BoxSizer(wx.HORIZONTAL) btn_ok = add_button(btn_panel, 'Done', size=(70, -1), action=self.OnDone) btn_cancel = add_button(btn_panel, 'Cancel', size=(70, -1), action=self.onCancel) btn_sizer.Add(btn_ok, 0, wx.ALIGN_LEFT, 2) btn_sizer.Add(btn_cancel, 0, wx.ALIGN_RIGHT, 2) pack(btn_panel, btn_sizer) irow += 1 sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow, 0), (1, 3), CEN, 2) sizer.Add(btn_panel, (irow+1, 1), (1, 2), CEN, 2) sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow+2, 0), (1, 3), CEN, 2) set_font_with_children(self, font) pack(panel, sizer) panel.SetupScrolling() mainsizer = wx.BoxSizer(wx.VERTICAL) mainsizer.Add(panel, 1, LSTY) pack(self, mainsizer) self.Layout() self.Show() self.Raise()
def __init__(self, parent=None, pos=(-1, -1), db=None): self.parent = parent self.db = db style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL labstyle = wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL rlabstyle = wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALL tstyle = wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL wx.Frame.__init__(self, None, -1, 'Epics Instruments: Select Instruments to Display') font = parent.GetFont() titlefont = self.GetFont() titlefont.PointSize += 2 titlefont.SetWeight(wx.BOLD) sizer = wx.GridBagSizer(10, 5) panel = wx.Panel(self) # title row self.colors = GUIColors() panel.SetBackgroundColour(self.colors.bg) title = SimpleText(panel, 'Show Instruments:', font=titlefont, colour=self.colors.title, style=tstyle) irow = 0 sizer.Add(title, (irow, 0), (1, 4), labstyle|wx.ALL, 3) self.hideframes = {} strlen = 24 for inst in self.db.get_all_instruments(): strlen = max(strlen, len(inst.name)) for inst in self.db.get_all_instruments(): irow += 1 isshown = inst.name in self.get_page_map() iname = (inst.name + ' '*strlen)[:strlen] cb = wx.CheckBox(panel, -1, iname)#, style=wx.ALIGN_RIGHT) cb.SetValue(isshown) self.hideframes[inst.name] = cb sizer.Add(cb, (irow, 0), (1, 1), labstyle, 5) irow += 1 sizer.Add(wx.StaticLine(panel, size=(150, -1), style=wx.LI_HORIZONTAL), (irow, 0), (1, 5), wx.ALIGN_CENTER|wx.GROW|wx.ALL, 5) btn_ok = add_button(panel, 'OK', size=(70, -1), action=self.OnOK) btn_cancel = add_button(panel, 'Cancel', size=(70, -1), action=self.OnCancel) irow += 1 sizer.Add(btn_ok, (irow, 0), (1, 1), labstyle|wx.ALL, 5) sizer.Add(btn_cancel, (irow, 1), (1, 1), labstyle|wx.ALL, 5) set_font_with_children(self, font) pack(panel, sizer) mainsizer = wx.BoxSizer(wx.VERTICAL) mainsizer.Add(panel, 1, wx.GROW|wx.ALL, 1) pack(self, mainsizer) self.Show() self.Raise()