def __init__(self, parent, quote, filter = False, market = None, filterEnabled=True, tradableOnly=False): iTradeSizedDialog.__init__(self,parent,-1,message('quote_select_title'), size=(460, 460),style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) self.m_parent = parent # init if quote: self.m_isin = quote.isin() self.m_ticker = quote.ticker() self.m_market = quote.market() self.m_place = quote.place() else: self.m_isin = '' self.m_ticker = '' self.m_market = market self.m_place = market2place(market) self.m_filter = filter self.m_qlist = QLIST_ALL self.m_qlist_tradableOnly = tradableOnly self.m_editing = True tID = wx.NewId() self.m_imagelist = wx.ImageList(16,16) self.sm_q = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("horizontal") pane.SetSizerProps(expand=True) # pane : ISIN or Name selection label = wx.StaticText(pane, -1, message('quote_select_isin')) label.SetSizerProps(valign='center') tID = wx.NewId() self.wxIsinCtrl = wx.TextCtrl(pane, tID, self.m_isin) self.wxIsinCtrl.SetSizerProps(expand=True) wx.EVT_TEXT(self, tID, self.OnISINEdited) label = wx.StaticText(pane, -1, message('quote_select_ticker')) label.SetSizerProps(valign='center') tID = wx.NewId() self.wxTickerCtrl = wx.TextCtrl(pane, tID, self.m_ticker) self.wxTickerCtrl.SetSizerProps(expand=True) wx.EVT_TEXT(self, tID, self.OnTickerEdited) # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("horizontal") pane.SetSizerProps(expand=True) # pane : market & list filters self.wxLabelMarketCtrl = wx.StaticText(pane, -1, message('quote_select_market')) self.wxLabelMarketCtrl.SetSizerProps(valign='center') self.wxMarketCtrl = wx.ComboBox(pane,-1, "", style=wx.CB_DROPDOWN|wx.CB_READONLY) self.wxMarketCtrl.SetSizerProps(expand=True) wx.EVT_COMBOBOX(self,self.wxMarketCtrl.GetId(),self.OnMarket) count = 0 idx = 0 for eachCtrl in list_of_markets(bFilterMode=False): self.wxMarketCtrl.Append(eachCtrl,eachCtrl) if eachCtrl==self.m_market: idx = count count = count + 1 self.wxMarketCtrl.SetSelection(idx) self.wxLabelQListCtrl = wx.StaticText(pane, -1, message('quote_select_list')) self.wxLabelQListCtrl.SetSizerProps(valign='center') self.wxQListCtrl = wx.ComboBox(pane,-1, "", style=wx.CB_DROPDOWN|wx.CB_READONLY) self.wxQListCtrl.SetSizerProps(expand=True) wx.EVT_COMBOBOX(self,self.wxQListCtrl.GetId(),self.OnQuoteList) self.wxQListCtrl.Append(message('quote_select_alllist'),QLIST_ALL) self.wxQListCtrl.Append(message('quote_select_syslist'),QLIST_SYSTEM) self.wxQListCtrl.Append(message('quote_select_usrlist'),QLIST_USER) if not self.m_qlist_tradableOnly: self.wxQListCtrl.Append(message('quote_select_indiceslist'),QLIST_INDICES) self.wxQListCtrl.Append(message('quote_select_trackerslist'),QLIST_TRACKERS) self.wxQListCtrl.SetSelection(self.m_qlist) # select traded or not tID = wx.NewId() self.wxFilterCtrl = wx.CheckBox(container, tID, message('quote_select_filterfield')) self.wxFilterCtrl.SetValue(self.m_filter) wx.EVT_CHECKBOX(self, tID, self.OnFilter) self.wxFilterCtrl.Enable(filterEnabled) # List self.m_list = iTradeSelectorListCtrl(container, tID, style = wx.LC_REPORT | wx.SUNKEN_BORDER,size=(440, 380)) self.m_list.SetSizerProps(expand=True) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 5) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) # Last Row : OK and Cancel btnpane = sc.SizedPanel(container, -1) btnpane.SetSizerType("horizontal") btnpane.SetSizerProps(expand=True) # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(btnpane) # OK self.wxOK = wx.Button(btnpane, wx.ID_OK, message('valid')) self.wxOK.SetDefault() self.wxOK.SetHelpText(message('valid_desc')) wx.EVT_BUTTON(self, wx.ID_OK, self.OnValid) # CANCEL btn = wx.Button(btnpane, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) # set the right filter and fit everything self.OnFilter() EVT_POSTINIT(self, self.OnPostInit) wx.PostEvent(self,PostInitEvent())
def __init__(self, parent, market): # context help pre = wx.PreDialog() pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) title = message('quote_list_title') pre.Create(parent, -1, title, size=(590, 460)) self.PostCreate(pre) self.m_parent = parent self.m_dirty = False self.m_market = market self.m_qlist = QLIST_USER tID = wx.NewId() self.m_imagelist = wx.ImageList(16, 16) self.sm_q = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) self.m_list = iTradeSelectorListCtrl(self, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER, size=(570, 380)) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 7) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_SIZE(self, self.OnSize) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) sizer = wx.BoxSizer(wx.VERTICAL) # market selection box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('quote_select_market')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.wxMarketCtrl = wx.ComboBox(self, -1, "", size=wx.Size(140, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) box.Add(self.wxMarketCtrl, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_COMBOBOX(self, self.wxMarketCtrl.GetId(), self.OnMarket) count = 0 idx = 0 for eachCtrl in list_of_markets(bFilterMode=True): self.wxMarketCtrl.Append(eachCtrl, eachCtrl) if eachCtrl == self.m_market: idx = count count = count + 1 self.wxMarketCtrl.SetSelection(idx) # list selection label = wx.StaticText(self, -1, message('quote_select_list')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.wxQListCtrl = wx.ComboBox(self, -1, "", size=wx.Size(140, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) box.Add(self.wxQListCtrl, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_COMBOBOX(self, self.wxQListCtrl.GetId(), self.OnQuoteList) self.wxQListCtrl.Append(message('quote_select_alllist'), QLIST_ALL) self.wxQListCtrl.Append(message('quote_select_syslist'), QLIST_SYSTEM) self.wxQListCtrl.Append(message('quote_select_usrlist'), QLIST_USER) self.wxQListCtrl.Append(message('quote_select_indiceslist'), QLIST_INDICES) self.wxQListCtrl.Append(message('quote_select_trackerslist'), QLIST_TRACKERS) self.wxQListCtrl.SetSelection(self.m_qlist) self.wxCount = wx.StaticText(self, -1, '--') box.Add(self.wxCount, 0, wx.ALIGN_CENTRE | wx.ALL, 5) sizer.AddSizer(box, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) box = wx.BoxSizer(wx.HORIZONTAL) box.Add(self.m_list, 0, wx.ALIGN_CENTRE | wx.ALL, 5) sizer.Add(box, 0, wx.ALIGN_CENTRE | wx.ALL, 5) box2 = wx.BoxSizer(wx.VERTICAL) self.wxNEW = wx.Button(self, wx.ID_NEW, message('listquote_new')) self.wxNEW.SetHelpText(message('listquote_new_desc')) box2.Add(self.wxNEW, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_NEW, self.OnNewQuote) self.wxPROP = wx.Button(self, wx.ID_PROPERTIES, message('listquote_edit')) self.wxPROP.SetHelpText(message('listquote_edit_desc')) box2.Add(self.wxPROP, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_PROPERTIES, self.OnEditQuote) self.wxDELETE = wx.Button(self, wx.ID_DELETE, message('listquote_delete')) self.wxDELETE.SetHelpText(message('listquote_delete_desc')) box2.Add(self.wxDELETE, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_DELETE, self.OnDeleteQuote) box.Add(box2, 0, wx.ALIGN_CENTRE | wx.ALL, 5) box = wx.BoxSizer(wx.HORIZONTAL) # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(self) box.Add(btn, 0, wx.ALIGN_CENTRE | wx.ALL, 5) # CANCEL btn = wx.Button(self, wx.ID_CANCEL, message('close')) btn.SetHelpText(message('close_desc')) wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnCancel) box.Add(btn, 0, wx.ALIGN_CENTRE | wx.ALL, 5) # SAVE btn.SetDefault() self.wxSAVE = wx.Button(self, wx.ID_APPLY, message('listquote_save')) self.wxSAVE.SetHelpText(message('listquote_save_desc')) box.Add(self.wxSAVE, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_APPLY, self.OnSave) # DOWNLOAD self.wxOK = wx.Button(self, wx.ID_OK, '') self.wxOK.SetHelpText('') box.Add(self.wxOK, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_OK, self.OnDownload) # CLEAR self.wxCLEAR = wx.Button(self, wx.ID_CLEAR, '') self.wxCLEAR.SetHelpText('') box.Add(self.wxCLEAR, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_CLEAR, self.OnClear) sizer.AddSizer(box, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.SetAutoLayout(True) self.SetSizerAndFit(sizer) EVT_POSTINIT(self, self.OnPostInit) wx.PostEvent(self, PostInitEvent())
def __init__(self, parent, market): # context help pre = wx.PreDialog() pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) title = message('quote_list_title') pre.Create(parent, -1, title, size=(590, 460)) self.PostCreate(pre) self.m_parent = parent self.m_dirty = False self.m_market = market self.m_qlist = QLIST_SYSTEM tID = wx.NewId() self.m_imagelist = wx.ImageList(16,16) self.sm_q = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) self.m_list = iTradeSelectorListCtrl(self, tID, style = wx.LC_REPORT | wx.SUNKEN_BORDER, size=(570, 380) ) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 7) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_SIZE(self, self.OnSize) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) sizer = wx.BoxSizer(wx.VERTICAL) # market selection box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('quote_select_market')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) self.wxMarketCtrl = wx.ComboBox(self,-1, "", size=wx.Size(200,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) box.Add(self.wxMarketCtrl, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_COMBOBOX(self,self.wxMarketCtrl.GetId(),self.OnMarket) count = 0 idx = 0 for eachCtrl in list_of_markets(bFilterMode=True): self.wxMarketCtrl.Append(eachCtrl,eachCtrl) if eachCtrl==self.m_market: idx = count count = count + 1 self.wxMarketCtrl.SetSelection(idx) # list selection label = wx.StaticText(self, -1, message('quote_select_list')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) self.wxQListCtrl = wx.ComboBox(self,-1, "", size=wx.Size(140,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) box.Add(self.wxQListCtrl, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_COMBOBOX(self,self.wxQListCtrl.GetId(),self.OnQuoteList) self.wxQListCtrl.Append(message('quote_select_alllist'),QLIST_ALL) self.wxQListCtrl.Append(message('quote_select_syslist'),QLIST_SYSTEM) self.wxQListCtrl.Append(message('quote_select_usrlist'),QLIST_USER) self.wxQListCtrl.Append(message('quote_select_indiceslist'),QLIST_INDICES) self.wxQListCtrl.Append(message('quote_select_trackerslist'),QLIST_TRACKERS) self.wxQListCtrl.Append(message('quote_select_bondslist'),QLIST_BONDS) self.wxQListCtrl.SetSelection(self.m_qlist) self.wxCount = wx.StaticText(self, -1, '--') box.Add(self.wxCount, 0, wx.ALIGN_CENTRE|wx.ALL, 5) sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) box = wx.BoxSizer(wx.HORIZONTAL) box.Add(self.m_list, 0, wx.ALIGN_CENTRE|wx.ALL, 5) sizer.Add(box, 0, wx.ALIGN_CENTRE|wx.ALL, 5) box2 = wx.BoxSizer(wx.VERTICAL) self.wxNEW = wx.Button(self, wx.ID_NEW, message('listquote_new')) self.wxNEW.SetHelpText(message('listquote_new_desc')) box2.Add(self.wxNEW, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_NEW, self.OnNewQuote) self.wxPROP = wx.Button(self, wx.ID_PROPERTIES, message('listquote_edit')) self.wxPROP.SetHelpText(message('listquote_edit_desc')) box2.Add(self.wxPROP, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_PROPERTIES, self.OnEditQuote) self.wxDELETE = wx.Button(self, wx.ID_DELETE, message('listquote_delete')) self.wxDELETE.SetHelpText(message('listquote_delete_desc')) box2.Add(self.wxDELETE, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_DELETE, self.OnDeleteQuote) box.Add(box2, 0, wx.ALIGN_CENTRE|wx.ALL, 5) box = wx.BoxSizer(wx.HORIZONTAL) # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(self) box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5) # CANCEL btn = wx.Button(self, wx.ID_CANCEL, message('close')) btn.SetHelpText(message('close_desc')) wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnCancel) box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5) # SAVE btn.SetDefault() self.wxSAVE = wx.Button(self, wx.ID_APPLY, message('listquote_save')) self.wxSAVE.SetHelpText(message('listquote_save_desc')) box.Add(self.wxSAVE, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_APPLY, self.OnSave) # DOWNLOAD self.wxOK = wx.Button(self, wx.ID_OK, '') self.wxOK.SetHelpText('') box.Add(self.wxOK, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_OK, self.OnDownload) # CLEAR self.wxCLEAR = wx.Button(self, wx.ID_CLEAR, '') self.wxCLEAR.SetHelpText('') box.Add(self.wxCLEAR, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_CLEAR, self.OnClear) sizer.AddSizer(box, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) self.SetAutoLayout(True) self.SetSizerAndFit(sizer) EVT_POSTINIT(self, self.OnPostInit) wx.PostEvent(self,PostInitEvent())
def __init__(self, parent, portfolio, operation, except_portfolio=None): iTradeSizedDialog.__init__(self,parent, -1, message('portfolio_%s_title'%operation), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, size=(420, 420)) # init if portfolio: self.m_name = portfolio.filename() self.m_accountref = portfolio.accountref() else: self.m_name = '' self.m_accountref = '' self.m_except = except_portfolio # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("form") pane.SetSizerProps(expand=True) # Row 1 label = wx.StaticText(pane, -1, message('portfolio_select_textfield')) label.SetSizerProps(valign='center') self.wxNameCtrl = wx.TextCtrl(pane, -1, self.m_name, size=(80,-1)) self.wxNameCtrl.SetSizerProps(expand=True) # Row 2 : tID = wx.NewId() self.m_imagelist = wx.ImageList(16,16) self.sm_q = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) self.m_list = iTradeSelectorListCtrl(container, tID, style = wx.LC_REPORT | wx.SUNKEN_BORDER, size=(400, 380) ) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) self.m_list.SetSizerProps(expand=True) self.PopulateList() # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 3) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) # Last Row : OK and Cancel btnpane = sc.SizedPanel(container, -1) btnpane.SetSizerType("horizontal") btnpane.SetSizerProps(expand=True) if operation=='delete': msg = message('portfolio_properties_btndelete') msgdesc = message('portfolio_properties_btndeletedesc') elif operation=='select': msg = message('portfolio_properties_btnselect') msgdesc = message('portfolio_properties_btnselectdesc') else: msg = message('valid') msgdesc = message('valid_desc') # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(btnpane) # OK btn = wx.Button(btnpane, wx.ID_OK, msg) btn.SetDefault() btn.SetHelpText(msgdesc) wx.EVT_BUTTON(self, wx.ID_OK, self.OnValid) # CANCEL btn = wx.Button(btnpane, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) # a little trick to make sure that you can't resize the dialog to # less screen space than the controls need self.Fit() self.SetMinSize(self.GetSize()) self.wxNameCtrl.SetFocus()
def __init__(self, parent, portfolio, operation, except_portfolio=None): iTradeSizedDialog.__init__(self, parent, -1, message('portfolio_%s_title' % operation), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, size=(420, 420)) # init if portfolio: self.m_name = portfolio.filename() self.m_accountref = portfolio.accountref() else: self.m_name = '' self.m_accountref = '' self.m_except = except_portfolio # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("form") pane.SetSizerProps(expand=True) # Row 1 label = wx.StaticText(pane, -1, message('portfolio_select_textfield')) label.SetSizerProps(valign='center') self.wxNameCtrl = wx.TextCtrl(pane, -1, self.m_name, size=(80, -1)) self.wxNameCtrl.SetSizerProps(expand=True) # Row 2 : tID = wx.NewId() self.m_imagelist = wx.ImageList(16, 16) self.sm_q = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) self.m_list = iTradeSelectorListCtrl(container, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER, size=(400, 380)) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) self.m_list.SetSizerProps(expand=True) self.PopulateList() # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 3) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) # Last Row : OK and Cancel btnpane = sc.SizedPanel(container, -1) btnpane.SetSizerType("horizontal") btnpane.SetSizerProps(expand=True) if operation == 'delete': msg = message('portfolio_properties_btndelete') msgdesc = message('portfolio_properties_btndeletedesc') elif operation == 'select': msg = message('portfolio_properties_btnselect') msgdesc = message('portfolio_properties_btnselectdesc') else: msg = message('valid') msgdesc = message('valid_desc') # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(btnpane) # OK btn = wx.Button(btnpane, wx.ID_OK, msg) btn.SetDefault() btn.SetHelpText(msgdesc) wx.EVT_BUTTON(self, wx.ID_OK, self.OnValid) # CANCEL btn = wx.Button(btnpane, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) # a little trick to make sure that you can't resize the dialog to # less screen space than the controls need self.Fit() self.SetMinSize(self.GetSize()) self.wxNameCtrl.SetFocus()