def __init__(self, parent, symbol, *args, **kwds): wx.Panel.__init__(self, parent, *args, **kwds) self.symbol = symbol self.parent = parent self.cbmap = { _("Backward diagonal"): wx.BDIAGONAL_HATCH, _("Cross-diagonal"): wx.CROSSDIAG_HATCH, _("Forward diagonal"): wx.FDIAGONAL_HATCH, _("Cross"): wx.CROSS_HATCH, _("Horizontal"): wx.HORIZONTAL_HATCH, _("Vertical"): wx.VERTICAL_HATCH } cblist = self.cbmap.keys() self.colorbut = csel.ColourSelect(self, -1, "", symbol["color"], size=(30, 20)) self.cb = wx.ComboBox(self, 500, cblist[0], (90, 50), (95, -1), cblist, wx.CB_DROPDOWN | wx.CB_READONLY) self.cb.Bind(wx.EVT_COMBOBOX, self.SelectHatch) self.olcolorbut = csel.ColourSelect(self, -1, "", symbol["olcolor"], size=(30, 20)) self.sizesc = wx.SpinCtrl(self, -1, "") self.sizesc.SetRange(1, 100) self.sizesc.SetValue(symbol["size"]) self.colorbut.Bind(csel.EVT_COLOURSELECT, parent.ChangeColor) self.olcolorbut.Bind(csel.EVT_COLOURSELECT, parent.ChangeOLColor) self.sizesc.Bind(wx.EVT_SPINCTRL, parent.ChangeSize) box = wx.StaticBox(self, -1, _("Option")) bsizer = wx.StaticBoxSizer(box, wx.VERTICAL) sizer_1 = wx.BoxSizer(wx.VERTICAL) sizer_2 = wx.FlexGridSizer(cols=2, vgap=4, hgap=4) sizer_2.Add(wx.StaticText(self, -1, _("Style") + ":"), 0, wx.ADJUST_MINSIZE | wx.ALL, 10) sizer_2.Add(self.cb) sizer_2.Add(wx.StaticText(self, -1, _("color") + ":"), 0, wx.ADJUST_MINSIZE | wx.ALL, 10) sizer_2.Add(self.colorbut, 0, wx.ADJUST_MINSIZE, 10) sizer_2.Add(wx.StaticText(self, -1, _("size") + ":"), 0, wx.ADJUST_MINSIZE | wx.ALL, 10) sizer_2.Add(self.sizesc, 0, wx.ADJUST_MINSIZE, 10) sizer_2.Add(wx.StaticText(self, -1, _("outline color") + ":"), 0, wx.ADJUST_MINSIZE | wx.ALL, 10) sizer_2.Add(self.olcolorbut, 0, wx.ADJUST_MINSIZE, 10) bsizer.Add(sizer_2, 1, wx.ADJUST_MINSIZE, 0) sizer_1.Add(bsizer, 1, wx.EXPAND, 0) self.SetAutoLayout(True) self.SetSizer(sizer_1) sizer_1.Fit(self) sizer_1.SetSizeHints(self) self.Layout() #加载初始配置 self.SelectHatch(None) if 'bitmap' in self.parent.symbol: self.parent.symbol.pop('bitmap')
def createframe(self): #绑定窗口的关闭事件 self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) # 小区ID id_cell = wx.StaticText(self.panel, -1, u'小区ID:') self.id_cell_t = wx.TextCtrl(self.panel, -1, "0", style=wx.TE_READONLY) # 系统带宽 bandwidth = wx.StaticText(self.panel, -1, u'系统带宽:') self.bandwidth_t = wx.TextCtrl(self.panel, -1, "0", style=wx.TE_READONLY) #实时载波频率偏差值 cfo_st = wx.StaticText(self.panel, -1, u"实时载波频率偏差:") self.cfo = wx.TextCtrl(self.panel, -1, "0", style=wx.TE_READONLY) #实时细定时误差 fte_st = wx.StaticText(self.panel, -1, u"实时细定时误差:") self.fte = wx.TextCtrl(self.panel, -1, "0", style=wx.TE_READONLY) #峰值位置 pss_pos_st = wx.StaticText(self.panel, -1, u"峰值位置:") self.pss_pos = wx.TextCtrl(self.panel, -1, "0", style=wx.TE_READONLY) #主同步状态是否锁定 pss_status_st = wx.StaticText(self.panel, -1, u"主同步状态:\t\t\t") self.pss_status = PanelOne(self.panel) #辅同步状态是否锁定 sss_status_st = wx.StaticText(self.panel, -1, u"辅同步状态:\t\t\t") self.sss_status = PanelOne(self.panel) #pbch是否找到 pbch_status_st = wx.StaticText(self.panel, -1, u"pbch是否找到:\t\t\t") self.pbch_status = PanelOne(self.panel) #当前处理状态 process_state_st = wx.StaticText(self.panel, -1, u"处理状态(捕获/跟踪):\t\t\t") self.process_state = PanelOne(self.panel) #MAC_PDU个数、误帧率、帧号、子帧号 # status_bar_lable = "MAC_PDU个数:\t\t\t误帧率:\t" # self.status_bar = wx.TextCtrl(self.panel, -1, status_bar_lable, style=wx.TE_READONLY) mac_pdu = wx.StaticText(self.panel, -1, u"mac_pdu的个数:\t") self.mac_pdu_value = wx.StaticText(self.panel, -1, '') frame_error_rate = wx.StaticText(self.panel, -1, u"误帧率:\t") self.frame_error_rate_value = wx.StaticText(self.panel, -1, '') fn_st = wx.StaticText(self.panel, -1, u"帧号:\t") self.fn = wx.StaticText(self.panel, -1, '') sfn_st = wx.StaticText(self.panel, -1, u"子帧号:\t") self.sfn = wx.StaticText(self.panel, -1, '') #连接按钮 self.connect_button = wx.Button(self.panel, -1, u"连接") self.connect_button.SetBackgroundColour('black') self.connect_button.SetForegroundColour('white') self.Bind(wx.EVT_BUTTON, self.OnConnect, self.connect_button) # self.connect_button.SetDefault() #设置连接服务器的IP地址和端口号 self.terminal_config.read("terminal.conf") try: s_ip = self.terminal_config.get("address", "s_ip") except: s_ip = '192.168.139.180' try: s_port = self.terminal_config.get("address", "s_port") except: s_port = '7000' ip_st = wx.StaticText(self.panel, -1, u"IP地址 :") self.IPText = wx.TextCtrl(self.panel, -1, s_ip) port_st = wx.StaticText(self.panel, -1, u"端口号 :") self.PortText = wx.TextCtrl(self.panel, -1, s_port) #######开始布局############ sizer1 = wx.FlexGridSizer(cols=2, hgap=10, vgap=10) sizer1.AddGrowableCol(1) sizer1.Add(id_cell, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer1.Add(self.id_cell_t, 0, wx.EXPAND) sizer1.Add(bandwidth, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer1.Add(self.bandwidth_t, 0, wx.EXPAND) sizer1.Add(pss_pos_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer1.Add(self.pss_pos, 0, wx.EXPAND) sizer1.Add(fte_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer1.Add(self.fte, 0, wx.EXPAND) sizer1.Add(cfo_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer1.Add(self.cfo, 0, wx.EXPAND) sizer11 = wx.FlexGridSizer(cols=2, hgap=10, vgap=10) sizer11.AddGrowableCol(1) sizer11.Add(pss_status_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer11.Add(self.pss_status, 0, wx.EXPAND) sizer11.Add(sss_status_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer11.Add(self.sss_status, 0, wx.EXPAND) sizer11.Add(pbch_status_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer11.Add(self.pbch_status, 0, wx.EXPAND) sizer11.Add(process_state_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer11.Add(self.process_state, 0, wx.EXPAND) sizer111 = wx.FlexGridSizer(cols=4, hgap=10, vgap=10) sizer111.AddGrowableCol(1) sizer111.AddGrowableCol(3) sizer111.Add(frame_error_rate, 0, wx.ALIGN_CENTER_VERTICAL) sizer111.Add(self.frame_error_rate_value, 0, wx.EXPAND) sizer111.Add(mac_pdu, 0, wx.ALIGN_CENTER_VERTICAL) sizer111.Add(self.mac_pdu_value, 0, wx.EXPAND) sizer111.Add(fn_st, 0, wx.ALIGN_CENTER_VERTICAL) sizer111.Add(self.fn, 0, wx.EXPAND) sizer111.Add(sfn_st, 0, wx.ALIGN_CENTER_VERTICAL) sizer111.Add(self.sfn, 0, wx.EXPAND) sizer2 = wx.StaticBoxSizer(wx.StaticBox(self.panel, wx.NewId(), u'状态显示'), wx.VERTICAL) sizer2.Add(sizer1, 0, wx.EXPAND | wx.ALL, 10) sizer2.Add(wx.StaticLine(self.panel), 0,wx.EXPAND|wx.TOP|wx.BOTTOM,10) sizer2.Add(sizer11, 0, wx.EXPAND | wx.ALL, 10) sizer2.Add(wx.StaticLine(self.panel), 0,wx.EXPAND|wx.TOP|wx.BOTTOM,10) sizer2.Add(sizer111, 0, wx.EXPAND | wx.ALL, 10) sizer3 = wx.FlexGridSizer(cols=2, hgap=10, vgap=10) sizer3.AddGrowableCol(1) sizer3.Add(ip_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer3.Add(self.IPText, 3, wx.EXPAND) sizer3.Add(port_st, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL) sizer3.Add(self.PortText, 1, wx.EXPAND) #连接按钮 sizer4 = wx.BoxSizer(wx.HORIZONTAL) sizer4.Add((20,20), 1) sizer4.Add(self.connect_button, 0, wx.ALIGN_RIGHT) sizer5 = wx.StaticBoxSizer(wx.StaticBox(self.panel, wx.NewId(), u'连接服务器'), wx.VERTICAL) sizer5.Add(sizer3, 0, wx.EXPAND | wx.ALL, 10) sizer5.Add(sizer4, 0, wx.EXPAND | wx.ALL, 10) box1 = wx.BoxSizer(wx.VERTICAL) box1.Add(sizer2,0,wx.EXPAND | wx.ALL, 25) box1.Add(wx.StaticLine(self.panel), 0,wx.EXPAND|wx.TOP|wx.BOTTOM,0) box1.Add(sizer5,0,wx.EXPAND | wx.ALL | wx.BOTTOM, 25) #自动调整界面尺寸 self.panel.SetSizer(box1)
def __init__(self, parent, controller): wx.Dialog.__init__(self, parent, size=wx.Size(500, 300), title=_('Create a new divergence or convergence')) main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) main_sizer.AddGrowableCol(0) main_sizer.AddGrowableRow(0) column_sizer = wx.BoxSizer(wx.HORIZONTAL) main_sizer.AddSizer(column_sizer, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT) left_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=7, vgap=5) left_gridsizer.AddGrowableCol(0) column_sizer.AddSizer(left_gridsizer, 1, border=5, flag=wx.GROW|wx.RIGHT) type_label = wx.StaticText(self, label=_('Type:')) left_gridsizer.AddWindow(type_label, flag=wx.GROW) self.SelectionDivergence = wx.RadioButton(self, label=_('Selection Divergence'), style=wx.RB_GROUP) self.SelectionDivergence.SetValue(True) self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.SelectionDivergence) left_gridsizer.AddWindow(self.SelectionDivergence, flag=wx.GROW) self.SelectionConvergence = wx.RadioButton(self, label=_('Selection Convergence')) self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.SelectionConvergence) left_gridsizer.AddWindow(self.SelectionConvergence, flag=wx.GROW) self.SimultaneousDivergence = wx.RadioButton(self, label=_('Simultaneous Divergence')) self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.SimultaneousDivergence) left_gridsizer.AddWindow(self.SimultaneousDivergence, flag=wx.GROW) self.SimultaneousConvergence = wx.RadioButton(self, label=_('Simultaneous Convergence')) self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.SimultaneousConvergence) left_gridsizer.AddWindow(self.SimultaneousConvergence, flag=wx.GROW) sequences_label = wx.StaticText(self, label=_('Number of sequences:')) left_gridsizer.AddWindow(sequences_label, flag=wx.GROW) self.Sequences = wx.SpinCtrl(self, min=2, max=20) self.Bind(wx.EVT_SPINCTRL, self.OnSequencesChanged, self.Sequences) left_gridsizer.AddWindow(self.Sequences, flag=wx.GROW) right_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) right_gridsizer.AddGrowableCol(0) right_gridsizer.AddGrowableRow(1) column_sizer.AddSizer(right_gridsizer, 1, border=5, flag=wx.GROW|wx.LEFT) preview_label = wx.StaticText(self, label=_('Preview:')) right_gridsizer.AddWindow(preview_label, flag=wx.GROW) self.Preview = wx.Panel(self, style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER) self.Preview.SetBackgroundColour(wx.Colour(255,255,255)) self.Preview.Bind(wx.EVT_PAINT, self.OnPaint) setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE) setattr(self.Preview, "IsOfType", controller.IsOfType) right_gridsizer.AddWindow(self.Preview, flag=wx.GROW) button_sizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE) main_sizer.AddSizer(button_sizer, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT) self.SetSizer(main_sizer) self.Divergence = None self.MinSize = (0, 0) self.SelectionDivergence.SetFocus()
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"Scanning TRPL Time Histogram Map", pos=wx.DefaultPosition, size=wx.Size(1024, 640), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.HORIZONTAL) self.m_panel4 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer4 = wx.FlexGridSizer(0, 1, 0, 0) fgSizer4.SetFlexibleDirection(wx.BOTH) fgSizer4.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_panel_scanarea = wx.Panel(self.m_panel4, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer_scanarea = wx.FlexGridSizer(0, 4, 0, 0) fgSizer_scanarea.SetFlexibleDirection(wx.BOTH) fgSizer_scanarea.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText1 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"Scan Area", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText1.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText1, 0, wx.ALL, 5) self.m_staticText_maxdim = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"max: 100 x 100 um", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText_maxdim.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText_maxdim, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText2 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"X:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText2.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText2, 0, wx.ALL, 5) self.m_textCtrl_x0 = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_textCtrl_x0, 0, wx.ALL | wx.EXPAND, 5) self.m_textCtrl_x1 = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"75", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_textCtrl_x1, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText3 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"um", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText3, 0, wx.ALL, 5) self.m_staticText4 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"Y:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText4.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText4, 0, wx.ALL, 5) self.m_textCtrl_y0 = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_textCtrl_y0, 0, wx.ALL | wx.EXPAND, 5) self.m_textCtrl_y1 = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"75", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_textCtrl_y1, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText5 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"um", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText5.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText5, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText11 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"Scan Step", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText11.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText11, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText111 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"dX:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText111.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText111, 0, wx.ALL, 5) self.m_textCtrl_dx = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"1000", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_textCtrl_dx, 0, wx.ALL, 5) self.m_staticText12 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"nm", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText12.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText12, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText13 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"dY:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText13.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText13, 0, wx.ALL, 5) self.m_textCtrl_dy = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"1000", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_textCtrl_dy, 0, wx.ALL, 5) self.m_staticText14 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"nm", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText14.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText14, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText15 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"Current Position", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText15.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText15, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText18 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"x:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText18.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText18, 0, wx.ALL, 5) self.m_textCtrl_current_x = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) self.m_textCtrl_current_x.SetBackgroundColour(wx.Colour(255, 128, 0)) fgSizer_scanarea.Add(self.m_textCtrl_current_x, 0, wx.ALL, 5) self.m_textCtrl_set_current_x = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_PROCESS_ENTER) fgSizer_scanarea.Add(self.m_textCtrl_set_current_x, 0, wx.ALL, 5) self.m_staticText19 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"um", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText19.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText19, 0, wx.ALL, 5) self.m_staticText20 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"y:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText20.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText20, 0, wx.ALL, 5) self.m_textCtrl_current_y = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) self.m_textCtrl_current_y.SetForegroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) self.m_textCtrl_current_y.SetBackgroundColour(wx.Colour(255, 128, 0)) fgSizer_scanarea.Add(self.m_textCtrl_current_y, 0, wx.ALL, 5) self.m_textCtrl_set_current_y = wx.TextCtrl(self.m_panel_scanarea, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_PROCESS_ENTER) fgSizer_scanarea.Add(self.m_textCtrl_set_current_y, 0, wx.ALL, 5) self.m_staticText21 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"um", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText21.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText21, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText23 = wx.StaticText(self.m_panel_scanarea, wx.ID_ANY, u"Scan Control", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText23.Wrap(-1) fgSizer_scanarea.Add(self.m_staticText23, 0, wx.ALL, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer_scanarea.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_button_start = wx.Button(self.m_panel_scanarea, wx.ID_ANY, u"Start Scan", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_button_start, 1, wx.ALL | wx.EXPAND, 5) self.m_button_stop = wx.Button(self.m_panel_scanarea, wx.ID_ANY, u"Stop Scan", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer_scanarea.Add(self.m_button_stop, 1, wx.ALL | wx.EXPAND, 5) self.m_panel_scanarea.SetSizer(fgSizer_scanarea) self.m_panel_scanarea.Layout() fgSizer_scanarea.Fit(self.m_panel_scanarea) fgSizer4.Add(self.m_panel_scanarea, 1, wx.EXPAND | wx.ALL, 5) self.m_panel_measure = wx.Panel(self.m_panel4, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer6 = wx.FlexGridSizer(0, 6, 0, 0) fgSizer6.SetFlexibleDirection(wx.BOTH) fgSizer6.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText16 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"PicoHarp", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText16.Wrap(-1) fgSizer6.Add(self.m_staticText16, 0, wx.ALL, 5) self.m_staticText161 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Measurement", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText161.Wrap(-1) fgSizer6.Add(self.m_staticText161, 0, wx.ALL | wx.EXPAND, 5) fgSizer6.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer6.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer6.AddSpacer((0, 0), 1, wx.EXPAND, 5) fgSizer6.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText17 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Time Acq", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText17.Wrap(-1) fgSizer6.Add(self.m_staticText17, 0, wx.ALL, 5) self.m_textCtrl_tacq = wx.TextCtrl(self.m_panel_measure, wx.ID_ANY, u"0.01", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer6.Add(self.m_textCtrl_tacq, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText22 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"sec", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText22.Wrap(-1) fgSizer6.Add(self.m_staticText22, 0, wx.ALL, 5) self.m_staticText27 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"SyncDivider", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText27.Wrap(-1) fgSizer6.Add(self.m_staticText27, 0, wx.ALL, 5) m_choice_syncdividerChoices = [u"1", u"2", u"4", u"8"] self.m_choice_syncdivider = wx.Choice(self.m_panel_measure, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_choice_syncdividerChoices, 0) self.m_choice_syncdivider.SetSelection(3) fgSizer6.Add(self.m_choice_syncdivider, 0, wx.ALL | wx.EXPAND, 5) fgSizer6.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText29 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Range", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText29.Wrap(-1) fgSizer6.Add(self.m_staticText29, 0, wx.ALL, 5) self.m_textCtrl_phrange = wx.TextCtrl(self.m_panel_measure, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer6.Add(self.m_textCtrl_phrange, 0, wx.ALL | wx.EXPAND, 5) fgSizer6.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_staticText291 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Offset", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText291.Wrap(-1) fgSizer6.Add(self.m_staticText291, 0, wx.ALL, 5) self.m_textCtrl_phoffset = wx.TextCtrl(self.m_panel_measure, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer6.Add(self.m_textCtrl_phoffset, 0, wx.ALL, 5) self.m_staticText34 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"ns", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText34.Wrap(-1) fgSizer6.Add(self.m_staticText34, 0, wx.ALL, 5) self.m_staticText35 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"ZeroCross0", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText35.Wrap(-1) fgSizer6.Add(self.m_staticText35, 0, wx.ALL, 5) self.m_spinCtrl_zerocross0 = wx.SpinCtrl(self.m_panel_measure, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100, 10) fgSizer6.Add(self.m_spinCtrl_zerocross0, 0, wx.ALL, 5) self.m_staticText36 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"mV", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText36.Wrap(-1) fgSizer6.Add(self.m_staticText36, 0, wx.ALL, 5) self.m_staticText37 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"ZeroCross1", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText37.Wrap(-1) fgSizer6.Add(self.m_staticText37, 0, wx.ALL, 5) self.m_spinCtrl_zerocross1 = wx.SpinCtrl(self.m_panel_measure, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100, 10) fgSizer6.Add(self.m_spinCtrl_zerocross1, 0, wx.ALL, 5) self.m_staticText38 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"mV", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText38.Wrap(-1) fgSizer6.Add(self.m_staticText38, 0, wx.ALL, 5) self.m_staticText351 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Level0", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText351.Wrap(-1) fgSizer6.Add(self.m_staticText351, 0, wx.ALL, 5) self.m_textCtrl_level0 = wx.TextCtrl(self.m_panel_measure, wx.ID_ANY, u"10", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer6.Add(self.m_textCtrl_level0, 0, wx.ALL, 5) self.m_staticText42 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"mV", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText42.Wrap(-1) fgSizer6.Add(self.m_staticText42, 0, wx.ALL, 5) self.m_staticText43 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Level1", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText43.Wrap(-1) fgSizer6.Add(self.m_staticText43, 0, wx.ALL, 5) self.m_textCtrl_level1 = wx.TextCtrl(self.m_panel_measure, wx.ID_ANY, u"50", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer6.Add(self.m_textCtrl_level1, 0, wx.ALL, 5) self.m_staticText44 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"mV", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText44.Wrap(-1) fgSizer6.Add(self.m_staticText44, 0, wx.ALL, 5) self.m_staticline3 = wx.StaticLine(self.m_panel_measure, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) fgSizer6.Add(self.m_staticline3, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline4 = wx.StaticLine(self.m_panel_measure, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) fgSizer6.Add(self.m_staticline4, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline5 = wx.StaticLine(self.m_panel_measure, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) fgSizer6.Add(self.m_staticline5, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline6 = wx.StaticLine(self.m_panel_measure, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) fgSizer6.Add(self.m_staticline6, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline7 = wx.StaticLine(self.m_panel_measure, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) fgSizer6.Add(self.m_staticline7, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline8 = wx.StaticLine(self.m_panel_measure, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) fgSizer6.Add(self.m_staticline8, 0, wx.EXPAND | wx.ALL, 5) self.m_staticText211 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Counts 0", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText211.Wrap(-1) fgSizer6.Add(self.m_staticText211, 0, wx.ALL, 5) self.m_textCtrl_count0 = wx.TextCtrl(self.m_panel_measure, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fgSizer6.Add(self.m_textCtrl_count0, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText221 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Hz", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText221.Wrap(-1) fgSizer6.Add(self.m_staticText221, 0, wx.ALL, 5) self.m_staticText2111 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Counts 1", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText2111.Wrap(-1) fgSizer6.Add(self.m_staticText2111, 0, wx.ALL, 5) self.m_textCtrl_count1 = wx.TextCtrl(self.m_panel_measure, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) self.m_textCtrl_count1.SetFont( wx.Font(16, 74, 90, 90, False, "MS Shell Dlg 2")) fgSizer6.Add(self.m_textCtrl_count1, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText2211 = wx.StaticText(self.m_panel_measure, wx.ID_ANY, u"Hz", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText2211.Wrap(-1) fgSizer6.Add(self.m_staticText2211, 0, wx.ALL, 5) fgSizer6.AddSpacer((0, 0), 1, wx.EXPAND, 5) self.m_checkBox_picoharp_fastreadout = wx.CheckBox( self.m_panel_measure, wx.ID_ANY, u"Fast Readout", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer6.Add(self.m_checkBox_picoharp_fastreadout, 0, wx.ALL, 5) self.m_panel_measure.SetSizer(fgSizer6) self.m_panel_measure.Layout() fgSizer6.Fit(self.m_panel_measure) fgSizer4.Add(self.m_panel_measure, 0, wx.ALL | wx.EXPAND, 5) self.m_panel_plot_ctrl = wx.Panel(self.m_panel4, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fgSizer3 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer3.SetFlexibleDirection(wx.BOTH) fgSizer3.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_panel_plot_ctrl.SetSizer(fgSizer3) self.m_panel_plot_ctrl.Layout() fgSizer3.Fit(self.m_panel_plot_ctrl) fgSizer4.Add(self.m_panel_plot_ctrl, 1, wx.EXPAND | wx.ALL, 5) self.m_panel4.SetSizer(fgSizer4) self.m_panel4.Layout() fgSizer4.Fit(self.m_panel4) bSizer1.Add(self.m_panel4, 0, wx.ALL | wx.EXPAND, 5) self.m_panel_plot = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer11 = wx.BoxSizer(wx.VERTICAL) self.m_panel_plot.SetSizer(bSizer11) self.m_panel_plot.Layout() bSizer11.Fit(self.m_panel_plot) bSizer1.Add(self.m_panel_plot, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH)
def __init__(self, parent): """ self.appdata: (dict) settings already loaded from main_frame . self.confmanager: instance to ConfigManager class self.settings: (dict) current user settings from file conf. """ get = wx.GetApp() self.appdata = get.appset self.confmanager = ConfigManager(self.appdata['fileconfpath']) self.settings = self.confmanager.read_options() if self.appdata['ostype'] == 'Windows': self.ffmpeg = 'ffmpeg.exe' self.ffprobe = 'ffprobe.exe' self.ffplay = 'ffplay.exe' else: self.ffmpeg = 'ffmpeg' self.ffprobe = 'ffprobe' self.ffplay = 'ffplay' wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE) # ----------------------------set notebook sizer_base = wx.BoxSizer(wx.VERTICAL) notebook = wx.Notebook(self, wx.ID_ANY, style=0) sizer_base.Add(notebook, 1, wx.ALL | wx.EXPAND, 5) # -----tab 1 tabOne = wx.Panel(notebook, wx.ID_ANY) sizerGen = wx.BoxSizer(wx.VERTICAL) sizerGen.Add((0, 15)) boxlang = wx.StaticBoxSizer( wx.StaticBox(tabOne, wx.ID_ANY, (_("Application Language"))), wx.VERTICAL) sizerGen.Add(boxlang, 0, wx.ALL | wx.EXPAND, 5) self.cmbx_lang = wx.ComboBox(tabOne, wx.ID_ANY, choices=list(langnames.values()), size=(-1, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) boxlang.Add(self.cmbx_lang, 0, wx.ALL | wx.EXPAND, 5) sizerGen.Add((0, 15)) self.checkbox_cacheclr = wx.CheckBox( tabOne, wx.ID_ANY, (_("Clear the cache when exiting the application"))) sizerGen.Add(self.checkbox_cacheclr, 0, wx.ALL, 5) sizerGen.Add((0, 15)) self.checkbox_logclr = wx.CheckBox( tabOne, wx.ID_ANY, (_("Delete the contents of the log files " "when exiting the application"))) sizerGen.Add(self.checkbox_logclr, 0, wx.ALL, 5) sizerGen.Add((0, 15)) self.checkbox_exit = wx.CheckBox(tabOne, wx.ID_ANY, (_("Warn on exit"))) sizerGen.Add(self.checkbox_exit, 0, wx.ALL, 5) tabOne.SetSizer(sizerGen) notebook.AddPage(tabOne, _("Miscellanea")) # -----tab 2 tabTwo = wx.Panel(notebook, wx.ID_ANY) sizerFiles = wx.BoxSizer(wx.VERTICAL) sizerFiles.Add((0, 15)) msg = _("Where do you prefer to save your transcodes?") labfile = wx.StaticText(tabTwo, wx.ID_ANY, msg) sizerFiles.Add(labfile, 0, wx.ALL | wx.EXPAND, 5) sizeFFdirdest = wx.BoxSizer(wx.HORIZONTAL) sizerFiles.Add(sizeFFdirdest, 0, wx.EXPAND) self.txtctrl_FFpath = wx.TextCtrl(tabTwo, wx.ID_ANY, "", style=wx.TE_READONLY) sizeFFdirdest.Add(self.txtctrl_FFpath, 1, wx.ALL, 5) self.txtctrl_FFpath.AppendText(self.appdata['outputfile']) self.btn_fsave = wx.Button(tabTwo, wx.ID_ANY, "...", size=(35, -1)) sizeFFdirdest.Add( self.btn_fsave, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5) descr = _("Save each file in the same folder as input file") self.ckbx_dir = wx.CheckBox(tabTwo, wx.ID_ANY, (descr)) sizerFiles.Add(self.ckbx_dir, 0, wx.ALL, 5) sizeSamedest = wx.BoxSizer(wx.HORIZONTAL) sizerFiles.Add(sizeSamedest, 0, wx.EXPAND) descr = _("Assign optional suffix to output file names:") self.lab_suffix = wx.StaticText(tabTwo, wx.ID_ANY, (descr)) sizeSamedest.Add(self.lab_suffix, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5) self.text_suffix = wx.TextCtrl(tabTwo, wx.ID_ANY, "", size=(90, -1)) sizeSamedest.Add(self.text_suffix, 1, wx.ALL | wx.CENTER, 5) descr = _("Move source file to the Videomass trash " "folder after successful encoding") self.ckbx_trash = wx.CheckBox(tabTwo, wx.ID_ANY, (descr)) sizerFiles.Add(self.ckbx_trash, 0, wx.ALL, 5) sizetrash = wx.BoxSizer(wx.HORIZONTAL) sizerFiles.Add(sizetrash, 0, wx.EXPAND) self.txtctrl_trash = wx.TextCtrl(tabTwo, wx.ID_ANY, "", style=wx.TE_READONLY) sizetrash.Add(self.txtctrl_trash, 1, wx.ALL, 5) self.txtctrl_trash.AppendText(self.appdata['trashfolder']) self.btn_trash = wx.Button(tabTwo, wx.ID_ANY, "...", size=(35, -1)) sizetrash.Add( self.btn_trash, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5) sizerFiles.Add((0, 15)) msg = _("Where do you prefer to save your downloads?") labdown = wx.StaticText(tabTwo, wx.ID_ANY, msg) sizerFiles.Add(labdown, 0, wx.ALL | wx.EXPAND, 5) sizeYDLdirdest = wx.BoxSizer(wx.HORIZONTAL) sizerFiles.Add(sizeYDLdirdest, 0, wx.EXPAND) self.txtctrl_YDLpath = wx.TextCtrl(tabTwo, wx.ID_ANY, "", style=wx.TE_READONLY) sizeYDLdirdest.Add(self.txtctrl_YDLpath, 1, wx.ALL | wx.CENTER, 5) self.txtctrl_YDLpath.AppendText(self.appdata['outputdownload']) self.btn_YDLpath = wx.Button(tabTwo, wx.ID_ANY, "...", size=(35, -1)) sizeYDLdirdest.Add( self.btn_YDLpath, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5) descr = _("Auto-create subfolders when downloading playlists") self.ckbx_playlist = wx.CheckBox(tabTwo, wx.ID_ANY, (descr)) sizerFiles.Add(self.ckbx_playlist, 0, wx.ALL, 5) tabTwo.SetSizer(sizerFiles) notebook.AddPage(tabTwo, _("File Preferences")) # -----tab 3 tabThree = wx.Panel(notebook, wx.ID_ANY) sizerFFmpeg = wx.BoxSizer(wx.VERTICAL) sizerFFmpeg.Add((0, 15)) labFFexec = wx.StaticText(tabThree, wx.ID_ANY, _('Path to the executables')) sizerFFmpeg.Add(labFFexec, 0, wx.ALL | wx.EXPAND, 5) # ---- self.checkbox_exeFFmpeg = wx.CheckBox( tabThree, wx.ID_ANY, (_("Enable another location to run FFmpeg"))) self.btn_ffmpeg = wx.Button(tabThree, wx.ID_ANY, "...", size=(35, -1)) self.txtctrl_ffmpeg = wx.TextCtrl(tabThree, wx.ID_ANY, "", style=wx.TE_READONLY) sizerFFmpeg.Add(self.checkbox_exeFFmpeg, 0, wx.ALL, 5) gridFFmpeg = wx.BoxSizer(wx.HORIZONTAL) sizerFFmpeg.Add(gridFFmpeg, 0, wx.EXPAND) gridFFmpeg.Add(self.txtctrl_ffmpeg, 1, wx.ALL, 5) gridFFmpeg.Add(self.btn_ffmpeg, 0, wx.RIGHT | wx.CENTER, 5) # ---- self.checkbox_exeFFprobe = wx.CheckBox( tabThree, wx.ID_ANY, (_("Enable another location to run FFprobe"))) self.btn_ffprobe = wx.Button(tabThree, wx.ID_ANY, "...", size=(35, -1)) self.txtctrl_ffprobe = wx.TextCtrl(tabThree, wx.ID_ANY, "", style=wx.TE_READONLY) sizerFFmpeg.Add(self.checkbox_exeFFprobe, 0, wx.ALL, 5) gridFFprobe = wx.BoxSizer(wx.HORIZONTAL) sizerFFmpeg.Add(gridFFprobe, 0, wx.EXPAND) gridFFprobe.Add(self.txtctrl_ffprobe, 1, wx.ALL, 5) gridFFprobe.Add(self.btn_ffprobe, 0, wx.RIGHT | wx.CENTER, 5) # ---- self.checkbox_exeFFplay = wx.CheckBox( tabThree, wx.ID_ANY, (_("Enable another location to run FFplay"))) self.btn_ffplay = wx.Button(tabThree, wx.ID_ANY, "...", size=(35, -1)) self.txtctrl_ffplay = wx.TextCtrl(tabThree, wx.ID_ANY, "", style=wx.TE_READONLY) sizerFFmpeg.Add(self.checkbox_exeFFplay, 0, wx.ALL, 5) gridFFplay = wx.BoxSizer(wx.HORIZONTAL) sizerFFmpeg.Add(gridFFplay, 0, wx.EXPAND) gridFFplay.Add(self.txtctrl_ffplay, 1, wx.ALL, 5) gridFFplay.Add(self.btn_ffplay, 0, wx.RIGHT | wx.CENTER, 5) sizerFFmpeg.Add((0, 15)) labFFopt = wx.StaticText(tabThree, wx.ID_ANY, _('Other options')) sizerFFmpeg.Add(labFFopt, 0, wx.ALL | wx.EXPAND, 5) gridSizopt = wx.BoxSizer(wx.HORIZONTAL) sizerFFmpeg.Add(gridSizopt, 0, wx.EXPAND) labFFthreads = wx.StaticText(tabThree, wx.ID_ANY, (_("Threads used for transcoding " "(from 0 to 32):"))) gridSizopt.Add( labFFthreads, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.spinctrl_threads = wx.SpinCtrl(tabThree, wx.ID_ANY, f"{self.appdata['ffthreads'][9:]}", size=(-1, -1), min=0, max=32, style=wx.TE_PROCESS_ENTER) gridSizopt.Add( self.spinctrl_threads, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5) # ---- tabThree.SetSizer(sizerFFmpeg) notebook.AddPage(tabThree, _("FFmpeg")) # -----tab 4 self.tabFour = wx.Panel(notebook, wx.ID_ANY) sizerYdl = wx.BoxSizer(wx.VERTICAL) sizerYdl.Add((0, 15)) labydl0 = wx.StaticText(self.tabFour, wx.ID_ANY, ('')) sizerYdl.Add(labydl0, 0, wx.ALL | wx.CENTRE, 5) if self.appdata['app'] not in ('pyinstaller', 'appimage', 'embed'): url = ('https://packaging.python.org/tutorials/' 'installing-packages/#upgrading-packages') static0 = _("How to upgrade a Python package") instpkg = hpl.HyperLinkCtrl(self.tabFour, -1, static0, URL=url) sizerYdl.Add(instpkg, 0, wx.ALL | wx.CENTRE, 2) if self.appdata['ostype'] == 'Windows': url = ('https://download.microsoft.com/download/1/6/5/165255E7-' '1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe') static1 = _("Required: Microsoft Visual C++ 2010 Service Pack 1 " "Redistributable Package (x86)") MSVCR = hpl.HyperLinkCtrl(self.tabFour, -1, static1, URL=url) sizerYdl.Add(MSVCR, 0, wx.ALL | wx.CENTRE, 2) elif (self.appdata['ostype'] == 'Linux' and self.appdata['app'] not in ('pyinstaller', 'appimage')): url = ('https://packaging.python.org/guides/' 'installing-using-linux-tools/') static2 = _("How to install pip on your Linux distribution") instpip = hpl.HyperLinkCtrl(self.tabFour, -1, static2, URL=url) sizerYdl.Add(instpip, 0, wx.ALL | wx.CENTRE, 2) sizerYdl.Add((0, 15)) self.rdbDownloader = wx.RadioBox(self.tabFour, wx.ID_ANY, (_("Downloader preferences")), choices=[('disabled'), ('youtube_dl'), ('yt_dlp')], majorDimension=1, style=wx.RA_SPECIFY_COLS) sizerYdl.Add(self.rdbDownloader, 0, wx.ALL | wx.EXPAND, 5) grdydlLoc = wx.BoxSizer(wx.HORIZONTAL) sizerYdl.Add(grdydlLoc, 0, wx.ALL | wx.EXPAND, 5) labydl2 = wx.StaticText(self.tabFour, wx.ID_ANY, _('Current path:')) grdydlLoc.Add(labydl2, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 0) self.ydlPath = wx.TextCtrl(self.tabFour, wx.ID_ANY, "", style=wx.TE_READONLY) grdydlLoc.Add(self.ydlPath, 1, wx.ALL | wx.EXPAND, 5) # ---- BEGIN set youtube-dl radiobox ydlmsg = _("Make sure you are using the latest available " "version of\n'{}'. This allows you to avoid download " "problems.\n").format(self.appdata['downloader']) if self.appdata['app'] == 'pyinstaller': if self.appdata['downloader'] == 'disabled': self.rdbDownloader.SetSelection(0) self.ydlPath.WriteText(_('Disabled')) else: if self.appdata['downloader'] == 'youtube_dl': self.rdbDownloader.SetSelection(1) elif self.appdata['downloader'] == 'yt_dlp': self.rdbDownloader.SetSelection(2) if self.appdata['PYLIBYDL'] is None: self.ydlPath.WriteText(str(self.appdata['YDLSITE'])) else: self.ydlPath.WriteText(_('Not found')) elif self.appdata['app'] == 'appimage': tip1 = _('Menu bar > Tools > Update {}').format( self.appdata['downloader']) if self.appdata['downloader'] == 'disabled': self.rdbDownloader.SetSelection(0) self.ydlPath.WriteText(_('Disabled')) else: if self.appdata['downloader'] == 'youtube_dl': self.rdbDownloader.SetSelection(1) elif self.appdata['downloader'] == 'yt_dlp': self.rdbDownloader.SetSelection(2) if self.appdata['PYLIBYDL'] is None: labydl0.SetLabel(f'{ydlmsg}{tip1}') self.ydlPath.WriteText(str(self.appdata['YDLSITE'])) else: self.ydlPath.WriteText(_('Not Installed')) else: if self.appdata['downloader'] == 'disabled': self.rdbDownloader.SetSelection(0) self.ydlPath.WriteText(_('Disabled')) else: if self.appdata['downloader'] == 'youtube_dl': self.rdbDownloader.SetSelection(1) elif self.appdata['downloader'] == 'yt_dlp': self.rdbDownloader.SetSelection(2) if self.appdata['PYLIBYDL'] is None: labydl0.SetLabel(f'{ydlmsg}') self.ydlPath.WriteText(str(self.appdata['YDLSITE'])) else: self.ydlPath.WriteText(_('Not Installed')) # ---- END # ---- self.tabFour.SetSizer(sizerYdl) notebook.AddPage(self.tabFour, _("Downloader")) # -----tab 5 tabFive = wx.Panel(notebook, wx.ID_ANY) sizerAppearance = wx.BoxSizer(wx.VERTICAL) sizerAppearance.Add((0, 15)) labTheme = wx.StaticText(tabFive, wx.ID_ANY, _('Icon themes')) sizerAppearance.Add(labTheme, 0, wx.ALL | wx.EXPAND, 5) msg = _("The chosen icon theme will only change the icons,\n" "background and foreground of some text fields.") labIcons = wx.StaticText(tabFive, wx.ID_ANY, (msg)) sizerAppearance.Add(labIcons, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.cmbx_icons = wx.ComboBox(tabFive, wx.ID_ANY, choices=[ ("Videomass-Light"), ("Videomass-Dark"), ("Videomass-Colours"), ], size=(200, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) sizerAppearance.Add(self.cmbx_icons, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) sizerAppearance.Add((0, 15)) labTB = wx.StaticText(tabFive, wx.ID_ANY, _("Toolbar customization")) sizerAppearance.Add(labTB, 0, wx.ALL | wx.EXPAND, 5) tbchoice = [ _('At the top of window (default)'), _('At the bottom of window'), _('At the right of window'), _('At the left of window') ] self.rdbTBpref = wx.RadioBox(tabFive, wx.ID_ANY, (_("Place the toolbar")), choices=tbchoice, majorDimension=1, style=wx.RA_SPECIFY_COLS) sizerAppearance.Add(self.rdbTBpref, 0, wx.ALL | wx.EXPAND, 5) gridTBsize = wx.FlexGridSizer(0, 2, 0, 5) sizerAppearance.Add(gridTBsize, 0, wx.ALL, 5) lab1_appearance = wx.StaticText(tabFive, wx.ID_ANY, _('Icon size:')) gridTBsize.Add(lab1_appearance, 0, wx.ALIGN_CENTER_VERTICAL, 0) self.cmbx_iconsSize = wx.ComboBox(tabFive, wx.ID_ANY, choices=[("16"), ("24"), ("32"), ("64")], size=(120, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) gridTBsize.Add(self.cmbx_iconsSize, 0, wx.ALIGN_CENTER_VERTICAL, 0) if 'wx.svg' not in sys.modules: # only in wx version 4.1 to up self.cmbx_iconsSize.Disable() lab1_appearance.Disable() self.checkbox_tbtext = wx.CheckBox( tabFive, wx.ID_ANY, (_("Shows the text in the toolbar buttons"))) sizerAppearance.Add(self.checkbox_tbtext, 0, wx.ALL, 5) tabFive.SetSizer(sizerAppearance) # aggiungo il sizer su tab 4 notebook.AddPage(tabFive, _("Appearance")) # -----tab 6 tabSix = wx.Panel(notebook, wx.ID_ANY) sizerLog = wx.BoxSizer(wx.VERTICAL) sizerLog.Add((0, 15)) msglog = _("The following settings affect output messages and\n" "the log messages during transcoding processes.\n" "Change only if you know what you are doing.\n") labLog = wx.StaticText(tabSix, wx.ID_ANY, (msglog)) sizerLog.Add(labLog, 0, wx.ALL | wx.CENTRE, 5) self.rdbFFmpeg = wx.RadioBox( tabSix, wx.ID_ANY, ("Set logging level flags used by FFmpeg"), choices=SetUp.FFMPEG_LOGLEV, majorDimension=1, style=wx.RA_SPECIFY_COLS) sizerLog.Add(self.rdbFFmpeg, 0, wx.ALL | wx.EXPAND, 5) self.rdbFFplay = wx.RadioBox( tabSix, wx.ID_ANY, ("Set logging level flags used by FFplay"), choices=SetUp.FFPLAY_LOGLEV, majorDimension=1, style=wx.RA_SPECIFY_COLS) sizerLog.Add(self.rdbFFplay, 0, wx.ALL | wx.EXPAND, 5) tabSix.SetSizer(sizerLog) notebook.AddPage(tabSix, _("FFmpeg logging levels")) # ------ btns bottom grdBtn = wx.GridSizer(1, 2, 0, 0) grdhelp = wx.GridSizer(1, 1, 0, 0) btn_help = wx.Button(self, wx.ID_HELP, "") grdhelp.Add(btn_help, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) grdBtn.Add(grdhelp) grdexit = wx.BoxSizer(wx.HORIZONTAL) btn_close = wx.Button(self, wx.ID_CANCEL, "") grdexit.Add(btn_close, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) btn_ok = wx.Button(self, wx.ID_OK, "") grdexit.Add(btn_ok, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) grdBtn.Add(grdexit, flag=wx.ALL | wx.ALIGN_RIGHT | wx.RIGHT, border=0) sizer_base.Add(grdBtn, 0, wx.EXPAND) # ------ set sizer self.SetSizer(sizer_base) sizer_base.Fit(self) self.Layout() # ----------------------Properties----------------------# self.SetTitle(_("Settings")) # set font if self.appdata['ostype'] == 'Darwin': labfile.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labdown.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labFFexec.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labFFopt.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labydl0.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.NORMAL)) labTheme.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labIcons.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.NORMAL)) labTB.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labLog.SetFont(wx.Font(11, wx.SWISS, wx.NORMAL, wx.NORMAL)) else: labfile.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labdown.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labFFexec.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labFFopt.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labydl0.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL)) labTheme.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labIcons.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL)) labTB.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD)) labLog.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL)) # tooltips tip = (_("By assigning an additional suffix you could avoid " "overwriting files")) self.text_suffix.SetToolTip(tip) # ----------------------Binding (EVT)----------------------# self.Bind(wx.EVT_COMBOBOX, self.on_set_lang, self.cmbx_lang) self.Bind(wx.EVT_RADIOBOX, self.logging_ffplay, self.rdbFFplay) self.Bind(wx.EVT_RADIOBOX, self.logging_ffmpeg, self.rdbFFmpeg) self.Bind(wx.EVT_SPINCTRL, self.on_threads, self.spinctrl_threads) self.Bind(wx.EVT_BUTTON, self.on_ffmpegPath, self.btn_fsave) self.Bind(wx.EVT_CHECKBOX, self.set_Samedest, self.ckbx_dir) self.Bind(wx.EVT_TEXT, self.set_Suffix, self.text_suffix) self.Bind(wx.EVT_CHECKBOX, self.on_file_to_trash, self.ckbx_trash) self.Bind(wx.EVT_BUTTON, self.on_browse_trash, self.btn_trash) self.Bind(wx.EVT_BUTTON, self.on_downloadPath, self.btn_YDLpath) self.Bind(wx.EVT_CHECKBOX, self.on_playlistFolder, self.ckbx_playlist) self.Bind(wx.EVT_CHECKBOX, self.exeFFmpeg, self.checkbox_exeFFmpeg) self.Bind(wx.EVT_BUTTON, self.open_path_ffmpeg, self.btn_ffmpeg) self.Bind(wx.EVT_CHECKBOX, self.exeFFprobe, self.checkbox_exeFFprobe) self.Bind(wx.EVT_BUTTON, self.open_path_ffprobe, self.btn_ffprobe) self.Bind(wx.EVT_CHECKBOX, self.exeFFplay, self.checkbox_exeFFplay) self.Bind(wx.EVT_BUTTON, self.open_path_ffplay, self.btn_ffplay) self.Bind(wx.EVT_COMBOBOX, self.on_Iconthemes, self.cmbx_icons) self.Bind(wx.EVT_RADIOBOX, self.on_toolbarPos, self.rdbTBpref) self.Bind(wx.EVT_COMBOBOX, self.on_toolbarSize, self.cmbx_iconsSize) self.Bind(wx.EVT_CHECKBOX, self.on_toolbarText, self.checkbox_tbtext) self.Bind(wx.EVT_CHECKBOX, self.exit_warn, self.checkbox_exit) self.Bind(wx.EVT_CHECKBOX, self.clear_Cache, self.checkbox_cacheclr) self.Bind(wx.EVT_CHECKBOX, self.clear_logs, self.checkbox_logclr) self.Bind(wx.EVT_RADIOBOX, self.on_Ydl_preferences, self.rdbDownloader) self.Bind(wx.EVT_BUTTON, self.on_help, btn_help) self.Bind(wx.EVT_BUTTON, self.on_cancel, btn_close) self.Bind(wx.EVT_BUTTON, self.on_ok, btn_ok) # --------------------------------------------# self.current_settings() # call function for initialize setting layout
def __init__(self, parent): wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"注册", pos=wx.DefaultPosition, size=wx.Size(300, 400), style=wx.DEFAULT_DIALOG_STYLE) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) fgSizer6 = wx.FlexGridSizer(4, 1, 0, 0) fgSizer6.SetFlexibleDirection(wx.BOTH) fgSizer6.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer6.Add((0, 40), 1, wx.EXPAND, 5) fgSizer9 = wx.FlexGridSizer(1, 3, 0, 0) fgSizer9.SetFlexibleDirection(wx.BOTH) fgSizer9.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer9.Add((50, 0), 1, wx.EXPAND, 5) fgSizer8 = wx.FlexGridSizer(6, 2, 5, 0) fgSizer8.SetFlexibleDirection(wx.BOTH) fgSizer8.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticTextUser = wx.StaticText(self, wx.ID_ANY, u"您的昵称", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticTextUser.Wrap(-1) fgSizer8.Add(self.m_staticTextUser, 0, wx.ALL, 5) self.m_textCtrlUser = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) fgSizer8.Add(self.m_textCtrlUser, 0, wx.ALL, 5) self.m_staticTextPass = wx.StaticText(self, wx.ID_ANY, u"您的密码", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticTextPass.Wrap(-1) fgSizer8.Add(self.m_staticTextPass, 0, wx.ALL, 5) self.m_textCtrlPass = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_PASSWORD) fgSizer8.Add(self.m_textCtrlPass, 0, wx.ALL, 5) self.m_staticTextSurePass = wx.StaticText(self, wx.ID_ANY, u"确认密码", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticTextSurePass.Wrap(-1) fgSizer8.Add(self.m_staticTextSurePass, 0, wx.ALL, 5) self.m_textCtrlSurePass = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_PASSWORD) fgSizer8.Add(self.m_textCtrlSurePass, 0, wx.ALL, 5) self.m_staticTextAge = wx.StaticText(self, wx.ID_ANY, u"年龄", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticTextAge.Wrap(-1) fgSizer8.Add(self.m_staticTextAge, 0, wx.ALL, 5) fgSizer5 = wx.FlexGridSizer(1, 2, 0, 0) fgSizer5.SetFlexibleDirection(wx.BOTH) fgSizer5.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_textCtrlAge = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(-1, -1), wx.TE_READONLY) self.m_textCtrlAge.SetMaxLength(2) fgSizer5.Add(self.m_textCtrlAge, 0, wx.ALL, 5) self.m_button3 = wx.Button(self, wx.ID_ANY, u".", wx.DefaultPosition, wx.Size(20, -1), 0) fgSizer5.Add(self.m_button3, 0, wx.ALL, 5) fgSizer8.Add(fgSizer5, 1, wx.EXPAND, 5) self.m_staticTextSex = wx.StaticText(self, wx.ID_ANY, u"性别", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticTextSex.Wrap(-1) fgSizer8.Add(self.m_staticTextSex, 0, wx.ALL, 5) m_choiceSexChoices = [u"男", u"女"] self.m_choiceSex = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_choiceSexChoices, 0) self.m_choiceSex.SetSelection(0) fgSizer8.Add(self.m_choiceSex, 0, wx.ALL, 5) self.m_staticTextMotto = wx.StaticText(self, wx.ID_ANY, u"个性签名", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticTextMotto.Wrap(-1) fgSizer8.Add(self.m_staticTextMotto, 0, wx.ALL, 5) self.m_textCtrlMotto = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) fgSizer8.Add(self.m_textCtrlMotto, 0, wx.ALL, 5) fgSizer9.Add(fgSizer8, 1, wx.EXPAND, 5) fgSizer6.Add(fgSizer9, 1, wx.EXPAND, 5) fgSizer6.Add((0, 20), 1, wx.EXPAND, 5) fgSizer10 = wx.FlexGridSizer(1, 4, 0, 0) fgSizer10.SetFlexibleDirection(wx.BOTH) fgSizer10.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer10.Add((35, 0), 1, wx.EXPAND, 5) self.m_buttonSureReg = wx.Button(self, wx.ID_ANY, u"注册", wx.DefaultPosition, wx.Size(100, 30), 0) fgSizer10.Add(self.m_buttonSureReg, 0, wx.ALL, 5) self.m_buttonCancel = wx.Button(self, wx.ID_ANY, u"取消", wx.DefaultPosition, wx.Size(100, 30), 0) fgSizer10.Add(self.m_buttonCancel, 0, wx.ALL, 5) fgSizer6.Add(fgSizer10, 1, wx.EXPAND, 5) self.SetSizer(fgSizer6) self.Layout() self.Centre(wx.BOTH) # Connect Events self.m_button3.Bind(wx.EVT_BUTTON, self.OnButtonDate) self.m_buttonSureReg.Bind(wx.EVT_BUTTON, self.OnButtonSureReg) self.m_buttonCancel.Bind(wx.EVT_BUTTON, self.OnButtonCancel)
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(self.pparams, self.info) 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 MakeTopasFPASizer(G2frame,FPdlg,SetButtonStatus): '''Create a GUI with parameters for the NIST XRD Fundamental Parameters Code. Parameter input is modeled after Topas input parameters. :param wx.Frame G2frame: main GSAS-II window :param wx.Window FPdlg: Frame or Dialog where GUI will appear :param SetButtonStatus: a callback function to call to see what buttons in this windows can be enabled. Called with done=True to trigger closing the parent window as well. :returns: a sizer with the GUI controls ''' def _onOK(event): XferFPAsettings(parmDict) SetButtonStatus(done=True) # done=True triggers the simulation FPdlg.Destroy() def _onClose(event): SetButtonStatus() FPdlg.Destroy() def _onAddWave(event): parmDict['numWave'] += 1 wx.CallAfter(MakeTopasFPASizer,G2frame,FPdlg,SetButtonStatus) def _onRemWave(event): parmDict['numWave'] -= 1 wx.CallAfter(MakeTopasFPASizer,G2frame,FPdlg,SetButtonStatus) def _onSetCu5Wave(event): parmDict['wave'] = {i:v for i,v in enumerate((1.534753,1.540596,1.541058,1.54441,1.544721))} parmDict['int'] = {i:v for i,v in enumerate((0.0159, 0.5791, 0.0762, 0.2417, 0.0871))} parmDict['lwidth'] = {i:v for i,v in enumerate((3.6854, 0.437, 0.6, 0.52, 0.62))} parmDict['numWave'] = 5 wx.CallAfter(MakeTopasFPASizer,G2frame,FPdlg,SetButtonStatus) def _onSetCu2Wave(event): SetCu2Wave() parmDict['numWave'] = 2 wx.CallAfter(MakeTopasFPASizer,G2frame,FPdlg,SetButtonStatus) def _onSetDetBtn(event): global DetMode if detBtn1.GetValue(): DetMode = 'BBpoint' wx.CallAfter(FillParmSizer) else: DetMode = 'BBPSD' wx.CallAfter(FillParmSizer) def _onSetMonoBtn(event): global IBmono IBmono = not monoBtn1.GetValue() wx.CallAfter(FillParmSizer) def PlotTopasFPA(event): XferFPAsettings(parmDict) ttArr = np.arange(max(0.5, simParms['plotpos']-simParms['calcwid']), simParms['plotpos']+simParms['calcwid'], simParms['step']) intArr = np.zeros_like(ttArr) NISTpk = setupFPAcalc() try: center_bin_idx,peakObj = doFPAcalc( NISTpk,ttArr,simParms['plotpos'],simParms['calcwid'], simParms['step']) except Exception as err: msg = "Error computing convolution, revise input" print(msg) print(err) return G2plt.PlotFPAconvolutors(G2frame,NISTpk) pkPts = len(peakObj.peak) pkMax = peakObj.peak.max() startInd = center_bin_idx-(pkPts//2) #this should be the aligned start of the new data # scale peak so max I=10,000 and add into intensity array if startInd < 0: intArr[:startInd+pkPts] += 10000 * peakObj.peak[-startInd:]/pkMax elif startInd > len(intArr): return elif startInd+pkPts >= len(intArr): offset = pkPts - len( intArr[startInd:] ) intArr[startInd:startInd+pkPts-offset] += 10000 * peakObj.peak[:-offset]/pkMax else: intArr[startInd:startInd+pkPts] += 10000 * peakObj.peak/pkMax G2plt.PlotXY(G2frame, [(ttArr, intArr)], labelX=r'$2\theta, deg$', labelY=r'Intensity (arbitrary)', Title='FPA peak', newPlot=True, lines=True) if FPdlg.GetSizer(): FPdlg.GetSizer().Clear(True) numWave = parmDict['numWave'] MainSizer = wx.BoxSizer(wx.VERTICAL) MainSizer.Add((-1,5)) waveSizer = wx.FlexGridSizer(cols=numWave+1,hgap=3,vgap=5) for lbl,prm,defVal in zip( (u'Wavelength (\u212b)','Rel. Intensity',u'Lorentz Width\n(\u212b/1000)'), ('wave','int','lwidth'), (0.0, 1.0, 0.1), ): text = wx.StaticText(FPdlg,wx.ID_ANY,lbl,style=wx.ALIGN_CENTER) text.SetBackgroundColour(wx.WHITE) waveSizer.Add(text,0,wx.EXPAND) if prm not in parmDict: parmDict[prm] = {} for i in range(numWave): if i not in parmDict[prm]: parmDict[prm][i] = defVal ctrl = G2G.ValidatedTxtCtrl(FPdlg,parmDict[prm],i,size=(90,-1)) waveSizer.Add(ctrl,1,wx.ALIGN_CENTER_VERTICAL,1) MainSizer.Add(waveSizer) MainSizer.Add((-1,5)) btnsizer = wx.BoxSizer(wx.HORIZONTAL) btn = wx.Button(FPdlg, wx.ID_ANY,'Add wave') btnsizer.Add(btn) btn.Bind(wx.EVT_BUTTON,_onAddWave) btn = wx.Button(FPdlg, wx.ID_ANY,'Remove wave') btnsizer.Add(btn) btn.Bind(wx.EVT_BUTTON,_onRemWave) btn = wx.Button(FPdlg, wx.ID_ANY,'CuKa1+2') btnsizer.Add(btn) btn.Bind(wx.EVT_BUTTON,_onSetCu2Wave) btn = wx.Button(FPdlg, wx.ID_ANY,'CuKa-5wave') btnsizer.Add(btn) btn.Bind(wx.EVT_BUTTON,_onSetCu5Wave) MainSizer.Add(btnsizer, 0, wx.ALIGN_CENTER, 0) MainSizer.Add((-1,5)) btnsizer = wx.GridBagSizer( 2, 5) btnsizer.Add( wx.StaticText(FPdlg, wx.ID_ANY, 'Detector type'), (0,0), (2,1), wx.ALIGN_CENTER | wx.ALL, 5) detBtn1 = wx.RadioButton(FPdlg,wx.ID_ANY,'Point',style=wx.RB_GROUP) detBtn1.SetValue(DetMode == 'BBpoint') btnsizer.Add(detBtn1, (0,1)) detBtn1.Bind(wx.EVT_RADIOBUTTON,_onSetDetBtn) detBtn2 = wx.RadioButton(FPdlg,wx.ID_ANY,'PSD') detBtn2.SetValue(not DetMode == 'BBpoint') btnsizer.Add(detBtn2, (1,1)) detBtn2.Bind(wx.EVT_RADIOBUTTON,_onSetDetBtn) btnsizer.Add( (40,-1), (0,2), (1,1), wx.ALIGN_CENTER | wx.ALL, 5) btnsizer.Add( wx.StaticText(FPdlg, wx.ID_ANY, 'Incident Beam Mono'), (0,3), (2,1), wx.ALIGN_CENTER | wx.ALL, 5) monoBtn1 = wx.RadioButton(FPdlg,wx.ID_ANY,'No',style=wx.RB_GROUP) monoBtn1.SetValue(not IBmono) btnsizer.Add(monoBtn1, (0,4)) monoBtn1.Bind(wx.EVT_RADIOBUTTON,_onSetMonoBtn) monoBtn2 = wx.RadioButton(FPdlg,wx.ID_ANY,'Yes') monoBtn2.SetValue(IBmono) btnsizer.Add(monoBtn2, (1,4)) monoBtn2.Bind(wx.EVT_RADIOBUTTON,_onSetMonoBtn) MainSizer.Add(btnsizer, 0, wx.ALIGN_CENTER, 0) global prmPnl prmPnl = wxscroll.ScrolledPanel(FPdlg, wx.ID_ANY, #size=(200,200), style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER) prmSizer = wx.FlexGridSizer(cols=3,hgap=3,vgap=5) prmPnl.SetSizer(prmSizer) FillParmSizer() MainSizer.Add(prmPnl,1,wx.EXPAND,1) prmPnl.SetAutoLayout(1) prmPnl.SetupScrolling() MainSizer.Add((-1,4)) btnsizer = wx.BoxSizer(wx.HORIZONTAL) btn = wx.Button(FPdlg, wx.ID_ANY, 'Plot peak') btnsizer.Add(btn) btn.Bind(wx.EVT_BUTTON,PlotTopasFPA) btnsizer.Add(wx.StaticText(FPdlg,wx.ID_ANY,' at ')) if 'plotpos' not in simParms: simParms['plotpos'] = simParms['minTT'] ctrl = G2G.ValidatedTxtCtrl(FPdlg,simParms,'plotpos',size=(70,-1)) btnsizer.Add(ctrl) btnsizer.Add(wx.StaticText(FPdlg,wx.ID_ANY,' deg.')) MainSizer.Add(btnsizer, 0, wx.ALIGN_CENTER, 0) MainSizer.Add((-1,4)) btnsizer = wx.BoxSizer(wx.HORIZONTAL) OKbtn = wx.Button(FPdlg, wx.ID_OK) OKbtn.SetDefault() btnsizer.Add(OKbtn) Cbtn = wx.Button(FPdlg, wx.ID_CLOSE,"Cancel") btnsizer.Add(Cbtn) MainSizer.Add(btnsizer, 0, wx.ALIGN_CENTER, 0) MainSizer.Add((-1,4)) # bindings for close of window OKbtn.Bind(wx.EVT_BUTTON,_onOK) Cbtn.Bind(wx.EVT_BUTTON,_onClose) FPdlg.SetSizer(MainSizer) MainSizer.Layout() MainSizer.Fit(FPdlg) # control window size px,py = prmSizer.GetSize() dx,dy = FPdlg.GetSize() FPdlg.SetMinSize((dx,dy+200)) # leave a min of 200 points for scroll panel FPdlg.SetSize((max(dx,px+20),min(750,dy+py+30))) # 20 for scroll bar, 30 for a bit of room at bottom
def MakeSimSizer(G2frame, dlg): '''Create a GUI to get simulation with parameters for Fundamental Parameters fitting. :param wx.Window dlg: Frame or Dialog where GUI will appear :returns: a sizer with the GUI controls ''' def _onOK(event): msg = '' if simParms['minTT']-simParms['calcwid']/1.5 < 0.1: msg += 'First peak minus half the calc width is too low' if simParms['maxTT']+simParms['calcwid']/1.5 > 175: if msg: msg += '\n' msg += 'Last peak plus half the calc width is too high' if simParms['npeaks'] < 8: if msg: msg += '\n' msg += 'At least 8 peaks are needed' if msg: G2G.G2MessageBox(dlg,msg,'Bad input, try again') return # compute "obs" pattern ttArr = np.arange(max(0.5, simParms['minTT']-simParms['calcwid']/1.5), simParms['maxTT']+simParms['calcwid']/1.5, simParms['step']) intArr = np.zeros_like(ttArr) peaklist = np.linspace(simParms['minTT'],simParms['maxTT'], simParms['npeaks'],endpoint=True) peakSpacing = (peaklist[-1]-peaklist[0])/(len(peaklist)-1) NISTpk = setupFPAcalc() minPtsHM = len(intArr) # initialize points above half-max maxPtsHM = 0 for num,twoth_peak in enumerate(peaklist): try: center_bin_idx,peakObj = doFPAcalc( NISTpk,ttArr,twoth_peak,simParms['calcwid'], simParms['step']) except Exception as err: if msg: msg += '\n' msg = "Error computing convolution, revise input. Error =\n"+str(err) continue if num == 0: G2plt.PlotFPAconvolutors(G2frame,NISTpk) pkMax = peakObj.peak.max() pkPts = len(peakObj.peak) minPtsHM = min(minPtsHM,sum(peakObj.peak >= 0.5*pkMax)) # points above half-max maxPtsHM = max(maxPtsHM,sum(peakObj.peak >= 0.5*pkMax)) # points above half-max startInd = center_bin_idx-(pkPts//2) #this should be the aligned start of the new data # scale peak so max I=10,000 and add into intensity array if startInd < 0: intArr[:startInd+pkPts] += 10000 * peakObj.peak[-startInd:]/pkMax elif startInd > len(intArr): break elif startInd+pkPts >= len(intArr): offset = pkPts - len( intArr[startInd:] ) intArr[startInd:startInd+pkPts-offset] += 10000 * peakObj.peak[:-offset]/pkMax else: intArr[startInd:startInd+pkPts] += 10000 * peakObj.peak/pkMax # check if peaks are too closely spaced if maxPtsHM*simParms['step'] > peakSpacing/4: if msg: msg += '\n' msg += 'Maximum FWHM ({}) is too large compared to the peak spacing ({}). Decrease number of peaks or increase data range.'.format( maxPtsHM*simParms['step'], peakSpacing) # check if too few points across Hmax if minPtsHM < 10: if msg: msg += '\n' msg += 'There are only {} points above the half-max. 10 are needed. Dropping step size.'.format(minPtsHM) simParms['step'] *= 0.5 if msg: G2G.G2MessageBox(dlg,msg,'Bad input, try again') wx.CallAfter(MakeSimSizer,G2frame, dlg) return # pattern has been computed successfully dlg.Destroy() wx.CallAfter(FitFPApeaks,ttArr, intArr, peaklist, maxPtsHM) # do peakfit outside event callback def FitFPApeaks(ttArr, intArr, peaklist, maxPtsHM): '''Perform a peak fit to the FP simulated pattern ''' pgbar = wx.ProgressDialog('FPA Simulation','Starting FPA simulation',100, parent=G2frame, style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE #|wx.PD_CAN_ABORT ) pgbar.Raise() wx.BeginBusyCursor() # pick out one or two most intense wavelengths ints = list(NISTparms['emission']['emiss_intensities']) Lam1 = NISTparms['emission']['emiss_wavelengths'][np.argmax(ints)]*1e10 if len(ints) > 1: ints[np.argmax(ints)] = -1 Lam2 = NISTparms['emission']['emiss_wavelengths'][np.argmax(ints)]*1e10 else: Lam2 = None histId = G2frame.AddSimulatedPowder(ttArr,intArr, 'NIST Fundamental Parameters simulation', Lam1,Lam2) controls = G2frame.GPXtree.GetItemPyData( G2gd.GetGPXtreeItemId(G2frame,G2frame.root,'Controls')) controldat = controls.get('data', {'deriv type':'analytic','min dM/M':0.001,}) #fil Parms,Parms2 = G2frame.GPXtree.GetItemPyData( G2gd.GetGPXtreeItemId(G2frame,histId,'Instrument Parameters')) peakData = G2frame.GPXtree.GetItemPyData( G2gd.GetGPXtreeItemId(G2frame,histId,'Peak List')) # set background to 0 with one term = 0; disable refinement bkg1,bkg2 = bkg = G2frame.GPXtree.GetItemPyData( G2gd.GetGPXtreeItemId(G2frame,histId,'Background')) bkg1[1]=False bkg1[2]=0 bkg1[3]=0.0 limits = G2frame.GPXtree.GetItemPyData( G2gd.GetGPXtreeItemId(G2frame,histId,'Limits')) # approximate asym correction try: Parms['SH/L'][1] = 0.25 * ( NISTparms['axial']['length_sample']+ NISTparms['axial']['slit_length_source'] ) / NISTparms['']['diffractometer_radius'] except: pass pgbar.Update(5,newmsg='Creating peak list') pgbar.Raise() for pos in peaklist: i = ttArr.searchsorted(pos) area = sum(intArr[max(0,i-maxPtsHM):min(len(intArr),i+maxPtsHM)]) peakData['peaks'].append(G2mth.setPeakparms(Parms,Parms2,pos,area)) pgbar.Update(10,newmsg='Refining peak positions') histData = G2frame.GPXtree.GetItemPyData(histId) # refine peak positions only bxye = np.zeros(len(histData[1][1])) peakData['sigDict'] = G2pwd.DoPeakFit('LSQ',peakData['peaks'], bkg,limits[1], Parms,Parms2,histData[1],bxye,[], False,controldat)[0] pgbar.Update(20,newmsg='Refining peak positions && areas') # refine peak areas as well for pk in peakData['peaks']: pk[1] = True peakData['sigDict'] = G2pwd.DoPeakFit('LSQ',peakData['peaks'], bkg,limits[1], Parms,Parms2,histData[1],bxye,[], False,controldat)[0] pgbar.Update(40,newmsg='Refining profile function') # refine profile function for p in ('U', 'V', 'W', 'X', 'Y'): Parms[p][2] = True peakData['sigDict'] = G2pwd.DoPeakFit('LSQ',peakData['peaks'], bkg,limits[1], Parms,Parms2,histData[1],bxye,[], False,controldat)[0] pgbar.Update(70,newmsg='Refining profile function && asymmetry') # add in asymmetry Parms['SH/L'][2] = True peakData['sigDict'] = G2pwd.DoPeakFit('LSQ',peakData['peaks'], bkg,limits[1], Parms,Parms2,histData[1],bxye,[], False,controldat)[0] pgbar.Update(100,newmsg='Done') # reset "initial" profile for p in Parms: if len(Parms[p]) == 3: Parms[p][0] = Parms[p][1] Parms[p][2] = False pgbar.Destroy() wx.EndBusyCursor() # save Iparms pth = G2G.GetExportPath(G2frame) fldlg = wx.FileDialog(G2frame, 'Set name to save GSAS-II instrument parameters file', pth, '', 'instrument parameter files (*.instprm)|*.instprm',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT) try: if fldlg.ShowModal() == wx.ID_OK: filename = fldlg.GetPath() # make sure extension is .instprm filename = os.path.splitext(filename)[0]+'.instprm' File = open(filename,'w') File.write("#GSAS-II instrument parameter file; do not add/delete items!\n") for item in Parms: File.write(item+':'+str(Parms[item][1])+'\n') File.close() print ('Instrument parameters saved to: '+filename) finally: fldlg.Destroy() #GSASIIpath.IPyBreak() def _onClose(event): dlg.Destroy() def SetButtonStatus(done=False): OKbtn.Enable(bool(NISTparms)) saveBtn.Enable(bool(NISTparms)) if done: _onOK(None) def _onSetFPA(event): # Create a non-modal dialog for Topas-style FP input. FPdlg = wx.Dialog(dlg,wx.ID_ANY,'FPA parameters', style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) MakeTopasFPASizer(G2frame,FPdlg,SetButtonStatus) FPdlg.CenterOnParent() FPdlg.Raise() FPdlg.Show() def _onSaveFPA(event): filename = G2G.askSaveFile(G2frame,'','.NISTfpa', 'dict of NIST FPA values',dlg) if not filename: return fp = open(filename,'w') fp.write('# parameters to be used in the NIST XRD Fundamental Parameters program\n') fp.write('{\n') for key in sorted(NISTparms): fp.write(" '"+key+"' : "+str(NISTparms[key])+",") if not key: fp.write(' # global parameters') fp.write('\n') fp.write('}\n') fp.close() def _onReadFPA(event): filename = G2G.GetImportFile(G2frame, message='Read file with dict of values for NIST Fundamental Parameters', parent=dlg, wildcard='dict of NIST FPA values|*.NISTfpa') if not filename: return if not filename[0]: return try: txt = open(filename[0],'r').read() NISTparms.clear() d = eval(txt) NISTparms.update(d) except Exception as err: G2G.G2MessageBox(dlg, u'Error reading file {}:{}\n'.format(filename,err), 'Bad dict input') #GSASIIpath.IPyBreak() SetButtonStatus() if dlg.GetSizer(): dlg.GetSizer().Clear(True) MainSizer = wx.BoxSizer(wx.VERTICAL) MainSizer.Add(wx.StaticText(dlg,wx.ID_ANY, 'Fit Profile Parameters to Peaks from Fundamental Parameters', style=wx.ALIGN_CENTER),0,wx.EXPAND) MainSizer.Add((-1,5)) prmSizer = wx.FlexGridSizer(cols=2,hgap=3,vgap=5) text = wx.StaticText(dlg,wx.ID_ANY,'value',style=wx.ALIGN_CENTER) text.SetBackgroundColour(wx.WHITE) prmSizer.Add(text,0,wx.EXPAND) text = wx.StaticText(dlg,wx.ID_ANY,'explanation',style=wx.ALIGN_CENTER) text.SetBackgroundColour(wx.WHITE) prmSizer.Add(text,0,wx.EXPAND) for key,defVal,text in ( ('minTT',3.,'Location of first peak in 2theta (deg)'), ('maxTT',123.,'Location of last peak in 2theta (deg)'), ('step',0.01,'Pattern step size (deg 2theta)'), ('npeaks',13.,'Number of peaks'), ('calcwid',2.,'Range to compute each peak (deg 2theta)'), ): if key not in simParms: simParms[key] = defVal ctrl = G2G.ValidatedTxtCtrl(dlg,simParms,key,size=(70,-1)) prmSizer.Add(ctrl,1,wx.ALL|wx.ALIGN_CENTER_VERTICAL,1) txt = wx.StaticText(dlg,wx.ID_ANY,text,size=(300,-1)) txt.Wrap(280) prmSizer.Add(txt) MainSizer.Add(prmSizer) btnsizer = wx.BoxSizer(wx.HORIZONTAL) btn = wx.Button(dlg, wx.ID_ANY,'Input FP vals') btnsizer.Add(btn) btn.Bind(wx.EVT_BUTTON,_onSetFPA) saveBtn = wx.Button(dlg, wx.ID_ANY,'Save FPA dict') btnsizer.Add(saveBtn) saveBtn.Bind(wx.EVT_BUTTON,_onSaveFPA) readBtn = wx.Button(dlg, wx.ID_ANY,'Read FPA dict') btnsizer.Add(readBtn) readBtn.Bind(wx.EVT_BUTTON,_onReadFPA) MainSizer.Add(btnsizer, 0, wx.ALIGN_CENTER, 0) MainSizer.Add((-1,4),1,wx.EXPAND,1) txt = wx.StaticText(dlg,wx.ID_ANY, 'If you use this, please cite: '+Citation, size=(350,-1)) txt.Wrap(340) MainSizer.Add(txt,0,wx.ALIGN_CENTER) btnsizer = wx.BoxSizer(wx.HORIZONTAL) OKbtn = wx.Button(dlg, wx.ID_OK) OKbtn.SetDefault() btnsizer.Add(OKbtn) Cbtn = wx.Button(dlg, wx.ID_CLOSE,"Cancel") btnsizer.Add(Cbtn) MainSizer.Add(btnsizer, 0, wx.ALIGN_CENTER, 0) MainSizer.Add((-1,4),1,wx.EXPAND,1) # bindings for close of window OKbtn.Bind(wx.EVT_BUTTON,_onOK) Cbtn.Bind(wx.EVT_BUTTON,_onClose) SetButtonStatus() dlg.SetSizer(MainSizer) MainSizer.Layout() MainSizer.Fit(dlg) dlg.SetMinSize(dlg.GetSize()) dlg.SendSizeEvent() dlg.Raise()
def __init__(self, parent, log): wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL | wx.NO_FULL_REPAINT_ON_RESIZE) panel = wx.Panel(self, -1) sizer = wx.FlexGridSizer(rows=2, cols=3, vgap=2, hgap=5) # 6 Panels To Hold The SpeedMeters ;-) panel1 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER) panel2 = wx.Panel(panel, -1, style=wx.RAISED_BORDER) panel3 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER) panel4 = wx.Panel(panel, -1, style=wx.RAISED_BORDER) panel5 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER) panel6 = wx.Panel(panel, -1, style=wx.RAISED_BORDER) # First SpeedMeter: We Use The Following Styles: # # SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator # SM_DRAW_SECTORS: Full Sectors Will Be Drawn, To Indicate Different Intervals # SM_DRAW_MIDDLE_TEXT: We Draw Some Text In The Center Of SpeedMeter # SM_DRAW_SECONDARY_TICKS: We Draw Secondary (Intermediate) Ticks Between # The Main Ticks (Intervals) self.SpeedWindow1 = SM.SpeedMeter( panel1, agwStyle=SM.SM_DRAW_HAND | SM.SM_DRAW_SECTORS | SM.SM_DRAW_MIDDLE_TEXT | SM.SM_DRAW_SECONDARY_TICKS) # Set The Region Of Existence Of SpeedMeter (Always In Radians!!!!) self.SpeedWindow1.SetAngleRange(-pi / 6, 7 * pi / 6) # Create The Intervals That Will Divide Our SpeedMeter In Sectors intervals = range(0, 201, 20) self.SpeedWindow1.SetIntervals(intervals) # Assign The Same Colours To All Sectors (We Simulate A Car Control For Speed) # Usually This Is Black colours = [wx.BLACK] * 10 self.SpeedWindow1.SetIntervalColours(colours) # Assign The Ticks: Here They Are Simply The String Equivalent Of The Intervals ticks = [str(interval) for interval in intervals] self.SpeedWindow1.SetTicks(ticks) # Set The Ticks/Tick Markers Colour self.SpeedWindow1.SetTicksColour(wx.WHITE) # We Want To Draw 5 Secondary Ticks Between The Principal Ticks self.SpeedWindow1.SetNumberOfSecondaryTicks(5) # Set The Font For The Ticks Markers self.SpeedWindow1.SetTicksFont( wx.Font(7, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)) # Set The Text In The Center Of SpeedMeter self.SpeedWindow1.SetMiddleText("Km/h") # Assign The Colour To The Center Text self.SpeedWindow1.SetMiddleTextColour(wx.WHITE) # Assign A Font To The Center Text self.SpeedWindow1.SetMiddleTextFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)) # Set The Colour For The Hand Indicator self.SpeedWindow1.SetHandColour(wx.Colour(255, 50, 0)) # Do Not Draw The External (Container) Arc. Drawing The External Arc May # Sometimes Create Uglier Controls. Try To Comment This Line And See It # For Yourself! self.SpeedWindow1.DrawExternalArc(False) # Set The Current Value For The SpeedMeter self.SpeedWindow1.SetSpeedValue(44) # Second SpeedMeter: We Use The Following Styles: # # SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator # SM_DRAW_SECTORS: Full Sectors Will Be Drawn, To Indicate Different Intervals # SM_DRAW_MIDDLE_TEXT: We Draw Some Text In The Center Of SpeedMeter # SM_DRAW_SECONDARY_TICKS: We Draw Secondary (Intermediate) Ticks Between # The Main Ticks (Intervals) # SM_DRAW_PARTIAL_FILLER: The Region Passed By The Hand Indicator Is Highlighted # With A Different Filling Colour # SM_DRAW_SHADOW: A Shadow For The Hand Indicator Is Drawn self.SpeedWindow2 = SM.SpeedMeter( panel2, agwStyle=SM.SM_DRAW_HAND | SM.SM_DRAW_SECTORS | SM.SM_DRAW_MIDDLE_TEXT | SM.SM_DRAW_SECONDARY_TICKS | SM.SM_DRAW_PARTIAL_FILLER | SM.SM_DRAW_SHADOW) # We Want To Simulate A Clock. Somewhat Tricky, But Did The Job self.SpeedWindow2.SetAngleRange(pi / 2, 5 * pi / 2) intervals = range(0, 13) self.SpeedWindow2.SetIntervals(intervals) colours = [wx.SystemSettings.GetColour(0)] * 12 self.SpeedWindow2.SetIntervalColours(colours) ticks = [str(interval) for interval in intervals] ticks[-1] = "" ticks[0] = "12" self.SpeedWindow2.SetTicks(ticks) self.SpeedWindow2.SetTicksColour(wx.BLUE) self.SpeedWindow2.SetTicksFont( wx.Font(11, wx.FONTFAMILY_SCRIPT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True)) self.SpeedWindow2.SetNumberOfSecondaryTicks(4) # Set The Colour For The External Arc self.SpeedWindow2.SetArcColour(wx.BLUE) self.SpeedWindow2.SetHandColour(wx.BLACK) self.SpeedWindow2.SetMiddleText("0 s") self.SpeedWindow2.SetMiddleTextColour(wx.RED) # We Set The Background Colour Of The SpeedMeter OutSide The Control self.SpeedWindow2.SetSpeedBackground(wx.WHITE) # Set The Colour For The Shadow self.SpeedWindow2.SetShadowColour(wx.Colour(128, 128, 128)) self.SpeedWindow2.SetSpeedValue(0.0) # Third SpeedMeter: We Use The Following Styles: # # SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator # SM_DRAW_PARTIAL_SECTORS: Partial Sectors Will Be Drawn, To Indicate Different Intervals # SM_DRAW_MIDDLE_ICON: We Draw An Icon In The Center Of SpeedMeter self.SpeedWindow3 = SM.SpeedMeter(panel3, agwStyle=SM.SM_DRAW_HAND | SM.SM_DRAW_PARTIAL_SECTORS | SM.SM_DRAW_MIDDLE_ICON) # We Want To Simulate A Car Gas-Control self.SpeedWindow3.SetAngleRange(-pi / 3, pi / 3) intervals = range(0, 5) self.SpeedWindow3.SetIntervals(intervals) colours = [wx.BLACK] * 3 colours.append(wx.RED) self.SpeedWindow3.SetIntervalColours(colours) ticks = ["F", "", "", "", "E"] self.SpeedWindow3.SetTicks(ticks) self.SpeedWindow3.SetTicksColour(wx.WHITE) self.SpeedWindow3.SetHandColour(wx.Colour(255, 255, 0)) # Define The Icon We Want icon = wx.Icon(os.path.normpath(os.path.join(bitmapDir, "smfuel.ico")), wx.BITMAP_TYPE_ICO) icon.SetWidth(24) icon.SetHeight(24) # Draw The Icon In The Center Of SpeedMeter self.SpeedWindow3.SetMiddleIcon(icon) self.SpeedWindow3.SetSpeedBackground(wx.BLACK) self.SpeedWindow3.SetArcColour(wx.WHITE) self.SpeedWindow3.SetSpeedValue(0.7) # Fourth SpeedMeter: We Use The Following Styles: # # SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator # SM_DRAW_SECTORS: Full Sectors Will Be Drawn, To Indicate Different Intervals # SM_DRAW_SHADOW: A Shadow For The Hand Indicator Is Drawn # SM_DRAW_MIDDLE_ICON: We Draw An Icon In The Center Of SpeedMeter # # NOTE: We Use The Mouse Style mousestyle=SM_MOUSE_TRACK. In This Way, Mouse # Events Are Catched (Mainly Left Clicks/Drags) And You Can Change The Speed # Value Using The Mouse self.SpeedWindow4 = SM.SpeedMeter( panel4, agwStyle=SM.SM_DRAW_HAND | SM.SM_DRAW_SECTORS | SM.SM_DRAW_SHADOW | SM.SM_DRAW_MIDDLE_ICON, mousestyle=SM.SM_MOUSE_TRACK) # We Want To Simulate Some Kind Of Thermometer (In Celsius Degrees!!!) self.SpeedWindow4.SetAngleRange(pi, 2 * pi) intervals = range(35, 44) self.SpeedWindow4.SetIntervals(intervals) colours = [wx.BLUE] * 5 colours.extend([wx.Colour(255, 255, 0)] * 2) colours.append(wx.RED) self.SpeedWindow4.SetIntervalColours(colours) ticks = [str(interval) + "C" for interval in intervals] self.SpeedWindow4.SetTicks(ticks) self.SpeedWindow4.SetTicksColour(wx.BLACK) self.SpeedWindow4.SetTicksFont( wx.Font(7, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)) self.SpeedWindow4.SetHandColour(wx.Colour(0, 0, 255)) self.SpeedWindow4.SetSpeedBackground(wx.SystemSettings.GetColour(0)) self.SpeedWindow4.DrawExternalArc(False) self.SpeedWindow4.SetHandColour(wx.GREEN) self.SpeedWindow4.SetShadowColour(wx.Colour(50, 50, 50)) # We Want A Simple Arrow As Indicator, Not The More Scenic Hand ;-) self.SpeedWindow4.SetHandStyle("Arrow") # Define The Icon We Want icon = wx.Icon(os.path.normpath(os.path.join(bitmapDir, "smtemp.ico")), wx.BITMAP_TYPE_ICO) icon.SetWidth(16) icon.SetHeight(16) # Draw The Icon In The Center Of SpeedMeter self.SpeedWindow4.SetMiddleIcon(icon) # Quite An High Fever!!! self.SpeedWindow4.SetSpeedValue(41.4) # Fifth SpeedMeter: We Use The Following Styles: # # SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator # SM_DRAW_PARTIAL_SECTORS: Partial Sectors Will Be Drawn, To Indicate Different Intervals # SM_DRAW_SECONDARY_TICKS: We Draw Secondary (Intermediate) Ticks Between # The Main Ticks (Intervals) # SM_DRAW_MIDDLE_TEXT: We Draw Some Text In The Center Of SpeedMeter # SM_ROTATE_TEXT: The Ticks Texts Are Rotated Accordingly To Their Angle self.SpeedWindow5 = SM.SpeedMeter( panel5, agwStyle=SM.SM_DRAW_HAND | SM.SM_DRAW_PARTIAL_SECTORS | SM.SM_DRAW_SECONDARY_TICKS | SM.SM_DRAW_MIDDLE_TEXT | SM.SM_ROTATE_TEXT) # We Want To Simulate The Round Per Meter Control In A Car self.SpeedWindow5.SetAngleRange(-pi / 6, 7 * pi / 6) intervals = range(0, 9) self.SpeedWindow5.SetIntervals(intervals) colours = [wx.BLACK] * 6 colours.append(wx.Colour(255, 255, 0)) colours.append(wx.RED) self.SpeedWindow5.SetIntervalColours(colours) ticks = [str(interval) for interval in intervals] self.SpeedWindow5.SetTicks(ticks) self.SpeedWindow5.SetTicksColour(wx.WHITE) self.SpeedWindow5.SetTicksFont( wx.Font(7, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)) self.SpeedWindow5.SetHandColour(wx.Colour(255, 50, 0)) self.SpeedWindow5.SetSpeedBackground(wx.SystemSettings.GetColour(0)) self.SpeedWindow5.DrawExternalArc(False) self.SpeedWindow5.SetShadowColour(wx.Colour(50, 50, 50)) self.SpeedWindow5.SetMiddleText("rpm") self.SpeedWindow5.SetMiddleTextColour(wx.WHITE) self.SpeedWindow5.SetMiddleTextFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)) self.SpeedWindow5.SetSpeedBackground(wx.Colour(160, 160, 160)) self.SpeedWindow5.SetSpeedValue(5.6) # Sixth SpeedMeter: That Is Complete And Complex Example. # We Use The Following Styles: # # SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator # SM_DRAW_PARTIAL_FILLER: The Region Passed By The Hand Indicator Is Highlighted # With A Different Filling Colour # SM_DRAW_MIDDLE_ICON: We Draw An Icon In The Center Of SpeedMeter # SM_DRAW_GRADIENT: A Circular Colour Gradient Is Drawn Inside The SpeedMeter, To # Give Some Kind Of Scenic Effect # SM_DRAW_FANCY_TICKS: We Use wx.lib. # SM_DRAW_SHADOW: A Shadow For The Hand Indicator Is Drawn self.SpeedWindow6 = SM.SpeedMeter( panel6, agwStyle=SM.SM_DRAW_HAND | SM.SM_DRAW_PARTIAL_FILLER | SM.SM_DRAW_MIDDLE_ICON | SM.SM_DRAW_GRADIENT | SM.SM_DRAW_FANCY_TICKS | SM.SM_DRAW_SHADOW) self.SpeedWindow6.SetAngleRange(0, 4 * pi / 3) intervals = [ 0, pi / 6, sqrt(pi), 2. / 3. * pi, pi**2 / 4, pi, 7. / 6. * pi, 4 * pi / 3 ] self.SpeedWindow6.SetIntervals(intervals) # If You Use The Style SM_DRAW_FANCY_TICKS, Refer To wx.lib.fancytext To Create # Correct XML Strings To Put Here ticks = [ "0", "<pi/>/6", "sq(<pi/>)", "2<pi/>/3", "<pi/><sup>2</sup>/4", "<pi/>", "7<pi/>/6", "4<pi/>/3" ] self.SpeedWindow6.SetTicks(ticks) self.SpeedWindow6.SetTicksColour(wx.Colour(0, 90, 0)) self.SpeedWindow6.SetTicksFont( wx.Font(6, wx.FONTFAMILY_ROMAN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)) self.SpeedWindow6.SetHandColour(wx.Colour(60, 60, 60)) self.SpeedWindow6.DrawExternalArc(False) self.SpeedWindow6.SetFillerColour(wx.Colour(145, 220, 200)) self.SpeedWindow6.SetShadowColour(wx.BLACK) self.SpeedWindow6.SetDirection("Reverse") self.SpeedWindow6.SetSpeedBackground(wx.SystemSettings.GetColour(0)) # Set The First Gradient Colour, Which Is The Colour Near The External Arc self.SpeedWindow6.SetFirstGradientColour(wx.RED) # Set The Second Gradient Colour, Which Is The Colour Near The Center Of The SpeedMeter self.SpeedWindow6.SetSecondGradientColour(wx.WHITE) icon = wx.Icon(os.path.normpath(os.path.join(bitmapDir, "smpi.ico")), wx.BITMAP_TYPE_ICO) icon.SetHeight(12) icon.SetWidth(12) self.SpeedWindow6.SetMiddleIcon(icon) self.SpeedWindow6.SetSpeedValue(pi / 3) # End Of SpeedMeter Controls Construction. Add Some Functionality self.isalive = 0 # These Are Cosmetics For The First SpeedMeter Control bsizer1 = wx.BoxSizer(wx.VERTICAL) hsizer1 = wx.BoxSizer(wx.HORIZONTAL) slider = wx.Slider(panel1, -1, 44, 0, 200, size=(-1, 40), style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS) slider.SetTickFreq(5) slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll) slider.SetToolTip(wx.ToolTip("Drag The Slider To Change The Speed!")) hsizer1.Add(slider, 1, wx.EXPAND) bsizer1.Add(self.SpeedWindow1, 1, wx.EXPAND) bsizer1.Add(hsizer1, 0, wx.EXPAND) panel1.SetSizer(bsizer1) # These Are Cosmetics For The Second SpeedMeter Control # Create The Timer For The Clock self.timer = wx.PyTimer(self.ClockTimer) self.currvalue = 0 bsizer2 = wx.BoxSizer(wx.VERTICAL) hsizer2 = wx.BoxSizer(wx.HORIZONTAL) stattext2 = wx.StaticText(panel2, -1, "A Simple Clock", style=wx.ALIGN_CENTER) button2 = wx.Button(panel2, -1, "Stop") self.stopped = 0 button2.Bind(wx.EVT_BUTTON, self.OnStopClock) button2.SetToolTip(wx.ToolTip("Click To Stop/Resume The Clock")) hsizer2.Add(button2, 0, wx.LEFT, 5) hsizer2.Add(stattext2, 1, wx.EXPAND) bsizer2.Add(self.SpeedWindow2, 1, wx.EXPAND) bsizer2.Add(hsizer2, 0, wx.EXPAND) panel2.SetSizer(bsizer2) # These Are Cosmetics For The Third SpeedMeter Control self.timer3 = wx.PyTimer(self.OilTimer) bsizer3 = wx.BoxSizer(wx.VERTICAL) hsizer3 = wx.BoxSizer(wx.HORIZONTAL) sc = wx.SpinCtrl(panel3, -1, size=(60, 20)) sc.SetRange(1, 250) sc.SetValue(50) self.spinctrl = sc strs = "Change The Speed And See How Much Fuel You Loose" self.spinctrl.SetToolTip(wx.ToolTip(strs)) button3 = wx.Button(panel3, -1, "Refill!", size=(60, 20)) button3.SetToolTip(wx.ToolTip("Click Here To Refill!")) button3.Bind(wx.EVT_BUTTON, self.OnRefill) hsizer3.Add(self.spinctrl, 0, wx.EXPAND | wx.LEFT, 5) hsizer3.Add(button3, 0, wx.EXPAND | wx.LEFT, 5) hsizer3.Add((1, 0), 2, wx.EXPAND) bsizer3.Add(self.SpeedWindow3, 1, wx.EXPAND) bsizer3.Add(hsizer3, 0, wx.EXPAND) panel3.SetSizer(bsizer3) # These Are Cosmetics For The Fourth SpeedMeter Control bsizer4 = wx.BoxSizer(wx.VERTICAL) hsizer4 = wx.BoxSizer(wx.HORIZONTAL) stattext4 = wx.StaticText(panel4, -1, "Use The Mouse ;-)") hsizer4.Add(stattext4, 1, wx.EXPAND | wx.LEFT, 5) bsizer4.Add(self.SpeedWindow4, 1, wx.EXPAND) bsizer4.Add(hsizer4, 0, wx.EXPAND) panel4.SetSizer(bsizer4) # These Are Cosmetics For The Fifth SpeedMeter Control bsizer5 = wx.BoxSizer(wx.VERTICAL) hsizer5 = wx.BoxSizer(wx.HORIZONTAL) button5 = wx.Button(panel5, -1, "Simulate") button5.SetToolTip(wx.ToolTip("Start A Car Acceleration Simulation")) button5.Bind(wx.EVT_BUTTON, self.OnSimulate) hsizer5.Add(button5, 0, wx.EXPAND | wx.LEFT, 5) hsizer5.Add((1, 0), 1, wx.EXPAND) bsizer5.Add(self.SpeedWindow5, 1, wx.EXPAND) bsizer5.Add(hsizer5, 0, wx.EXPAND) panel5.SetSizer(bsizer5) # These Are Cosmetics For The Sixth SpeedMeter Control bsizer6 = wx.BoxSizer(wx.VERTICAL) hsizer6 = wx.BoxSizer(wx.HORIZONTAL) txtctrl6 = wx.TextCtrl(panel6, -1, "60", size=(60, 20)) txtctrl6.SetToolTip(wx.ToolTip("Insert An Angle In DEGREES")) self.txtctrl = txtctrl6 button6 = wx.Button(panel6, -1, "Go!") button6.SetToolTip( wx.ToolTip("Calculate The Equivalent In Radians And Display It")) hsizer6.Add(txtctrl6, 0, wx.EXPAND | wx.LEFT, 5) hsizer6.Add(button6, 0, wx.EXPAND | wx.LEFT, 5) hsizer6.Add((1, 0), 1, wx.EXPAND) button6.Bind(wx.EVT_BUTTON, self.OnCalculate) bsizer6.Add(self.SpeedWindow6, 1, wx.EXPAND) bsizer6.Add(hsizer6, 0, wx.EXPAND) panel6.SetSizer(bsizer6) bsizer1.Layout() bsizer2.Layout() bsizer3.Layout() bsizer4.Layout() bsizer5.Layout() bsizer6.Layout() sizer.Add(panel1, 1, wx.EXPAND) sizer.Add(panel2, 1, wx.EXPAND) sizer.Add(panel3, 1, wx.EXPAND) sizer.Add(panel4, 1, wx.EXPAND) sizer.Add(panel5, 1, wx.EXPAND) sizer.Add(panel6, 1, wx.EXPAND) sizer.AddGrowableRow(0) sizer.AddGrowableRow(1) sizer.AddGrowableCol(0) sizer.AddGrowableCol(1) sizer.AddGrowableCol(2) panel.SetSizer(sizer) mainSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(panel, 1, wx.EXPAND) self.SetSizer(mainSizer) mainSizer.Layout() self.SendSizeEvent() self.timer.Start(1000) self.timer3.Start(500)
def __init__(self, parent, headers, cfg, cfgGl, applyFunc): wx.Dialog.__init__(self, parent, -1, "Headers", style=wx.DEFAULT_DIALOG_STYLE) self.headers = headers self.cfg = cfg self.cfgGl = cfgGl self.applyFunc = applyFunc # whether some events are blocked self.block = False self.hdrIndex = -1 if len(self.headers.hdrs) > 0: self.hdrIndex = 0 vsizer = wx.BoxSizer(wx.VERTICAL) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Empty lines after headers:"), 0, wx.ALIGN_CENTER_VERTICAL) self.elinesEntry = wx.SpinCtrl(self, -1) self.elinesEntry.SetRange(0, 5) wx.EVT_SPINCTRL(self, self.elinesEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.elinesEntry, self.OnKillFocus) hsizer.Add(self.elinesEntry, 0, wx.LEFT, 10) vsizer.Add(hsizer) vsizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10) tmp = wx.StaticText(self, -1, "Strings:") vsizer.Add(tmp) self.stringsLb = wx.ListBox(self, -1, size=(200, 100)) vsizer.Add(self.stringsLb, 0, wx.EXPAND) hsizer = wx.BoxSizer(wx.HORIZONTAL) self.addBtn = gutil.createStockButton(self, "Add") hsizer.Add(self.addBtn) wx.EVT_BUTTON(self, self.addBtn.GetId(), self.OnAddString) gutil.btnDblClick(self.addBtn, self.OnAddString) self.delBtn = gutil.createStockButton(self, "Delete") hsizer.Add(self.delBtn, 0, wx.LEFT, 10) wx.EVT_BUTTON(self, self.delBtn.GetId(), self.OnDeleteString) gutil.btnDblClick(self.delBtn, self.OnDeleteString) vsizer.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Text:"), 0, wx.ALIGN_CENTER_VERTICAL) self.textEntry = wx.TextCtrl(self, -1) hsizer.Add(self.textEntry, 1, wx.LEFT, 10) wx.EVT_TEXT(self, self.textEntry.GetId(), self.OnMisc) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) vsizer.Add( wx.StaticText(self, -1, "'${PAGE}' will be replaced by the page number."), 0, wx.ALIGN_CENTER | wx.TOP, 5) hsizerTop = wx.BoxSizer(wx.HORIZONTAL) gsizer = wx.FlexGridSizer(3, 2, 5, 0) gsizer.Add(wx.StaticText(self, -1, "Header line:"), 0, wx.ALIGN_CENTER_VERTICAL) self.lineEntry = wx.SpinCtrl(self, -1) self.lineEntry.SetRange(1, 5) wx.EVT_SPINCTRL(self, self.lineEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.lineEntry, self.OnKillFocus) gsizer.Add(self.lineEntry) gsizer.Add(wx.StaticText(self, -1, "X offset (characters):"), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10) self.xoffEntry = wx.SpinCtrl(self, -1) self.xoffEntry.SetRange(-100, 100) wx.EVT_SPINCTRL(self, self.xoffEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.xoffEntry, self.OnKillFocus) gsizer.Add(self.xoffEntry) gsizer.Add(wx.StaticText(self, -1, "Alignment:"), 0, wx.ALIGN_CENTER_VERTICAL) self.alignCombo = wx.ComboBox(self, -1, style=wx.CB_READONLY) for it in [("Left", util.ALIGN_LEFT), ("Center", util.ALIGN_CENTER), ("Right", util.ALIGN_RIGHT)]: self.alignCombo.Append(it[0], it[1]) gsizer.Add(self.alignCombo) wx.EVT_COMBOBOX(self, self.alignCombo.GetId(), self.OnMisc) hsizerTop.Add(gsizer) bsizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Style"), wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) # wxGTK adds way more space by default than wxMSW between the # items, have to adjust for that pad = 0 if misc.isWindows: pad = 5 self.addCheckBox("Bold", self, vsizer2, pad) self.addCheckBox("Italic", self, vsizer2, pad) self.addCheckBox("Underlined", self, vsizer2, pad) bsizer.Add(vsizer2) hsizerTop.Add(bsizer, 0, wx.LEFT, 40) vsizer.Add(hsizerTop, 0, wx.TOP, 20) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add((1, 1), 1) previewBtn = gutil.createStockButton(self, "Preview") hsizer.Add(previewBtn) applyBtn = gutil.createStockButton(self, "Apply") hsizer.Add(applyBtn, 0, wx.LEFT, 10) cancelBtn = gutil.createStockButton(self, "Cancel") hsizer.Add(cancelBtn, 0, wx.LEFT, 10) okBtn = gutil.createStockButton(self, "OK") hsizer.Add(okBtn, 0, wx.LEFT, 10) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) util.finishWindow(self, vsizer) wx.EVT_BUTTON(self, previewBtn.GetId(), self.OnPreview) wx.EVT_BUTTON(self, applyBtn.GetId(), self.OnApply) wx.EVT_BUTTON(self, cancelBtn.GetId(), self.OnCancel) wx.EVT_BUTTON(self, okBtn.GetId(), self.OnOK) wx.EVT_LISTBOX(self, self.stringsLb.GetId(), self.OnStringsLb) # list of widgets that are specific to editing the selected string self.widList = [ self.textEntry, self.xoffEntry, self.alignCombo, self.lineEntry, self.boldCb, self.italicCb, self.underlinedCb ] self.updateGui() self.textEntry.SetFocus()
def __init__(self, parent, port, aui_notebook, manager, app): # dictionary for plots self._dict = {} # parent is the main frame self.panel = wx.Panel(app.main_frame) self.datarequest = wx.CheckBox(self.panel, label="Show data points") self.linerequest = wx.CheckBox(self.panel, label="Show line") self.legendrequest = wx.CheckBox(self.panel, label="Show Legend") self.guidelinesrequest = wx.CheckBox(self.panel, label="Show Guidelines") # ititial conditions self.linerequest.SetValue(True) self.legendrequest.SetValue(True) self.guidelinesrequest.SetValue(True) cbxsizer = wx.BoxSizer(wx.HORIZONTAL) cbxsizer.AddMany([ (self.guidelinesrequest, 1, wx.EXPAND), (self.datarequest, 1, wx.EXPAND), (self.linerequest, 1, wx.EXPAND), (self.legendrequest, 1, wx.EXPAND), ]) hbox = wx.BoxSizer(wx.HORIZONTAL) fgs = wx.FlexGridSizer(4, 1, 10, 10) self.panel.fig = Figure((5, 3), 75) self.panel.canvas = FigureCanvas(self.panel, 1, self.panel.fig) self.panel.toolbar = NavigationToolbar( self.panel.canvas) # matplotlib toolbar self.panel.toolbar.Realize() self.items_in_plot = wx.CheckListBox(self.panel, name="Ports Displayed", choices=[]) canvas_sizer = wx.BoxSizer(wx.HORIZONTAL) canvas_sizer.AddMany([(self.panel.canvas, 5, wx.EXPAND), (self.items_in_plot, 1, wx.EXPAND)]) dt = MyDropTarget(self, self.panel.canvas, app) self.panel.canvas.SetDropTarget(dt) fgs.AddMany([ (canvas_sizer, 1, wx.EXPAND), (self.panel.toolbar, 1, wx.EXPAND), (cbxsizer, 1, wx.EXPAND), ]) fgs.AddGrowableRow(0, 7) fgs.AddGrowableCol(0, 1) hbox.Add(fgs, proportion=1, flag=wx.ALL | wx.EXPAND, border=15) self.panel.SetSizer(hbox) self.panel.Bind(wx.EVT_CHECKBOX, self.on_data_point_request, self.datarequest) self.panel.Bind(wx.EVT_CHECKBOX, self.on_line_request, self.linerequest) self.panel.Bind(wx.EVT_CHECKBOX, self.on_legend_request, self.legendrequest) self.panel.Bind(wx.EVT_CHECKBOX, self.on_guideline_request, self.guidelinesrequest) self.panel.Bind(wx.EVT_CHECKLISTBOX, self.on_port_select, self.items_in_plot) self.ports = [] self.evaluate() self.datapoints = False self.drawline = True self.legend = True self.guidelines = True self.selected_ports = []
def __init__(self, parent): wx.Frame.__init__ (self, parent, id=wx.ID_ANY, title=u"Cari Pekerjaan", pos=wx.DefaultPosition, size=wx.Size(500, 300), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.VERTICAL) self.m_panel1 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.m_panel1.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Tw Cen MT")) bSizer5 = wx.BoxSizer(wx.VERTICAL) bSizer2 = wx.BoxSizer(wx.HORIZONTAL) bSizer2.Add((0, 0), 1, wx.EXPAND, 5) self.m_staticText1 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"Nama Pekerjaan", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText1.Wrap(-1) bSizer2.Add(self.m_staticText1, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.m_textCtrl1 = wx.TextCtrl(self.m_panel1, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.m_textCtrl1.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Tw Cen MT")) bSizer2.Add(self.m_textCtrl1, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.m_button3 = wx.TextCtrl(self.m_panel1, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.m_button3.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Tw Cen MT")) self.m_staticTextKode = wx.StaticText(self.m_panel1, wx.ID_ANY, label="Cari Dalam Bahasa Inggris") self.m_staticTextKode.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Tw Cen MT")) self.m_staticTextKode.Wrap(-1) # self.m_button3 = wx.Button( self.m_panel1, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) # self.m_button3.SetBitmap( wx.NullBitmap ) bSizer2.Add(self.m_staticTextKode, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) bSizer2.Add(self.m_button3, 1, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) bSizer5.Add(bSizer2, 0, wx.EXPAND, 5) from AppsSDS.db import db self.listprofesiona = db.QueryList() print (self.listprofesiona.query2()) # print (list(self.listprofesiona.query().keys())) # m_listBox1Choices = list(self.listprofesiona.query().keys()) m_listBox1Choices = list(self.listprofesiona.query2()) print(type(m_listBox1Choices)) # self.m_listBox1 = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_listBox1Choices, wx.LB_NEEDED_SB|wx.LB_SORT ) # bSizer5.Add( self.m_listBox1, 1, wx.ALL|wx.EXPAND, 5 ) # self.m_listBox1.Hide() self.m_listCtrl1 = wx.ListCtrl(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_EDIT_LABELS | wx.LC_REPORT) bSizer5.Add(self.m_listCtrl1, 1, wx.ALL | wx.EXPAND, 5) self.m_listCtrl1.InsertColumn(0, "Nama Pekerjaan", width=450, format=wx.LIST_FORMAT_LEFT) self.m_listCtrl1.InsertColumn(1, "Kode", width=75, format=wx.LIST_FORMAT_LEFT) self.m_listCtrl1.InsertColumn(2, "Pekerjaan Bahasa Indonesia", width=450, format=wx.LIST_FORMAT_LEFT) # print (m_listBox1Choices) for listdatabaseimport in range(len(m_listBox1Choices)) : print (listdatabaseimport) self.m_listCtrl1.InsertItem(listdatabaseimport, m_listBox1Choices[listdatabaseimport][0]) self.m_listCtrl1.SetItem(listdatabaseimport, 1, m_listBox1Choices[listdatabaseimport][1]) self.m_listCtrl1.SetItem(listdatabaseimport, 2, m_listBox1Choices[listdatabaseimport][2]) fgSizer1 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer1.AddGrowableCol(0) fgSizer1.AddGrowableCol(1) fgSizer1.AddGrowableRow(0) fgSizer1.SetFlexibleDirection(wx.BOTH) fgSizer1.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.cancel = wx.Button(self.m_panel1, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer1.Add(self.cancel, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 5) self.ok = wx.Button(self.m_panel1, wx.ID_ANY, u"Ok", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer1.Add(self.ok, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) bSizer5.Add(fgSizer1, 0, wx.EXPAND | wx.ALIGN_RIGHT, 5) self.m_panel1.SetSizer(bSizer5) self.m_panel1.Layout() bSizer5.Fit(self.m_panel1) bSizer1.Add(self.m_panel1, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH) # Connect Events self.m_textCtrl1.Bind(wx.EVT_TEXT, self.m_textCtrl_listOnText) # self.m_button3.Bind( wx.EVT_BUTTON, self.m_button3_cariOnButtonClick ) self.m_staticTextKode.Bind(wx.EVT_TEXT, self.m_textCtrlKode_listOnText) import os import pathlib pathf = pathlib.Path.cwd() / "images/symbol/search.jpg" self.image = wx.Image(str(pathf)) self.re_image = self.image.Rescale(40, 20) # self.m_button3.SetBitmap( wx.Bitmap( self.re_image ) ) self.m_button3.Refresh() self.m_button3.Layout() self.SetSizer(bSizer1) self.Refresh() self.Layout() self.SetSize(800, 600) self.Centre(wx.BOTH) # Connect Events self.m_textCtrl1.Bind(wx.EVT_TEXT, self.m_textCtrl_listOnText) self.m_button3.Bind(wx.EVT_TEXT, self.m_button3_cariOnButtonClick) # Connect Events self.cancel.Bind(wx.EVT_BUTTON, self.m_tombolcancel_lb) self.ok.Bind(wx.EVT_BUTTON, self.tombolok_lb) # self.m_listBox1.Bind( wx.EVT_LISTBOX_DCLICK, self.m_listboxselect ) self.m_textCtrl1.Bind(wx.EVT_TEXT, self.m_textCtrl_listOnText) # self.m_button3.Bind( wx.EVT_BUTTON, self.m_button3_cariOnButtonClick ) self.m_listCtrl1.Bind(wx.EVT_LEFT_DCLICK, self.m_listCtrl1OnLeftDClick)
def AdjustSettingsDialog(parent, localsettings): if miscmethods.ConfirmMessage( GetLabel("launchnodatabaseservermessage", localsettings), parent): dialog = wx.Dialog(parent, -1, GetLabel("launchdbiplabel", localsettings)) dialogsizer = wx.BoxSizer(wx.VERTICAL) panel = wx.Panel(dialog) topsizer = wx.BoxSizer(wx.VERTICAL) gridsizer = wx.FlexGridSizer(cols=2) gridsizer.AddGrowableCol(1) dbiplabel = wx.StaticText( panel, -1, miscmethods.NoWrap(GetLabel("launchdbiplabel", localsettings))) gridsizer.Add(dbiplabel, 0, wx.EXPAND) dbipentry = wx.TextCtrl(panel, -1, localsettings.dbip, size=(200, -1)) gridsizer.Add(dbipentry, 1, wx.EXPAND) dbuserlabel = wx.StaticText( panel, -1, miscmethods.NoWrap(GetLabel("launchdbuserlabel", localsettings))) gridsizer.Add(dbuserlabel, 0, wx.EXPAND) dbuserentry = wx.TextCtrl(panel, -1, localsettings.dbuser) gridsizer.Add(dbuserentry, 1, wx.EXPAND) dbpasslabel = wx.StaticText( panel, -1, miscmethods.NoWrap(GetLabel("launchdbpasslabel", localsettings))) gridsizer.Add(dbpasslabel, 0, wx.EXPAND) dbpassentry = wx.TextCtrl(panel, -1, localsettings.dbpass) gridsizer.Add(dbpassentry, 1, wx.EXPAND) topsizer.Add(gridsizer, 0, wx.EXPAND) submitbitmap = wx.Bitmap("icons/submit.png") submitbutton = wx.BitmapButton(panel, -1, submitbitmap) submitbutton.SetToolTipString(GetLabel("submitlabel", localsettings)) submitbutton.Bind(wx.EVT_BUTTON, SubmitSettings) topsizer.Add(submitbutton, 0, wx.ALIGN_CENTER) panel.SetSizer(topsizer) panel.dbuserentry = dbuserentry panel.dbpassentry = dbpassentry panel.dbipentry = dbipentry panel.localsettings = localsettings dialogsizer.Add(panel, 1, wx.EXPAND) dialog.SetSizer(dialogsizer) dialog.Fit() dialog.ShowModal() else: sys.exit()
def __init__(self, parent): wx.Panel.__init__(self, parent) default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR) self.SetBackgroundColour(default_colour) #self.SetBackgroundColour(wx.Colour(255,255,255)) self.SetAutoLayout(1) # Fixed hyperlink items tooltip = wx.ToolTip(_("Automatically select largest disconnected region and create new surface")) link_largest = hl.HyperLinkCtrl(self, -1, _("Select largest surface")) link_largest.SetUnderlines(False, False, False) link_largest.SetColours("BLACK", "BLACK", "BLACK") link_largest.SetToolTip(tooltip) link_largest.AutoBrowse(False) link_largest.UpdateLink() link_largest.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkLargest) tooltip = wx.ToolTip(_("Automatically select disconnected regions and create a new surface per region")) link_split_all = hl.HyperLinkCtrl(self, -1,_("Split all disconnected surfaces")) link_split_all.SetUnderlines(False, False, False) link_split_all.SetColours("BLACK", "BLACK", "BLACK") link_split_all.SetToolTip(tooltip) link_split_all.AutoBrowse(False) link_split_all.UpdateLink() link_split_all.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkSplit) tooltip = wx.ToolTip(_("Manually insert seeds of regions of interest and create a new surface")) link_seeds = hl.HyperLinkCtrl(self,-1,_("Select regions of interest...")) link_seeds.SetUnderlines(False, False, False) link_seeds.SetColours("BLACK", "BLACK", "BLACK") link_seeds.SetToolTip(tooltip) link_seeds.AutoBrowse(False) link_seeds.UpdateLink() link_seeds.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkSeed) # Image(s) for buttons img_largest = wx.Image(os.path.join(const.ICON_DIR, "connectivity_largest.png"), wx.BITMAP_TYPE_PNG) img_largest.Rescale(25, 25) bmp_largest = img_largest.ConvertToBitmap() img_split_all = wx.Image(os.path.join(const.ICON_DIR, "connectivity_split_all.png"), wx.BITMAP_TYPE_PNG) img_split_all.Rescale(25, 25) bmp_split_all = img_split_all.ConvertToBitmap() img_seeds = wx.Image(os.path.join(const.ICON_DIR, "connectivity_manual.png"), wx.BITMAP_TYPE_PNG) img_seeds.Rescale(25, 25) bmp_seeds = img_seeds.ConvertToBitmap() # Buttons related to hyperlinks button_style = pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_DEFAULT button_style_plus = button_style|pbtn.PB_STYLE_TOGGLE button_split = pbtn.PlateButton(self, BTN_SPLIT, "", bmp_split_all, style=button_style) button_largest = pbtn.PlateButton(self, BTN_LARGEST, "", bmp_largest, style=button_style) button_seeds = pbtn.PlateButton(self, BTN_SEEDS, "", bmp_seeds, style=button_style_plus) self.button_seeds = button_seeds # When using PlaneButton, it is necessary to bind events from parent win self.Bind(wx.EVT_BUTTON, self.OnButton) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleButton) # Tags and grid sizer for fixed items flag_link = wx.EXPAND|wx.GROW|wx.LEFT|wx.TOP flag_button = wx.EXPAND | wx.GROW #fixed_sizer = wx.FlexGridSizer(rows=3, cols=2, hgap=2, vgap=0) fixed_sizer = wx.FlexGridSizer(rows=3, cols=2, hgap=2, vgap=0) fixed_sizer.AddGrowableCol(0, 1) fixed_sizer.AddMany([(link_largest, 1, flag_link, 3), (button_largest, 0, flag_button), (link_seeds, 1, flag_link, 3), (button_seeds, 0, flag_button), (link_split_all, 1, flag_link, 3), (button_split, 0, flag_button)]) # Add line sizers into main sizer main_sizer = wx.BoxSizer(wx.VERTICAL) main_sizer.Add(fixed_sizer, 0, wx.GROW|wx.EXPAND|wx.TOP, 5) # Update main sizer and panel layout self.SetSizerAndFit(main_sizer) self.Update() self.sizer = main_sizer
def __init__(self, parent, db_filename, address): wx.Dialog.__init__(self, parent, title='Fetching %s' % address, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) self.db_filename = db_filename self.address = address self.data = None self.vectors_downloaded = 0 self.chunks_decoded = 0 self.cover_received = 0 self.data_decoded = 0 self.logger = logging.getLogger('collage_proxy') self.logger.info('Building fetch window') self.sizer = wx.FlexGridSizer(wx.VERTICAL) self.sizer.AddGrowableRow(1) self.sizer.AddGrowableCol(0) status_str = 'Currently fetching %s\n' % address + \ 'This program will open new Firefox windows. ' + \ 'Do not interfere with these windows.' label = wx.StaticText(self, label=status_str, style=wx.ALIGN_CENTER) self.sizer.Add(label, flag=wx.ALIGN_CENTER) self.sizer.Add(wx.StaticLine(self, style=wx.LI_HORIZONTAL), flag=wx.EXPAND) status_sizer = wx.BoxSizer(wx.VERTICAL) self.status_label = wx.StaticText(self, label='Opening Firefox', style=wx.ALIGN_LEFT) defFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) self.status_label.SetFont(wx.Font(defFont.GetPointSize()+2, wx.DEFAULT, wx.NORMAL, wx.NORMAL)) status_sizer.Add(self.status_label, flag=wx.ALIGN_LEFT) self.vectors_label = wx.StaticText(self, label='0 vectors downloaded', style=wx.ALIGN_LEFT) status_sizer.Add(self.vectors_label, flag=wx.ALIGN_LEFT) self.chunks_label = wx.StaticText(self, label='0 chunks decoded', style=wx.ALIGN_LEFT) status_sizer.Add(self.chunks_label, flag=wx.ALIGN_LEFT) self.efficiency_label = wx.StaticText(self, label=' ', style=wx.ALIGN_LEFT) status_sizer.Add(self.efficiency_label, flag=wx.ALIGN_LEFT) self.sizer.Add(status_sizer, flag=wx.ALL, border=4) cancel_button = wx.Button(self, id=wx.ID_CANCEL) self.sizer.Add(cancel_button, flag=wx.ALIGN_RIGHT) self.Bind(wx.EVT_BUTTON, self.on_cancel, cancel_button) self.Bind(wx.EVT_CLOSE, self.on_close, self) self.SetAutoLayout(True) self.SetSizer(self.sizer) self.sizer.Fit(self) self.Layout() self.log_queue = Queue.Queue(100) self.thread = DownloadThread(self.log_queue, db_filename, address) self.thread.daemon = True self.thread.start() Publisher().subscribe(self.update_status, 'status') Publisher().subscribe(self.update_vector, 'vector') Publisher().subscribe(self.update_chunk, 'chunk') Publisher().subscribe(self.log_message, 'message') Publisher().subscribe(self.log_error, 'error') self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_tick, self.timer) self.timer.Start(milliseconds=1000, oneShot=False)
def __init__(self, parent, IDindividu=None, dictFamillesRattachees={}): wx.Panel.__init__(self, parent, id=-1, name="DLG_Individu_pieces", style=wx.TAB_TRAVERSAL) self.parent = parent self.IDindividu = IDindividu self.dictFamillesRattachees = dictFamillesRattachees # Pièces à fournir self.staticbox_pieces_obligatoires = wx.StaticBox( self, -1, _(u"Pièces à fournir")) self.ctrl_pieces_obligatoires = CTRL_Pieces_obligatoires.CTRL( self, IDindividu=IDindividu, dictFamillesRattachees=dictFamillesRattachees, largeurColonne=140) couleur_fond = UTILS_Interface.GetValeur("couleur_tres_claire", wx.Colour(240, 251, 237)) self.ctrl_pieces_obligatoires.SetBackgroundColour(couleur_fond) self.ctrl_pieces_obligatoires.SetMinSize((150, 50)) # Pièces fournies self.staticbox_pieces = wx.StaticBox(self, -1, _(u"Pièces fournies")) self.ctrl_pieces = OL_Pieces.ListView( self, IDindividu=IDindividu, dictFamillesRattachees=self.dictFamillesRattachees, id=-1, name="OL_pieces", style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL) self.ctrl_pieces.SetMinSize((150, 50)) self.bouton_ajouter = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Ajouter.png"), wx.BITMAP_TYPE_ANY)) self.bouton_modifier = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Modifier.png"), wx.BITMAP_TYPE_ANY)) self.bouton_supprimer = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Supprimer.png"), wx.BITMAP_TYPE_ANY)) # Cotisations individuelles self.staticbox_cotisations = wx.StaticBox( self, -1, _(u"Cotisations familiales et individuelles")) codesColonnes = [ "IDcotisation", "date_debut", "date_fin", "beneficiaires", "nom", "numero", "date_creation_carte", "depot_nom", "activites", "observations" ] checkColonne = True triColonne = "date_debut" self.ctrl_cotisations = OL_Liste_cotisations.ListView( self, IDindividu=IDindividu, dictFamillesRattachees=self.dictFamillesRattachees, mode="individu", codesColonnes=codesColonnes, checkColonne=checkColonne, triColonne=triColonne, id=-1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL) self.bouton_ajouter_cotisation = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Ajouter.png"), wx.BITMAP_TYPE_ANY)) self.bouton_modifier_cotisation = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Modifier.png"), wx.BITMAP_TYPE_ANY)) self.bouton_supprimer_cotisation = wx.BitmapButton( self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Supprimer.png"), wx.BITMAP_TYPE_ANY)) # Binds self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter) self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier) self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer) self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter_Cotisation, self.bouton_ajouter_cotisation) self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier_Cotisation, self.bouton_modifier_cotisation) self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer_Cotisation, self.bouton_supprimer_cotisation) # Propriétés self.bouton_ajouter.SetToolTipString( _(u"Cliquez ici pour saisir une pièce")) self.bouton_modifier.SetToolTipString( _(u"Cliquez ici pour modifier la pièce sélectionnée")) self.bouton_supprimer.SetToolTipString( _(u"Cliquez ici pour supprimer la pièce sélectionnée")) self.bouton_ajouter_cotisation.SetToolTipString( _(u"Cliquez ici pour saisir une cotisation individuelle")) self.bouton_modifier_cotisation.SetToolTipString( _(u"Cliquez ici pour modifier la cotisation individuelle sélectionnée" )) self.bouton_supprimer_cotisation.SetToolTipString( _(u"Cliquez ici pour supprimer la cotisation individuelle sélectionnée" )) # --- Layout --- grid_sizer_base = wx.FlexGridSizer(rows=2, cols=1, vgap=0, hgap=0) grid_sizer_haut = wx.FlexGridSizer(rows=1, cols=2, vgap=10, hgap=10) # Pièces à fournir staticbox_pieces_obligatoires = wx.StaticBoxSizer( self.staticbox_pieces_obligatoires, wx.VERTICAL) grid_sizer_pieces_obligatoires = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=5) grid_sizer_pieces_obligatoires.Add(self.ctrl_pieces_obligatoires, 1, wx.EXPAND, 0) grid_sizer_pieces_obligatoires.AddGrowableCol(0) grid_sizer_pieces_obligatoires.AddGrowableRow(0) staticbox_pieces_obligatoires.Add(grid_sizer_pieces_obligatoires, 1, wx.EXPAND | wx.ALL, 5) grid_sizer_haut.Add(staticbox_pieces_obligatoires, 0, wx.EXPAND, 0) # Pièces à fournir staticbox_pieces = wx.StaticBoxSizer(self.staticbox_pieces, wx.VERTICAL) grid_sizer_pieces = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=5) grid_sizer_pieces.Add(self.ctrl_pieces, 1, wx.EXPAND, 0) grid_sizer_boutons = wx.FlexGridSizer(rows=3, cols=1, vgap=5, hgap=5) grid_sizer_boutons.Add(self.bouton_ajouter, 0, wx.ALL, 0) grid_sizer_boutons.Add(self.bouton_modifier, 0, wx.ALL, 0) grid_sizer_boutons.Add(self.bouton_supprimer, 0, wx.ALL, 0) grid_sizer_pieces.Add(grid_sizer_boutons, 1, wx.ALL, 0) grid_sizer_pieces.AddGrowableCol(0) grid_sizer_pieces.AddGrowableRow(0) staticbox_pieces.Add(grid_sizer_pieces, 1, wx.EXPAND | wx.ALL, 5) grid_sizer_haut.Add(staticbox_pieces, 1, wx.EXPAND, 0) grid_sizer_base.Add(grid_sizer_haut, 1, wx.EXPAND | wx.ALL, 5) grid_sizer_haut.AddGrowableCol(1) grid_sizer_haut.AddGrowableRow(0) # Cotisations staticbox_cotisations = wx.StaticBoxSizer(self.staticbox_cotisations, wx.VERTICAL) grid_sizer_cotisations = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=5) grid_sizer_cotisations.Add(self.ctrl_cotisations, 1, wx.EXPAND, 0) grid_sizer_boutons = wx.FlexGridSizer(rows=3, cols=1, vgap=5, hgap=5) grid_sizer_boutons.Add(self.bouton_ajouter_cotisation, 0, wx.ALL, 0) grid_sizer_boutons.Add(self.bouton_modifier_cotisation, 0, wx.ALL, 0) grid_sizer_boutons.Add(self.bouton_supprimer_cotisation, 0, wx.ALL, 0) grid_sizer_cotisations.Add(grid_sizer_boutons, 1, wx.ALL, 0) grid_sizer_cotisations.AddGrowableCol(0) grid_sizer_cotisations.AddGrowableRow(0) staticbox_cotisations.Add(grid_sizer_cotisations, 1, wx.EXPAND | wx.ALL, 5) grid_sizer_base.Add(staticbox_cotisations, 1, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 5) self.SetSizer(grid_sizer_base) grid_sizer_base.Fit(self) grid_sizer_base.AddGrowableCol(0) grid_sizer_base.AddGrowableRow(0) self.Layout()
def __do_layout(self): grid_sizer_base = wx.FlexGridSizer(rows=1, cols=2, vgap=10, hgap=10) box_donnees = wx.StaticBoxSizer(self.box_donnees_staticbox, wx.VERTICAL) grid_sizer_gauche = wx.FlexGridSizer(rows=3, cols=1, vgap=10, hgap=10) # Nom box_nom = wx.StaticBoxSizer(self.box_nom_staticbox, wx.VERTICAL) grid_sizer_nom = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=5) grid_sizer_nom.Add(self.label_nom, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_nom.Add(self.ctrl_nom, 0, wx.EXPAND, 0) grid_sizer_nom.AddGrowableCol(1) box_nom.Add(grid_sizer_nom, 1, wx.ALL | wx.EXPAND, 10) grid_sizer_gauche.Add(box_nom, 1, wx.EXPAND, 0) # mdp box_mdp = wx.StaticBoxSizer(self.box_mdp_staticbox, wx.VERTICAL) grid_sizer_mdp = wx.FlexGridSizer(rows=3, cols=2, vgap=5, hgap=5) grid_sizer_mdp.Add(self.label_cryptage, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_mdp.Add(self.check_cryptage, 0, wx.EXPAND, 0) grid_sizer_mdp.Add(self.label_mdp, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_mdp.Add(self.ctrl_mdp, 0, wx.EXPAND, 0) grid_sizer_mdp.Add(self.label_confirmation, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_mdp.Add(self.ctrl_confirmation, 0, wx.EXPAND, 0) grid_sizer_mdp.AddGrowableCol(1) box_mdp.Add(grid_sizer_mdp, 1, wx.ALL | wx.EXPAND, 10) grid_sizer_gauche.Add(box_mdp, 1, wx.EXPAND, 0) # Destination box_destination = wx.StaticBoxSizer(self.box_destination_staticbox, wx.VERTICAL) grid_sizer_destination = wx.FlexGridSizer(rows=2, cols=1, vgap=5, hgap=5) # Email grid_sizer_email = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=5) grid_sizer_email.Add(self.check_email, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_email.Add(self.ctrl_email, 0, wx.EXPAND, 0) grid_sizer_email.AddGrowableCol(1) grid_sizer_destination.Add(grid_sizer_email, 1, wx.EXPAND, 0) # Répertoire grid_sizer_repertoire = wx.FlexGridSizer(rows=1, cols=3, vgap=5, hgap=5) grid_sizer_repertoire.Add(self.check_repertoire, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_repertoire.Add(self.ctrl_repertoire, 0, wx.EXPAND, 0) grid_sizer_repertoire.Add(self.bouton_repertoire, 0, 0, 0) grid_sizer_repertoire.AddGrowableCol(1) grid_sizer_destination.Add(grid_sizer_repertoire, 1, wx.EXPAND, 0) box_destination.Add(grid_sizer_destination, 1, wx.ALL | wx.EXPAND, 10) grid_sizer_gauche.Add(box_destination, 1, wx.EXPAND, 0) grid_sizer_base.Add(grid_sizer_gauche, 1, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 10) box_donnees.Add(self.ctrl_donnees, 1, wx.LEFT | wx.RIGHT | wx.TOP | wx.EXPAND, 10) # Checkbox filtres grid_sizer_filtres = wx.FlexGridSizer(rows=1, cols=2, vgap=10, hgap=10) grid_sizer_filtres.Add(self.check_locaux, 0, 0, 0) grid_sizer_filtres.Add(self.check_reseau, 0, 0, 0) box_donnees.Add(grid_sizer_filtres, 0, wx.ALL, 10) grid_sizer_base.Add(box_donnees, 1, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.RIGHT, 10) self.SetSizer(grid_sizer_base) grid_sizer_base.Fit(self) grid_sizer_base.AddGrowableRow(0) grid_sizer_base.AddGrowableCol(1) self.Layout()
style=wx.ALIGN_CENTER, size=(300, 25)) testdata_neg_text = wx.StaticText(bkg, label="负样本", style=wx.ALIGN_CENTER, size=(300, 25)) testdata_pos_acc = wx.StaticText(bkg, label="测试准确率:0.5", style=wx.ALIGN_CENTER, size=(300, 25)) testdata_neg_acc = wx.StaticText(bkg, label="测试准确率:0.5", style=wx.ALIGN_CENTER, size=(300, 25)) test_pos_picbox = wx.FlexGridSizer(cols=9, vgap=2, hgap=2) for b_i in img_boxs_instances[:45]: test_pos_picbox.Add(b_i[0], 0, wx.LEFT, border=1) # for box in testimg_pos_boxs: # test_pos_picbox.Add(box, 0, wx.LEFT, border=1) test_neg_picbox = wx.FlexGridSizer(cols=9, vgap=2, hgap=2) for b_i in img_boxs_instances[45:]: test_neg_picbox.Add(b_i[0], 0, wx.LEFT, border=1) # for box in testimg_neg_boxs: # test_neg_picbox.Add(box, 0, wx.LEFT, border=1) train_data_text = wx.StaticText(bkg, label="训练集:10", style=wx.ALIGN_CENTER, size=(300, 25)) traindata_number = 10
def __init__(self, parent, log): wx.Panel.__init__(self, parent, -1) self.log = log btn = wx.Button(self, -1, "Select Font") self.Bind(wx.EVT_BUTTON, self.OnSelectFont, btn) self.sampleText = stattext.GenStaticText(self, -1, "Sample Text") self.sampleText.SetBackgroundColour(wx.WHITE) self.curFont = self.sampleText.GetFont() self.curClr = wx.BLACK fgs = wx.FlexGridSizer(cols=2, vgap=5, hgap=5) fgs.AddGrowableCol(1) fgs.AddGrowableRow(0) fgs.Add(btn) fgs.Add(self.sampleText, 0, wx.ADJUST_MINSIZE | wx.GROW) fgs.Add((15, 15)) fgs.Add((15, 15)) # an empty row fgs.Add(wx.StaticText(self, -1, "PointSize:")) self.ps = wx.StaticText(self, -1, "") font = self.ps.GetFont() font.SetWeight(wx.BOLD) self.ps.SetFont(font) fgs.Add(self.ps, 0, wx.ADJUST_MINSIZE) fgs.Add(wx.StaticText(self, -1, "Family:")) self.family = wx.StaticText(self, -1, "") self.family.SetFont(font) fgs.Add(self.family, 0, wx.ADJUST_MINSIZE) fgs.Add(wx.StaticText(self, -1, "Style:")) self.style = wx.StaticText(self, -1, "") self.style.SetFont(font) fgs.Add(self.style, 0, wx.ADJUST_MINSIZE) fgs.Add(wx.StaticText(self, -1, "Weight:")) self.weight = wx.StaticText(self, -1, "") self.weight.SetFont(font) fgs.Add(self.weight, 0, wx.ADJUST_MINSIZE) fgs.Add(wx.StaticText(self, -1, "Face:")) self.face = wx.StaticText(self, -1, "") self.face.SetFont(font) fgs.Add(self.face, 0, wx.ADJUST_MINSIZE) fgs.Add((15, 15)) fgs.Add((15, 15)) # an empty row fgs.Add(wx.StaticText(self, -1, "wx.NativeFontInfo:")) self.nfi = wx.StaticText(self, -1, "") self.nfi.SetFont(font) fgs.Add(self.nfi, 0, wx.ADJUST_MINSIZE) # give it some border space sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(fgs, 0, wx.GROW | wx.ADJUST_MINSIZE | wx.ALL, 25) self.SetSizer(sizer) self.UpdateUI()
def __do_layout(self): grid_sizer_base = wx.FlexGridSizer(rows=2, cols=1, vgap=0, hgap=0) grid_sizer_contenu = wx.FlexGridSizer(rows=1, cols=2, vgap=10, hgap=10) box_periode = wx.StaticBoxSizer(self.box_periode_staticbox, wx.VERTICAL) grid_sizer_periode = wx.FlexGridSizer(rows=9, cols=1, vgap=10, hgap=10) sizer_vacances = wx.BoxSizer(wx.HORIZONTAL) sizer_annee = wx.BoxSizer(wx.HORIZONTAL) sizer_mois = wx.BoxSizer(wx.HORIZONTAL) sizer_jusquau = wx.BoxSizer(wx.HORIZONTAL) sizer_apartirde = wx.BoxSizer(wx.HORIZONTAL) sizer_dates = wx.BoxSizer(wx.HORIZONTAL) grid_sizer_droit = wx.FlexGridSizer(rows=2, cols=1, vgap=10, hgap=10) box_options = wx.StaticBoxSizer(self.box_options_staticbox, wx.VERTICAL) sizer_regroupement = wx.BoxSizer(wx.HORIZONTAL) # Type box_type = wx.StaticBoxSizer(self.box_type_staticbox, wx.VERTICAL) box_type.Add(self.radio_type_prestations, 0, wx.ALL | wx.EXPAND, 10) box_type.Add(self.radio_type_factures, 0, wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, 10) grid_sizer_droit.Add(box_type, 1, wx.EXPAND, 0) # Options grid_sizer_options = wx.FlexGridSizer(rows=5, cols=1, vgap=10, hgap=10) grid_sizer_options.Add(self.check_impayes, 0, 0, 0) grid_sizer_options.Add(self.check_conso, 0, 0, 0) sizer_regroupement.Add(self.check_regroupement, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_regroupement.Add(self.ctrl_regroupement_date, 0, wx.LEFT, 5) grid_sizer_options.Add(sizer_regroupement, 1, wx.EXPAND, 0) grid_sizer_options.AddGrowableCol(0) box_options.Add(grid_sizer_options, 1, wx.ALL | wx.EXPAND, 10) grid_sizer_droit.Add(box_options, 1, wx.EXPAND, 0) grid_sizer_droit.AddGrowableRow(1) grid_sizer_droit.AddGrowableCol(0) grid_sizer_contenu.Add(grid_sizer_droit, 1, wx.EXPAND, 0) grid_sizer_periode.Add(self.radio_tout, 1, wx.EXPAND, 0) sizer_dates.Add(self.radio_dates, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_dates.Add(self.ctrl_date_debut, 0, wx.LEFT | wx.RIGHT, 5) sizer_dates.Add(self.label_au, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_dates.Add(self.ctrl_date_fin, 0, wx.LEFT | wx.RIGHT, 5) grid_sizer_periode.Add(sizer_dates, 1, wx.EXPAND, 0) sizer_apartirde.Add(self.radio_apartirde, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_apartirde.Add(self.ctrl_date_apartirde, 0, wx.LEFT, 5) grid_sizer_periode.Add(sizer_apartirde, 1, wx.EXPAND, 0) sizer_jusquau.Add(self.radio_jusquau, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_jusquau.Add(self.ctrl_date_jusquau, 0, wx.LEFT, 5) grid_sizer_periode.Add(sizer_jusquau, 1, wx.EXPAND, 0) sizer_mois.Add(self.radio_mois, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_mois.Add(self.ctrl_mois, 0, wx.LEFT | wx.RIGHT, 5) sizer_mois.Add(self.ctrl_mois_annee, 0, 0, 0) grid_sizer_periode.Add(sizer_mois, 1, wx.EXPAND, 0) sizer_annee.Add(self.radio_annee, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_annee.Add(self.ctrl_annee, 0, wx.LEFT, 5) grid_sizer_periode.Add(sizer_annee, 1, wx.EXPAND, 0) sizer_vacances.Add(self.radio_vacances, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_vacances.Add(self.ctrl_vacances, 0, wx.LEFT | wx.RIGHT, 5) sizer_vacances.Add(self.ctrl_vacances_annee, 0, 0, 0) grid_sizer_periode.Add(sizer_vacances, 1, wx.EXPAND, 0) grid_sizer_periode.AddGrowableCol(0) box_periode.Add(grid_sizer_periode, 1, wx.ALL | wx.EXPAND, 10) grid_sizer_contenu.Add(box_periode, 1, wx.EXPAND, 0) grid_sizer_contenu.AddGrowableRow(0) grid_sizer_contenu.AddGrowableCol(0) grid_sizer_contenu.AddGrowableCol(1) grid_sizer_base.Add(grid_sizer_contenu, 1, wx.ALL | wx.EXPAND, 10) # Boutons grid_sizer_boutons = wx.FlexGridSizer(rows=1, cols=4, vgap=10, hgap=10) grid_sizer_boutons.Add(self.bouton_aide, 0, 0, 0) grid_sizer_boutons.Add((20, 20), 0, wx.EXPAND, 0) grid_sizer_boutons.Add(self.bouton_ok, 0, 0, 0) grid_sizer_boutons.Add(self.bouton_annuler, 0, 0, 0) grid_sizer_boutons.AddGrowableCol(1) grid_sizer_base.Add(grid_sizer_boutons, 1, wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, 10) self.SetSizer(grid_sizer_base) grid_sizer_base.Fit(self) self.Layout() self.CenterOnScreen()
def __init__(self, parent, rows=2, cols=2, vgap=0, hgap=0, border=False): Panel.__init__(self, parent, border) self.grid = wx.FlexGridSizer(rows, cols, vgap, hgap) self.SetSizer(self.grid)
def __init__(self, parent, stage): self.__savedPositionFile__ = os.path.dirname( __file__) + "/.savedPositions.txt" self.stage = stage self.savedPositions = [] self.__parsedSavedPositions__() FrameBase.__init__(self, parent, id=wx.ID_ANY, title=u"NewFocus 8081 Stage Aligning App", pos=wx.DefaultPosition, size=wx.Size(600, 750), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) bSizerFrameMain = wx.BoxSizer(wx.VERTICAL) self.panelMain = ScrolledPanelBase(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizerPanelMain = wx.BoxSizer(wx.VERTICAL) self.staticTextTitle = wx.StaticText(self.panelMain, wx.ID_ANY, u"NewFocus 8081 Stage Aligning", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextTitle.Wrap(-1) self.staticTextTitle.SetFont( wx.Font(14, 70, 90, 92, False, wx.EmptyString)) bSizerPanelMain.Add(self.staticTextTitle, 0, wx.ALIGN_CENTER | wx.ALL, 5) sbSizerDispaly = wx.StaticBoxSizer( wx.StaticBox(self.panelMain, wx.ID_ANY, u"Displays"), wx.HORIZONTAL) fgSizerDisplayDisplacements = wx.FlexGridSizer(5, 3, 0, 0) fgSizerDisplayDisplacements.SetFlexibleDirection(wx.BOTH) fgSizerDisplayDisplacements.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED) self.staticTextDisplayXtransTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Xtrans:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayXtransTitle.Wrap(-1) self.staticTextDisplayXtransTitle.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayXtransTitle, 0, wx.ALL, 5) self.staticTextDisplayXtransValue = wx.StaticText( self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayXtransValue.Wrap(-1) self.staticTextDisplayXtransValue.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayXtransValue, 0, wx.ALL, 5) self.staticTextDisplayXtransUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"mm", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayXtransUnits.Wrap(-1) self.staticTextDisplayXtransUnits.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayXtransUnits, 0, wx.ALL, 5) self.staticTextDisplayYtransTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Ytrans:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayYtransTitle.Wrap(-1) self.staticTextDisplayYtransTitle.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayYtransTitle, 0, wx.ALL, 5) self.staticTextDisplayYtransValue = wx.StaticText( self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayYtransValue.Wrap(-1) self.staticTextDisplayYtransValue.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayYtransValue, 0, wx.ALL, 5) self.staticTextDisplayYtransUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"mm", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayYtransUnits.Wrap(-1) self.staticTextDisplayYtransUnits.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayYtransUnits, 0, wx.ALL, 5) self.staticTextDisplayZtransTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Ztrans:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayZtransTitle.Wrap(-1) self.staticTextDisplayZtransTitle.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayZtransTitle, 0, wx.ALL, 5) self.staticTextDisplayZtransValue = wx.StaticText( self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayZtransValue.Wrap(-1) self.staticTextDisplayZtransValue.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayZtransValue, 0, wx.ALL, 5) self.staticTextDisplayZtransUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"mm", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayZtransUnits.Wrap(-1) self.staticTextDisplayZtransUnits.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayZtransUnits, 0, wx.ALL, 5) self.staticTextDisplayXrotTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Xrot:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayXrotTitle.Wrap(-1) self.staticTextDisplayXrotTitle.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayXrotTitle, 0, wx.ALL, 5) self.staticTextDisplayXrotValue = wx.StaticText( self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayXrotValue.Wrap(-1) self.staticTextDisplayXrotValue.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayXrotValue, 0, wx.ALL, 5) self.staticTextDisplayXrotUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"rad", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayXrotUnits.Wrap(-1) self.staticTextDisplayXrotUnits.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayXrotUnits, 0, wx.ALL, 5) self.staticTextDisplayZrotTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Zrot:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayZrotTitle.Wrap(-1) self.staticTextDisplayZrotTitle.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayZrotTitle, 0, wx.ALL, 5) self.staticTextDisplayZrotValue = wx.StaticText( self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayZrotValue.Wrap(-1) self.staticTextDisplayZrotValue.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayZrotValue, 0, wx.ALL, 5) self.staticTextDisplayZrotUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"rad", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayZrotUnits.Wrap(-1) self.staticTextDisplayZrotUnits.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayDisplacements.Add(self.staticTextDisplayZrotUnits, 0, wx.ALL, 5) sbSizerDispaly.Add(fgSizerDisplayDisplacements, 1, wx.EXPAND, 5) self.staticlineDisplaySep = wx.StaticLine(self.panelMain, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL) sbSizerDispaly.Add(self.staticlineDisplaySep, 0, wx.EXPAND | wx.ALL, 5) fgSizerDisplayMotorSteps = wx.FlexGridSizer(5, 2, 0, 0) fgSizerDisplayMotorSteps.SetFlexibleDirection(wx.BOTH) fgSizerDisplayMotorSteps.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED) self.staticTextDisplayPx1Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"px1:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPx1Title.Wrap(-1) self.staticTextDisplayPx1Title.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPx1Title, 0, wx.ALL, 5) self.staticTextDisplayPx1Value = wx.StaticText(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPx1Value.Wrap(-1) self.staticTextDisplayPx1Value.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPx1Value, 0, wx.ALL, 5) self.staticTextDisplayPx2Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"px2:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPx2Title.Wrap(-1) self.staticTextDisplayPx2Title.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPx2Title, 0, wx.ALL, 5) self.staticTextDisplayPx2Value = wx.StaticText(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPx2Value.Wrap(-1) self.staticTextDisplayPx2Value.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPx2Value, 0, wx.ALL, 5) self.staticTextDisplayPyTitle = wx.StaticText(self.panelMain, wx.ID_ANY, u"py:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPyTitle.Wrap(-1) self.staticTextDisplayPyTitle.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPyTitle, 0, wx.ALL, 5) self.staticTextDisplayPyValue = wx.StaticText(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPyValue.Wrap(-1) self.staticTextDisplayPyValue.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPyValue, 0, wx.ALL, 5) self.staticTextDisplayPz1Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"pz1:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPz1Title.Wrap(-1) self.staticTextDisplayPz1Title.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPz1Title, 0, wx.ALL, 5) self.staticTextDisplayPz1Value = wx.StaticText(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPz1Value.Wrap(-1) self.staticTextDisplayPz1Value.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPz1Value, 0, wx.ALL, 5) self.staticTextDisplayPz2Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"pz2:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPz2Title.Wrap(-1) self.staticTextDisplayPz2Title.SetFont( wx.Font(12, 70, 90, 90, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPz2Title, 0, wx.ALL, 5) self.staticTextDisplayPz2Value = wx.StaticText(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextDisplayPz2Value.Wrap(-1) self.staticTextDisplayPz2Value.SetFont( wx.Font(12, 70, 90, 92, False, wx.EmptyString)) fgSizerDisplayMotorSteps.Add(self.staticTextDisplayPz2Value, 0, wx.ALL, 5) sbSizerDispaly.Add(fgSizerDisplayMotorSteps, 1, wx.ALL | wx.EXPAND, 5) bSizerPanelMain.Add(sbSizerDispaly, 1, wx.ALL | wx.EXPAND, 5) radioBoxChangeByChoices = [u"SI units", u"motor steps"] self.radioBoxChangeBy = wx.RadioBox(self.panelMain, wx.ID_ANY, u"Change By", wx.DefaultPosition, wx.DefaultSize, radioBoxChangeByChoices, 1, wx.RA_SPECIFY_ROWS) self.radioBoxChangeBy.SetSelection(0) bSizerPanelMain.Add(self.radioBoxChangeBy, 0, wx.ALL, 5) sbSizerChange = wx.StaticBoxSizer( wx.StaticBox(self.panelMain, wx.ID_ANY, u"Change Values"), wx.HORIZONTAL) fgSizerChangeDisplacements = wx.FlexGridSizer(5, 3, 0, 0) fgSizerChangeDisplacements.SetFlexibleDirection(wx.BOTH) fgSizerChangeDisplacements.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED) self.staticTextChangeXtransTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Xtrans:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeXtransTitle.Wrap(-1) self.staticTextChangeXtransTitle.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeXtransTitle, 0, wx.ALL, 5) self.textCtrlChangeXtrans = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangeXtrans.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.textCtrlChangeXtrans, 0, wx.ALL, 5) self.staticTextChangeXtransUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"mm", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeXtransUnits.Wrap(-1) self.staticTextChangeXtransUnits.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeXtransUnits, 0, wx.ALL, 5) self.staticTextChangeYtransTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Ytrans:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeYtransTitle.Wrap(-1) self.staticTextChangeYtransTitle.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeYtransTitle, 0, wx.ALL, 5) self.textCtrlChangeYtrans = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangeYtrans.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.textCtrlChangeYtrans, 0, wx.ALL, 5) self.staticTextChangeYtransUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"mm", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeYtransUnits.Wrap(-1) self.staticTextChangeYtransUnits.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeYtransUnits, 0, wx.ALL, 5) self.staticTextChangeZtransTitle = wx.StaticText( self.panelMain, wx.ID_ANY, u"Ztrans:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeZtransTitle.Wrap(-1) self.staticTextChangeZtransTitle.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeZtransTitle, 0, wx.ALL, 5) self.textCtrlChangeZtrans = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangeZtrans.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.textCtrlChangeZtrans, 0, wx.ALL, 5) self.staticTextChangeZtransUnits = wx.StaticText( self.panelMain, wx.ID_ANY, u"mm", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeZtransUnits.Wrap(-1) self.staticTextChangeZtransUnits.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeZtransUnits, 0, wx.ALL, 5) self.staticTextChangeXrotTitle = wx.StaticText(self.panelMain, wx.ID_ANY, u"Xrot:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeXrotTitle.Wrap(-1) self.staticTextChangeXrotTitle.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeXrotTitle, 0, wx.ALL, 5) self.textCtrlChangeXrot = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangeXrot.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.textCtrlChangeXrot, 0, wx.ALL, 5) self.staticTextChangeXrotUnits = wx.StaticText(self.panelMain, wx.ID_ANY, u"rad", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeXrotUnits.Wrap(-1) self.staticTextChangeXrotUnits.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeXrotUnits, 0, wx.ALL, 5) self.staticTextChangeZrotTitle = wx.StaticText(self.panelMain, wx.ID_ANY, u"Zrot:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeZrotTitle.Wrap(-1) self.staticTextChangeZrotTitle.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeZrotTitle, 0, wx.ALL, 5) self.textCtrlChangeZrot = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0.000000", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangeZrot.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.textCtrlChangeZrot, 0, wx.ALL, 5) self.staticTextChangeZrotUnits = wx.StaticText(self.panelMain, wx.ID_ANY, u"rad", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangeZrotUnits.Wrap(-1) self.staticTextChangeZrotUnits.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeDisplacements.Add(self.staticTextChangeZrotUnits, 0, wx.ALL, 5) sbSizerChange.Add(fgSizerChangeDisplacements, 1, wx.EXPAND, 5) self.staticlineChangeValuesSep = wx.StaticLine(self.panelMain, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL) sbSizerChange.Add(self.staticlineChangeValuesSep, 0, wx.EXPAND | wx.ALL, 5) fgSizerChangeMotorSteps = wx.FlexGridSizer(5, 2, 0, 0) fgSizerChangeMotorSteps.SetFlexibleDirection(wx.BOTH) fgSizerChangeMotorSteps.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED) self.staticTextChangePx1Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"px1:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangePx1Title.Wrap(-1) self.staticTextChangePx1Title.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeMotorSteps.Add(self.staticTextChangePx1Title, 0, wx.ALL, 5) self.textCtrlChangePx1 = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangePx1.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) self.textCtrlChangePx1.Enable(False) fgSizerChangeMotorSteps.Add(self.textCtrlChangePx1, 0, wx.ALL, 5) self.staticTextChangePx2Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"px2:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangePx2Title.Wrap(-1) self.staticTextChangePx2Title.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeMotorSteps.Add(self.staticTextChangePx2Title, 0, wx.ALL, 5) self.textCtrlChangePx2 = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangePx2.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) self.textCtrlChangePx2.Enable(False) fgSizerChangeMotorSteps.Add(self.textCtrlChangePx2, 0, wx.ALL, 5) self.staticTextChangePyTitle = wx.StaticText(self.panelMain, wx.ID_ANY, u"py:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangePyTitle.Wrap(-1) self.staticTextChangePyTitle.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeMotorSteps.Add(self.staticTextChangePyTitle, 0, wx.ALL, 5) self.textCtrlChangePy = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangePy.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) self.textCtrlChangePy.Enable(False) fgSizerChangeMotorSteps.Add(self.textCtrlChangePy, 0, wx.ALL, 5) self.staticTextChangePz1Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"pz1:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangePz1Title.Wrap(-1) self.staticTextChangePz1Title.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeMotorSteps.Add(self.staticTextChangePz1Title, 0, wx.ALL, 5) self.textCtrlChangePz1 = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangePz1.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) self.textCtrlChangePz1.Enable(False) fgSizerChangeMotorSteps.Add(self.textCtrlChangePz1, 0, wx.ALL, 5) self.staticTextChangePz2Title = wx.StaticText(self.panelMain, wx.ID_ANY, u"pz2:", wx.DefaultPosition, wx.DefaultSize, 0) self.staticTextChangePz2Title.Wrap(-1) self.staticTextChangePz2Title.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) fgSizerChangeMotorSteps.Add(self.staticTextChangePz2Title, 0, wx.ALL, 5) self.textCtrlChangePz2 = wx.TextCtrl(self.panelMain, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0) self.textCtrlChangePz2.SetFont( wx.Font(10, 70, 90, 92, False, wx.EmptyString)) self.textCtrlChangePz2.Enable(False) fgSizerChangeMotorSteps.Add(self.textCtrlChangePz2, 0, wx.ALL, 5) sbSizerChange.Add(fgSizerChangeMotorSteps, 1, wx.EXPAND, 5) bSizerPanelMain.Add(sbSizerChange, 0, wx.ALL | wx.EXPAND, 5) gSizerControls = wx.GridSizer(3, 2, 0, 0) self.buttonMove = wx.Button(self.panelMain, wx.ID_ANY, u"MOVE", wx.DefaultPosition, wx.DefaultSize, 0) self.buttonMove.SetFont(wx.Font(10, 70, 90, 90, False, wx.EmptyString)) gSizerControls.Add(self.buttonMove, 0, wx.ALL | wx.EXPAND, 5) self.buttonStop = wx.Button(self.panelMain, wx.ID_ANY, u"STOP", wx.DefaultPosition, wx.DefaultSize, 0) self.buttonStop.SetFont(wx.Font(10, 70, 90, 90, False, wx.EmptyString)) gSizerControls.Add(self.buttonStop, 0, wx.ALL | wx.EXPAND, 5) self.buttonSavePosition = wx.Button(self.panelMain, wx.ID_ANY, u"Save Position", wx.DefaultPosition, wx.DefaultSize, 0) self.buttonSavePosition.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) gSizerControls.Add(self.buttonSavePosition, 0, wx.ALL | wx.EXPAND, 5) self.buttonSelectPositions = wx.Button(self.panelMain, wx.ID_ANY, u"Select Positions (0)", wx.DefaultPosition, wx.DefaultSize, 0) self.buttonSelectPositions.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) gSizerControls.Add(self.buttonSelectPositions, 0, wx.ALL | wx.EXPAND, 5) self.buttonZeroAllChanges = wx.Button(self.panelMain, wx.ID_ANY, u"Zero All Changes", wx.DefaultPosition, wx.DefaultSize, 0) self.buttonZeroAllChanges.SetFont( wx.Font(10, 70, 90, 90, False, wx.EmptyString)) gSizerControls.Add(self.buttonZeroAllChanges, 0, wx.ALL | wx.EXPAND, 5) """ self.buttonSetZeroMotorSteps = wx.Button( self.panelMain, wx.ID_ANY, u"Set ZERO Motor Steps", wx.DefaultPosition, wx.DefaultSize, 0 ) self.buttonSetZeroMotorSteps.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) self.buttonSetZeroMotorSteps.SetToolTipString( u"Sets current positions as ZERO motor steps" ) gSizerControls.Add( self.buttonSetZeroMotorSteps, 0, wx.ALL|wx.EXPAND, 5 ) """ bSizerPanelMain.Add(gSizerControls, 0, wx.EXPAND, 5) self.panelMain.SetSizer(bSizerPanelMain) self.panelMain.Layout() self.panelMain.SetupScrolling() bSizerPanelMain.Fit(self.panelMain) bSizerFrameMain.Add(self.panelMain, 1, wx.EXPAND | wx.ALL, 0) self.SetSizer(bSizerFrameMain) self.Layout() self.Centre(wx.BOTH) # Connect Events self.Bind(wx.EVT_CLOSE, self.onClose) self.radioBoxChangeBy.Bind(wx.EVT_RADIOBOX, self.onSelectChangeBy) self.textCtrlChangeXtrans.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangeYtrans.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangeZtrans.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangeXrot.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangeZrot.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangePx1.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangePx2.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangePy.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangePz1.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.textCtrlChangePz2.Bind(wx.EVT_TEXT_ENTER, self.onChangePositionValuesEnter) self.buttonMove.Bind(wx.EVT_BUTTON, self.onMove) self.buttonStop.Bind(wx.EVT_BUTTON, self.onStop) self.buttonSavePosition.Bind(wx.EVT_BUTTON, self.onSavePosition) self.buttonSelectPositions.Bind(wx.EVT_BUTTON, self.onSelectionPositions) self.buttonZeroAllChanges.Bind(wx.EVT_BUTTON, self.onZeroAllChanges)
def _doLayout(self): dialogSizer = wx.BoxSizer(wx.VERTICAL) dialogSizer.Add(self.settsManager, proportion=0, flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=5) # connectin settings settingsSizer = wx.StaticBoxSizer(self.settingsBox, wx.VERTICAL) serverSizer = wx.FlexGridSizer(cols=3, vgap=5, hgap=5) serverSizer.Add(self.serverText, flag=wx.ALIGN_CENTER_VERTICAL) serverSizer.AddGrowableCol(1) serverSizer.Add(self.server, flag=wx.EXPAND | wx.ALL) serverSizer.Add(self.btn_connect) settingsSizer.Add(serverSizer, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=5) settingsSizer.Add(self.adv_conn, flag=wx.ALL | wx.EXPAND, border=5) dialogSizer.Add(settingsSizer, proportion=0, flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=5) # layer name, parsed capabilities reqDataSizer = wx.BoxSizer(wx.VERTICAL) layerNameSizer = wx.StaticBoxSizer(self.layerNameBox, wx.HORIZONTAL) layerNameSizer.Add(self.layerNameText, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5) layerNameSizer.Add(self.layerName, flag=wx.EXPAND, proportion=1) reqDataSizer.Add(layerNameSizer, flag=wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND, border=5) self.ch_ws_sizer = wx.BoxSizer(wx.VERTICAL) reqDataSizer.Add(self.ch_ws_sizer, proportion=0, flag=wx.TOP | wx.EXPAND, border=5) for ws in six.iterkeys(self.ws_panels): reqDataSizer.Add(self.ws_panels[ws]['panel'], proportion=1, flag=wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND, border=5) self.ws_panels[ws]['panel'].Hide() dialogSizer.Add(self.reqDataPanel, proportion=1, flag=wx.EXPAND) self.reqDataPanel.SetSizer(reqDataSizer) self.reqDataPanel.Hide() # buttons self.btnsizer = wx.BoxSizer(orient=wx.HORIZONTAL) self.btnsizer.Add(self.btn_close, proportion=0, flag=wx.ALL | wx.ALIGN_CENTER, border=10) dialogSizer.Add(self.btnsizer, proportion=0, flag=wx.ALIGN_CENTER) # expand wxWidget wx.StatusBar statusbarSizer = wx.BoxSizer(wx.HORIZONTAL) statusbarSizer.Add(self.statusbar, proportion=1, flag=wx.EXPAND) dialogSizer.Add(statusbarSizer, proportion=0, flag=wx.EXPAND) self.SetSizer(dialogSizer) self.Layout() self.SetMinSize((550, -1)) self.SetMaxSize((-1, self.GetBestSize()[1])) self.Fit()
def __init__(self, parent): wx.Frame.__init__( self, parent, id=wx.ID_ANY, title=u"Deposito", pos=wx.DefaultPosition, size=wx.Size(385, 150), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL, ) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.VERTICAL) fgSizer1 = wx.FlexGridSizer(2, 2, 5, 5) fgSizer1.AddGrowableCol(1) fgSizer1.SetFlexibleDirection(wx.BOTH) fgSizer1.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.txtCode = wx.StaticText(self, wx.ID_ANY, u"Codigo:", wx.Point(-1, -1), wx.Size(80, 15), wx.ALIGN_LEFT) self.txtCode.Wrap(-1) fgSizer1.Add(self.txtCode, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.code = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(100, 20), wx.TE_RIGHT, ) self.code.SetMaxLength(0) self.code.Enable(False) fgSizer1.Add(self.code, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.txtName = wx.StaticText( self, wx.ID_ANY, u"Descripcion:", wx.DefaultPosition, wx.Size(80, 15), wx.ALIGN_LEFT, ) self.txtName.Wrap(-1) fgSizer1.Add(self.txtName, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.name = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(180, 20), wx.TE_LEFT, ) self.name.SetMaxLength(0) fgSizer1.Add(self.name, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) bSizer1.Add(fgSizer1, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) fgSizer2 = wx.FlexGridSizer(1, 4, 0, 0) fgSizer2.SetFlexibleDirection(wx.BOTH) fgSizer2.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.btnOk = wx.Button(self, wx.ID_ANY, u"Aceptar", wx.DefaultPosition, wx.Size(80, 25), wx.NO_BORDER) self.btnOk.Enable(False) fgSizer2.Add(self.btnOk, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.btnModify = wx.Button( self, wx.ID_ANY, u"Modificar", wx.DefaultPosition, wx.Size(80, 25), wx.NO_BORDER, ) self.btnModify.Enable(False) fgSizer2.Add(self.btnModify, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.btnCancel = wx.Button( self, wx.ID_ANY, u"Cancelar", wx.DefaultPosition, wx.Size(80, 25), wx.NO_BORDER, ) self.btnCancel.SetDefault() fgSizer2.Add(self.btnCancel, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.btnExit = wx.Button(self, wx.ID_ANY, u"Salir", wx.DefaultPosition, wx.Size(80, 25), wx.NO_BORDER) fgSizer2.Add(self.btnExit, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) bSizer1.Add(fgSizer2, 0, wx.ALL, 5) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH)
def __init__(self): wx.Frame.__init__(self, None, -1, 'VLM2UDP', size=(455, 310), style = wx.CAPTION | wx.SYSTEM_MENU | wx.MINIMIZE_BOX | wx.CLOSE_BOX) panel = wx.Panel(self, -1) # Choix de VLM_URL VlmUrlList = [VLM_URL_01, VLM_URL_02] self.VlmUrlLabel = wx.StaticText(panel, -1, "VLM URL:", size = (100, -1)) self.VlmUrlChoice = wx.ComboBox(panel, -1, VlmUrlList[0], size = (200, -1), choices = VlmUrlList, style = wx.CB_DROPDOWN | wx.CB_READONLY) self.Bind(wx.EVT_COMBOBOX, self.OnVlmUrlChoice, self.VlmUrlChoice) # Affichage du mail self.MailLabel = wx.StaticText(panel, -1, "Mail:", size = (100, -1)) self.MailText = wx.TextCtrl(panel, -1, VLM_EMAIL, size = (200, -1), style = wx.TE_PROCESS_ENTER) self.MailText.SetInsertionPoint(0) self.MailText.Bind(wx.EVT_TEXT_ENTER, self.EvtMailTextEnter) self.MailText.Bind(wx.EVT_TEXT, self.EvtMailText) # Affichage du password self.PwdLabel = wx.StaticText(panel, -1, "Password:"******"Boats:", size = (100, -1)) self.BoatsChoice = wx.ComboBox(panel, -1, self.BoatsList[0], size = (200, -1), choices = self.BoatsList, style = wx.CB_DROPDOWN | wx.CB_READONLY) self.Bind(wx.EVT_COMBOBOX, self.OnBoatsChoice, self.BoatsChoice) # Les buttons de commande self.ButtonGPS = wx.Button(panel, -1, "Start GPS", size = (100, -1)) self.Bind(wx.EVT_BUTTON, self.OnClickButtonGPS, self.ButtonGPS) self.ButtonGPS.SetDefault() self.ButtonAction=0 self.ButtonForce = wx.Button(panel, -1, "Force GPS", size = (100, -1)) self.Bind(wx.EVT_BUTTON, self.OnClickButtonForce, self.ButtonForce) self.ButtonConfig = wx.Button(panel, -1, "Sauvegarde", size = (100, -1)) self.Bind(wx.EVT_BUTTON, self.OnClickButtonConfig, self.ButtonConfig) # Les timers self.timer1 = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnTimer1, self.timer1) self.timer2 = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnTimer2, self.timer2) # La zone Alpha self.MultiText = wx.TextCtrl(panel, -1, size = (430, 130), style = wx.TE_MULTILINE | wx.CB_READONLY) # Mise en page et affichage self.MainSizer = wx.FlexGridSizer(cols = 1, hgap = 6, vgap = 6) self.UrlSizer = wx.FlexGridSizer(cols = 3, hgap = 6, vgap = 6) self.UrlSizer.AddMany([(20, -1), self.VlmUrlLabel, self.VlmUrlChoice]) self.MailSizer = wx.FlexGridSizer(cols = 3, hgap = 6, vgap = 6) self.MailSizer.AddMany([(20, -1), self.MailLabel, self.MailText]) self.PwdSizer = wx.FlexGridSizer(cols = 3, hgap = 6, vgap = 6) self.PwdSizer.AddMany([(20, -1), self.PwdLabel, self.PwdText]) self.BoatSizer = wx.FlexGridSizer(cols = 3, hgap = 6, vgap = 6) self.BoatSizer.AddMany([(20, -1), self.BoatsLabel, self.BoatsChoice]) self.GPSSizer = wx.FlexGridSizer(cols = 4, hgap = 6, vgap = 6) self.GPSSizer.AddMany([(20, -1), self.ButtonGPS, self.ButtonForce, self.ButtonConfig]) self.MultiSizer = wx.FlexGridSizer(cols = 2, hgap = 6, vgap = 6) self.MultiSizer.AddMany([(3, -1), self.MultiText]) self.MainSizer.AddMany([(10, -1), self.UrlSizer, self.MailSizer, self.PwdSizer, self.BoatSizer, self.GPSSizer, self.MultiSizer]) panel.SetSizer(self.MainSizer) # Message de bienvenue dans la zone Alpha self.MultiText.Clear() self.MultiText.SetValue("Bienvenue"+"\r\n"+ "vlm2udp Ver. 0.2"+"\r\n"+ "30/10/2010"+"\r\n"+ "By Paparazzia & Stephpen"+"\r\n"+ "\r\n"+ "Interface GPS entre le site"+"\r\n"+ "Virtual Loup de Mer et Maxou"+"\r\n") # Tentative de recuperation de la liste des bateaux # appartenant au compte (VLM_EMAIL, VLM_PASSWD) try: self.MultiText.Clear() self.BoatFleet = fleet(VLM_EMAIL, VLM_PASSWD) self.MyBoats = self.BoatFleet['fleet'] self.BsBoats = self.BoatFleet['fleet_boatsit'] self.MyBoatsList = self.MyBoats.keys() self.BsBoatsList = self.BsBoats.keys() # Recuperation de la liste des boats en course self.BoatsList = ExtractBoatsList(self.MyBoats, self.MyBoatsList, self.BsBoats, self.BsBoatsList) if self.BoatsList == none: self.BoatsList = ['0 none'] except: # Sinon, message d'erreur et liste vide self.ErrorMailPwd() self.BoatsList = ['0 none'] self.BoatsChoice.Clear() self.BoatsChoice.AppendItems(self.BoatsList) self.BoatsChoice.SetValue(self.BoatsList[0]) self.Bind(wx.EVT_CLOSE, self.OnClose)
def __init__(self, parent, window, controler, additional_columns=None): wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL) main_sizer = wx.FlexGridSizer(cols=2, hgap=0, rows=1, vgap=4) main_sizer.AddGrowableCol(1) main_sizer.AddGrowableRow(0) controls_sizer = wx.BoxSizer(wx.VERTICAL) main_sizer.AddSizer(controls_sizer, border=5, flag=wx.ALL) for name, bitmap, help in [ ("AddVariableButton", "add_element", _("Add variable")), ("DeleteVariableButton", "remove_element", _("Remove variable")), ("UpVariableButton", "up", _("Move variable up")), ("DownVariableButton", "down", _("Move variable down")) ]: button = wx.lib.buttons.GenBitmapButton(self, bitmap=GetBitmap(bitmap), size=wx.Size(28, 28), style=wx.NO_BORDER) button.SetToolTipString(help) setattr(self, name, button) controls_sizer.AddWindow(button, border=5, flag=wx.BOTTOM) self.VariablesGrid = CustomGrid(self, style=wx.VSCROLL) self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange) self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnVariablesGridCellLeftClick) self.VariablesGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.OnVariablesGridEditorShown) main_sizer.AddWindow(self.VariablesGrid, flag=wx.GROW) self.SetSizer(main_sizer) self.ParentWindow = window self.Controler = controler self.VariablesDefaultValue = { "Name": "LocalVar0", "Type": DefaultType, "Initial": "", "Description": "", "OnChange": "", "Options": "" } self.Table = VariablesTable(self, [], self.GetVariableTableColnames(), additional_columns=additional_columns) self.ColAlignements = [wx.ALIGN_RIGHT] + \ [wx.ALIGN_LEFT]*(len(self.VariablesDefaultValue)) self.ColSizes = [20, 150 ] + [130] * (len(self.VariablesDefaultValue) - 1) self.VariablesGrid.SetTable(self.Table) self.VariablesGrid.SetButtons({ "Add": self.AddVariableButton, "Delete": self.DeleteVariableButton, "Up": self.UpVariableButton, "Down": self.DownVariableButton }) def _AddVariable(new_row): if new_row > 0: row_content = self.Table.data[new_row - 1].copy() old_name = row_content['Name'] row_content['Name'] =\ self.Controler.GenerateNewName(old_name, old_name+'%d') else: row_content = self.VariablesDefaultValue.copy() self.Table.InsertRow(new_row, row_content) self.RefreshModel() self.RefreshView() return new_row setattr(self.VariablesGrid, "_AddRow", _AddVariable) def _DeleteVariable(row): self.Table.RemoveRow(row) self.RefreshModel() self.RefreshView() setattr(self.VariablesGrid, "_DeleteRow", _DeleteVariable) def _MoveVariable(row, move): new_row = self.Table.MoveRow(row, move) if new_row != row: self.RefreshModel() self.RefreshView() return new_row setattr(self.VariablesGrid, "_MoveRow", _MoveVariable) self.VariablesGrid.SetRowLabelSize(0) for col in range(self.Table.GetNumberCols()): attr = wx.grid.GridCellAttr() attr.SetAlignment(self.ColAlignements[col], wx.ALIGN_CENTRE) self.VariablesGrid.SetColAttr(col, attr) self.VariablesGrid.SetColSize(col, self.ColSizes[col]) self.Table.ResetView(self.VariablesGrid)
def __init__(self, dbsal, *args, **kwargs): parent = args[0] size = parent.GetClientSizeTuple() self.dbsal = dbsal sal = self.dbsal reg = sal.reg cau = reg.caus cn = lambda db, col: db._GetFieldIndex(col, inline=True) _STR = gl.GRID_VALUE_STRING _IMP = bt.GetValIntMaskInfo() ncdat = cn(sal, 'giorno') nctod = cn(sal, 'total_dare') nctoa = cn(sal, 'total_avere') nctsd = cn(sal, 'total_saldo_dare') nctsa = cn(sal, 'total_saldo_avere') nctpd = cn(sal, 'total_progr_dare') nctpa = cn(sal, 'total_progr_avere') nctxd = cn(sal, 'total_saldoprogr_dare') nctxa = cn(sal, 'total_saldoprogr_avere') cols = (\ ( 90, (ncdat, "Data reg.", _STR, True)), (110, (nctsd, "Saldo Dare", _IMP, True)), (110, (nctsa, "Saldo Avere", _IMP, True)), (110, (nctxd, "Saldo P.Dare", _IMP, True)), (110, (nctxa, "Saldo P.Avere", _IMP, True)), ) colmap = [c[1] for c in cols] colsize = [c[0] for c in cols] canedit = False canins = False class Registrazioni(dbglib.DbGridTable): def GetValue(self, row, col): if col == 0 and row<len(self.data): d = self.data[row][self.rsColumns[col]] if d is None: if row == 0: out = 'Riporto' else: out = '' elif type(d) is Env.DateTime.Date: #mysql 5.1 => mi arriva Date OK out = dbc.adb.DbTable.dita(d) elif type(d) in (str, unicode): #mysql 5.0 => mi arriva stringa ?!? out = '%s/%s/%s' % (d[8:10], d[5:7], d[:4]) else: out = '???' else: out = dbglib.DbGridTable.GetValue(self, row, col) return out dbglib.DbGrid.__init__(self, parent, -1, size=size, tableClass=Registrazioni) self.SetData([], colmap, canedit, canins) def GridAttr(row, col, rscol, attr): if col in (0,4) and row<self.dbsal.RowsCount(): if row != self.dbsal.RowNumber(): self.dbsal.MoveRow(row) if self.dbsal.total_progr_avere>self.dbsal.total_progr_dare: fgcol = stdcolor.GetColour("red") else: fgcol = stdcolor.NORMAL_FOREGROUND attr.SetTextColour(fgcol) return attr self.SetCellDynAttr(GridAttr) map(lambda c:\ self.SetColumnDefaultSize(c[0], c[1]), enumerate(colsize)) self.SetFitColumn(0) self.AutoSizeColumns() sz = wx.FlexGridSizer(1,0,0,0) sz.AddGrowableCol( 0 ) sz.AddGrowableRow( 0 ) sz.Add(self, 0, wx.GROW|wx.ALL, 0) parent.SetSizer(sz) sz.SetSizeHints(parent)
def populateObjectSizer(self, attribute=None): if attribute is None or attribute == 'neuronClass': # Choose the appropriate item in the pop-up menu. if self.objects.haveEqualAttr('neuronClass'): if self.objects[0].neuronClass is None: self._neuronClassChoice.SetSelection( self._unknownNeuronClassId) else: for index in range(0, self._neuronClassChoice.GetCount()): if self._neuronClassChoice.GetClientData( index) == self.objects[0].neuronClass: self._neuronClassChoice.SetSelection(index) else: self._multipleNeuronClassesId = self._neuronClassChoice.Append( gettext('Multiple values'), None) self._neuronClassChoice.SetSelection( self._multipleNeuronClassesId) if attribute is None or attribute == 'functions': for function, checkBox in [ (Neuron.Function.SENSORY, self._sensoryCheckBox), (Neuron.Function.INTERNEURON, self._interneuronCheckBox), (Neuron.Function.MOTOR, self._motorCheckBox) ]: mixedFunction = False hasFunction = self.objects[0].hasFunction(function) for object in self.objects[1:]: if hasFunction != object.hasFunction(function): mixedFunction = True if mixedFunction: checkBox.Set3StateValue(wx.CHK_UNDETERMINED) elif hasFunction: checkBox.Set3StateValue(wx.CHK_CHECKED) else: checkBox.Set3StateValue(wx.CHK_UNCHECKED) if attribute is None or attribute == 'polarity': # Choose the appropriate item in the pop-up menu. if self.objects.haveEqualAttr('polarity'): if self.objects[0].polarity is None: self._polarityChoice.SetSelection(self._unknownPolarityId) else: for index in range(0, self._polarityChoice.GetCount()): if self._polarityChoice.GetClientData( index) == self.objects[0].polarity: self._polarityChoice.SetSelection(index) else: self._multiplePolaritiesId = self._polarityChoice.Append( gettext('Multiple values'), None) self._polarityChoice.SetSelection(self._multiplePolaritiesId) if attribute is None or attribute == 'neurotransmitters': if self.objects.haveEqualAttr('neurotransmitters'): self._neurotransmittersSizer.Clear(True) self._neurotransmitterChoice.Clear() self._neurotransmitterChoice.Append(gettext('Add...')) self._neurotransmitterChoice.SetSelection(0) for neurotransmitter in neuroptikon.library.neurotransmitters( ): if neurotransmitter in self.objects[0].neurotransmitters: self._neurotransmittersSizer.Add( wx.StaticText(self._parentWindow, wx.ID_ANY, neurotransmitter.name)) removeButton = wx.Button(self._parentWindow, wx.ID_ANY, gettext('Remove'), style=wx.BU_EXACTFIT) removeButton.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) removeButton.SetSize( wx.Size(60, removeButton.GetSize().GetHeight())) removeButton.SetMinSize(removeButton.GetSize()) self._parentWindow.Bind(wx.EVT_BUTTON, self.onRemoveNeurotransmitter, removeButton) self._neurotransmittersSizer.Add( removeButton, 0, 0, 0, neurotransmitter) else: self._neurotransmitterChoice.Append( neurotransmitter.name, neurotransmitter) if len(self.objects[0].neurotransmitters) == 0: self._neurotransmittersSizer.Add( wx.StaticText(self._parentWindow, wx.ID_ANY, gettext('Unknown'))) self._neurotransmitterChoice.Enable( self._neurotransmitterChoice.GetCount() > 1) else: self._neurotransmittersSizer.Add( wx.StaticText(self._parentWindow, wx.ID_ANY, gettext('Multiple values'))) self._neurotransmitterChoice.Disable() if attribute is None or attribute == 'neuronImage': if self.objects.haveEqualAttr('neuronImage'): image = self.objects[0].neuronImage self._imageSizer.Clear(True) self._imageSizer.Clear() if image == None or image == []: pass else: imagesGridSizer = wx.FlexGridSizer(2 * len(image), 0, 2, 5) imagesGridSizer.SetFlexibleDirection(wx.VERTICAL) self._imageSizer.Add(imagesGridSizer) for idx, img in enumerate(image): labelForNeuron = wx.StaticText(self._window, wx.ID_ANY, gettext(img.label)) imagesGridSizer.Add(labelForNeuron) if img.bmp: scaledImage = img.bmp.Copy().Rescale( 100, 100, wx.IMAGE_QUALITY_HIGH) imageOfNeuron = wx.StaticBitmap(self._window, wx.ID_ANY, name=str(idx)) imageOfNeuron.SetBitmap( wx.BitmapFromImage(scaledImage)) imageOfNeuron.SetMinSize(wx.Size(100, 100)) imageOfNeuron.SetMaxSize(wx.Size(100, 100)) imageOfNeuron.Bind(wx.EVT_LEFT_DOWN, self.onSelectImage) imagesGridSizer.Add(imageOfNeuron) else: pass #option if not all neurons have the same image if attribute is None or attribute == 'links': if self.objects.haveEqualAttr('links'): self._linkSizer.Clear(True) self._linkSizer.Clear() if self.objects[0].links: for url in self.objects[0].links: if (url): self._linkOut = wx.HyperlinkCtrl( self._parentWindow, wx.ID_ANY, gettext(url), gettext(url)) self._linkSizer.Add(self._linkOut) self._sizer.Layout()
def __init__(self, parent, id, title, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE): wx.Frame.__init__(self, parent, id, title, pos, size, style) self._connection_manager = None self._services = [] self._init_logging() self._default_width = 400 panel = wx.Panel(parent=self, id=wx.ID_ANY) # hgap is amount of space between columns, vgap between rows column1_sizer = wx.FlexGridSizer(cols=2, hgap=10, vgap=5) column1_sizer.AddGrowableCol(1) column2_sizer = wx.FlexGridSizer(cols=2, hgap=10, vgap=5) column2_sizer.AddGrowableCol(1) self._init_domain_controls(panel, column1_sizer) self._init_hostname_controls(panel, column1_sizer) self._init_cname_controls(panel, column1_sizer) self._init_services_controls(panel, column1_sizer) self._init_connect_controls(panel, column1_sizer) self._init_log_controls(panel, column1_sizer) self._init_messages_controls(panel, column1_sizer) self._init_image_url_controls(panel, column1_sizer) self._init_link_url_controls(panel, column1_sizer) self._init_image_controls(panel, column2_sizer) self._init_text_controls(panel, column2_sizer) self._init_close_button(panel) content_sizer = wx.BoxSizer(wx.HORIZONTAL) content_sizer.Add(column1_sizer, proportion=1, flag=wx.ALL | wx.EXPAND, border=10) content_sizer.Add(column2_sizer, proportion=1, flag=wx.ALL | wx.EXPAND, border=10) button_sizer = wx.BoxSizer(wx.HORIZONTAL) button_sizer.AddStretchSpacer(1) button_sizer.Add(self._close_button, proportion=0, flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border=10) # Use a BoxSizer to add a border/gap around sizer. border = wx.BoxSizer(wx.VERTICAL) border.Add(content_sizer, proportion=1, flag=wx.EXPAND) border.Add(button_sizer, proportion=0, flag=wx.EXPAND) panel.SetSizerAndFit(border) self.Fit() self._init_message_handlers()