def OnDownload(self, event): if self.m_market == None: lst = list_of_markets() max = len(lst) + 1 keepGoing = True x = 0 dlg = wx.ProgressDialog(message('download_symbols_alllists'), "", max, self, wx.PD_CAN_ABORT | wx.PD_APP_MODAL) for market in lst: if keepGoing: keepGoing = dlg.Update(x, market) fn = getListSymbolConnector(market, QLIST_ANY, QTAG_LIST) if fn: fn(quotes, market, dlg, x) else: print 'ListSymbolConnector for %s not found !' % market x = x + 1 else: x = 0 dlg = wx.ProgressDialog(message('download_symbols_onelist'), "", 2, self, wx.PD_CAN_ABORT | wx.PD_APP_MODAL) dlg.Update(0, self.m_market) fn = getListSymbolConnector(self.m_market, QLIST_ANY, QTAG_LIST) if fn: fn(quotes, self.m_market, dlg, x) else: print 'ListSymbolConnector for %s not found !' % self.m_market dlg.Update(x, message('save')) self.m_dirty = True if dlg: dlg.Destroy() self.PopulateList()
def OnDownload(self,event): if self.m_market==None: lst = list_of_markets() max = len(lst)+1 keepGoing = True x = 0 dlg = wx.ProgressDialog(message('download_symbols_alllists'),"",max,self,wx.PD_CAN_ABORT | wx.PD_APP_MODAL) for market in lst: if keepGoing: keepGoing = dlg.Update(x,market) fn = getListSymbolConnector(market,QLIST_ANY,QTAG_LIST) if fn: fn(quotes,market,dlg,x) else: print 'ListSymbolConnector for %s not found !' % market x = x + 1 else: x = 0 dlg = wx.ProgressDialog(message('download_symbols_onelist'),"",2,self,wx.PD_CAN_ABORT | wx.PD_APP_MODAL) dlg.Update(0,self.m_market) fn = getListSymbolConnector(self.m_market,QLIST_ANY,QTAG_LIST) if fn: fn(quotes,self.m_market,dlg,x) else: print 'ListSymbolConnector for %s not found !' % self.m_market dlg.Update(x,message('save')) self.m_dirty = True if dlg: dlg.Destroy() self.PopulateList()
def OnMarket(self, evt): idx = self.wxMarketCtrl.GetSelection() if idx == 0: self.m_market = None # be sure every supported market is loaded ! for market in list_of_markets(): quotes.loadMarket(market) else: self.m_market = self.wxMarketCtrl.GetClientData(idx) quotes.loadMarket(self.m_market) self.PopulateList() self.checkEnablity() self.m_list.SetFocus()
def OnMarket(self,evt): idx = self.wxMarketCtrl.GetSelection() if idx==0: self.m_market = None # be sure every supported market is loaded ! for market in list_of_markets(): quotes.loadMarket(market) else: self.m_market = self.wxMarketCtrl.GetClientData(idx) quotes.loadMarket(self.m_market) self.PopulateList() self.checkEnablity() self.m_list.SetFocus()
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, quote, qmode): # context help pre = wx.PreDialog() pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) # pre-init self.qmode = qmode self.m_parent = parent if quote: self.m_isin = quote.isin() self.m_ticker = quote.ticker() self.m_name = quote.name() self.m_market = quote.market() self.m_place = quote.place() self.m_currency = quote.currency() self.m_country = quote.country() else: self.m_isin = '' self.m_ticker = '' self.m_name = '' self.m_place = 'PAR' self.m_market = 'EURONEXT' self.m_currency = 'EUR' self.m_country = 'FR' if qmode == QLIST_MODIFY: self.tt = message('listquote_modify_title') % quote.key() tb = message('listquote_edit') elif qmode == QLIST_ADD: self.tt = message('listquote_new_title') tb = message('listquote_new') elif qmode == QLIST_DELETE: self.tt = message('listquote_delete_title') % quote.key() tb = message('listquote_delete') else: self.tt = '??' tb = '??' # post-init pre.Create(parent, -1, self.tt, size=(420, 420)) self.PostCreate(pre) # sizer = wx.BoxSizer(wx.VERTICAL) # isin box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_isin')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) tID = wx.NewId() self.editISIN = wx.TextCtrl(self, tID, self.m_isin, size=wx.Size(180, -1), style=wx.TE_LEFT) wx.EVT_TEXT(self, tID, self.OnISINEdited) box.Add(self.editISIN, 0, wx.ALIGN_CENTRE | wx.ALL, 5) sizer.AddSizer(box, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # ticker and name box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_ticker')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.editTicker = wx.TextCtrl(self, -1, self.m_ticker, size=wx.Size(60, -1), style=wx.TE_LEFT) box.Add(self.editTicker, 0, wx.ALIGN_CENTRE | wx.ALL, 5) label = wx.StaticText(self, -1, message('prop_name')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.editName = wx.TextCtrl(self, -1, self.m_name, size=wx.Size(210, -1), style=wx.TE_LEFT) box.Add(self.editName, 0, wx.ALIGN_CENTRE_VERTICAL | wx.ALL, 5) sizer.AddSizer(box, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # market box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_market')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.editMarket = wx.ComboBox(self, -1, "", size=wx.Size(160, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) box.Add(self.editMarket, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_COMBOBOX(self, self.editMarket.GetId(), self.OnMarket) count = 0 for eachCtrl in list_of_markets(ifLoaded=True): self.editMarket.Append(eachCtrl, eachCtrl) if eachCtrl == self.m_market: idx = count count = count + 1 self.editMarket.SetSelection(idx) sizer.AddSizer(box, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # separator box = wx.BoxSizer(wx.HORIZONTAL) sizer.AddSizer(box, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # country & place & currency box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_country')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.dispCountry = wx.StaticText(self, -1, self.m_country) box.Add(self.dispCountry, 0, wx.ALIGN_CENTRE | wx.ALL, 5) label = wx.StaticText(self, -1, message('prop_place')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) tID = wx.NewId() self.editPlace = wx.ComboBox(self, tID, "", size=wx.Size(60, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) box.Add(self.editPlace, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_COMBOBOX(self, tID, self.OnPlace) self.fillPlaces() label = wx.StaticText(self, -1, message('prop_currency')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) tID = wx.NewId() self.editCurrency = wx.ComboBox(self, tID, "", size=wx.Size(80, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) box.Add(self.editCurrency, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_COMBOBOX(self, tID, self.OnCurrency) count = 0 for eachCtrl in list_of_currencies(): #print eachCtrl self.editCurrency.Append(eachCtrl, eachCtrl) if eachCtrl == self.m_currency: idx = count count = count + 1 self.editCurrency.SetSelection(idx) sizer.AddSizer(box, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # buttons 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) # OK btn = wx.Button(self, wx.ID_OK, tb) btn.SetDefault() btn.SetHelpText(message('ok_desc')) box.Add(btn, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_OK, self.OnValid) # CANCEL btn = wx.Button(self, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) box.Add(btn, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnCancel) sizer.AddSizer(box, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) wx.EVT_SIZE(self, self.OnSize) self.checkEnability() self.SetAutoLayout(True) self.SetSizerAndFit(sizer)
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, portfolio, operation): iTradeSizedDialog.__init__(self, None, -1, message('portfolio_properties_%s'% operation), style=wx.DEFAULT_DIALOG_STYLE , size=(420, 420) ) if portfolio: self.m_filename = portfolio.filename() self.m_name = portfolio.name() self.m_accountref = portfolio.accountref() self.m_market = portfolio.market() self.m_currency = portfolio.currency() self.m_vat = portfolio.vat() self.m_term = portfolio.term() self.m_risk = portfolio.risk() self.m_indice = portfolio.indice() else: self.m_filename = 'noname' self.m_name = '' self.m_accountref = '' self.m_market = 'EURONEXT' self.m_currency = 'EUR' self.m_vat = 1.196 self.m_term = 3 self.m_risk = 5 self.m_indice = getDefaultIndice(self.m_market) self.m_operation = operation # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("form") pane.SetSizerProps(expand=True) # row1 : filename label = wx.StaticText(pane, -1, message('portfolio_filename')) label.SetSizerProps(valign='center') self.wxFilenameCtrl = wx.TextCtrl(pane, -1, self.m_filename, size=(120,-1)) self.wxFilenameCtrl.SetSizerProps(expand=True) # row2 : name label = wx.StaticText(pane, -1, message('portfolio_name')) label.SetSizerProps(valign='center') self.wxNameCtrl = wx.TextCtrl(pane, -1, self.m_name, size=(180,-1)) self.wxNameCtrl.SetSizerProps(expand=True) # row3 : accountref label = wx.StaticText(pane, -1, message('portfolio_accountref')) label.SetSizerProps(valign='center') self.wxAccountRefCtrl = wx.TextCtrl(pane, -1, self.m_accountref, size=(80,-1)) self.wxAccountRefCtrl.SetSizerProps(expand=True) # row4 : market label = wx.StaticText(pane, -1, message('portfolio_market')) label.SetSizerProps(valign='center') self.wxMarketCtrl = wx.ComboBox(pane,-1, "", size=wx.Size(160,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) wx.EVT_COMBOBOX(self,self.wxMarketCtrl.GetId(),self.OnMarket) count = 0 for eachCtrl in list_of_markets(): self.wxMarketCtrl.Append(eachCtrl,eachCtrl) if eachCtrl==self.m_market: idx = count count = count + 1 self.wxMarketCtrl.SetSelection(idx) # row5 : main indice label = wx.StaticText(pane, -1, message('portfolio_indicator')) label.SetSizerProps(valign='center') self.wxIndicatorCtrl = wx.ComboBox(pane,-1, "", size=wx.Size(160,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) wx.EVT_COMBOBOX(self,self.wxIndicatorCtrl.GetId(),self.OnIndicator) count = 0 for eachCtrl in quotes.list(): if eachCtrl.list()==QLIST_INDICES: self.wxIndicatorCtrl.Append(eachCtrl.name(),eachCtrl.isin()) if eachCtrl.isin()==self.m_indice: idx = count count = count + 1 self.wxIndicatorCtrl.SetSelection(idx) # row6 : currency label = wx.StaticText(pane, -1, message('portfolio_currency')) label.SetSizerProps(valign='center') self.wxCurrencyCtrl = wx.ComboBox(pane,-1, "", size=wx.Size(80,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) wx.EVT_COMBOBOX(self,self.wxCurrencyCtrl.GetId(),self.OnCurrency) count = 0 for eachCtrl in list_of_currencies(): #print eachCtrl self.wxCurrencyCtrl.Append(eachCtrl,eachCtrl) if eachCtrl==self.m_currency: idx = count count = count + 1 self.wxCurrencyCtrl.SetSelection(idx) # row7 : default vat label = wx.StaticText(pane, -1, message('portfolio_vat')) label.SetSizerProps(valign='center') self.wxVATCtrl = masked.Ctrl(pane, integerWidth=5, fractionWidth=3, controlType=masked.controlTypes.NUMBER, allowNegative = False, groupChar=getGroupChar(), decimalChar=getDecimalChar() ) self.wxVATCtrl.SetValue((self.m_vat-1)*100) # Row8 : trading style label = wx.StaticText(container, -1, message('prop_tradingstyle')) btnpane = sc.SizedPanel(container, -1, style = wx.RAISED_BORDER | wx.CAPTION | wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN|wx.NO_FULL_REPAINT_ON_RESIZE) btnpane.SetSizerType("form") btnpane.SetSizerProps(expand=True) label = wx.StaticText(btnpane, -1, message('prop_term')) label.SetSizerProps(valign='center') self.wxTermCtrl = masked.Ctrl(btnpane, integerWidth=3, fractionWidth=0, controlType=masked.controlTypes.NUMBER, allowNegative = False, groupChar=getGroupChar(), decimalChar=getDecimalChar() ) self.wxTermCtrl.SetValue(self.m_term) label = wx.StaticText(btnpane, -1, message('prop_risk')) label.SetSizerProps(valign='center') self.wxRiskCtrl = masked.Ctrl(btnpane, integerWidth=3, fractionWidth=0, controlType=masked.controlTypes.NUMBER, allowNegative = False, groupChar=getGroupChar(), decimalChar=getDecimalChar() ) self.wxRiskCtrl.SetValue(self.m_risk) # row 9 : separator line = wx.StaticLine(container, -1, size=(20,-1), style=wx.LI_HORIZONTAL) line.SetSizerProps(expand=True) # Last Row : OK and Cancel btnpane = sc.SizedPanel(container, -1) btnpane.SetSizerType("horizontal") btnpane.SetSizerProps(expand=True) if operation=='create': msg = message('portfolio_properties_btncreate') msgdesc = message('portfolio_properties_btncreatedesc') fnt = self.OnValid elif operation=='delete': msg = message('portfolio_properties_btndelete') msgdesc = message('portfolio_properties_btndeletedesc') fnt = self.OnValid elif operation=='edit': msg = message('portfolio_properties_btnedit') msgdesc = message('portfolio_properties_btneditdesc') fnt = self.OnValid elif operation=='rename': msg = message('portfolio_properties_btnrename') msgdesc = message('portfolio_properties_btnrenamedesc') fnt = self.OnValid else: msg = message('valid') msgdesc = message('valid_desc') fnt = self.OnValid # 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, fnt) # CANCEL btn = wx.Button(btnpane, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) # enable some fields based on the operation if operation=='edit': # edit: filename, market and currency can't be changed self.wxFilenameCtrl.Enable(False) self.wxMarketCtrl.Enable(False) self.wxCurrencyCtrl.Enable(False) #self.wxNameCtrl.SetFocus() elif operation=='delete': # display only self.wxFilenameCtrl.Enable(False) self.wxNameCtrl.Enable(False) self.wxAccountRefCtrl.Enable(False) self.wxMarketCtrl.Enable(False) self.wxCurrencyCtrl.Enable(False) self.wxVATCtrl.Enable(False) self.wxTermCtrl.Enable(False) self.wxRiskCtrl.Enable(False) self.wxIndicatorCtrl.Enable(False) #self.btn.SetFocus() elif operation=='rename': # filename only self.wxNameCtrl.Enable(False) self.wxAccountRefCtrl.Enable(False) self.wxMarketCtrl.Enable(False) self.wxCurrencyCtrl.Enable(False) self.wxVATCtrl.Enable(False) self.wxTermCtrl.Enable(False) self.wxRiskCtrl.Enable(False) self.wxIndicatorCtrl.Enable(False) #self.btn.SetFocus() else: # everything is editable pass # 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())
def __init__(self, parent, quote, qmode): # context help pre = wx.PreDialog() pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) # pre-init self.qmode = qmode self.m_parent = parent if quote: self.m_isin = quote.isin() self.m_ticker = quote.ticker() self.m_name = quote.name() self.m_market = quote.market() self.m_place = quote.place() self.m_currency = quote.currency() self.m_country = quote.country() else: self.m_isin = '' self.m_ticker = '' self.m_name = '' self.m_place = 'PAR' self.m_market = 'EURONEXT' self.m_currency = 'EUR' self.m_country = 'FR' if qmode == QLIST_MODIFY: self.tt = message('listquote_modify_title') % quote.key() tb = message('listquote_edit') elif qmode == QLIST_ADD: self.tt = message('listquote_new_title') tb = message('listquote_new') elif qmode == QLIST_DELETE: self.tt = message('listquote_delete_title') % quote.key() tb = message('listquote_delete') else: self.tt = '??' tb = '??' # post-init pre.Create(parent, -1, self.tt, size=(420, 420)) self.PostCreate(pre) # sizer = wx.BoxSizer(wx.VERTICAL) # isin box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_isin')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) tID = wx.NewId() self.editISIN = wx.TextCtrl(self, tID, self.m_isin, size=wx.Size(180,-1), style = wx.TE_LEFT) wx.EVT_TEXT(self, tID, self.OnISINEdited) box.Add(self.editISIN, 0, wx.ALIGN_CENTRE|wx.ALL, 5) sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) # ticker and name box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_ticker')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) self.editTicker = wx.TextCtrl(self, -1, self.m_ticker, size=wx.Size(60,-1), style = wx.TE_LEFT) box.Add(self.editTicker, 0, wx.ALIGN_CENTRE|wx.ALL, 5) label = wx.StaticText(self, -1, message('prop_name')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) self.editName = wx.TextCtrl(self, -1, self.m_name, size=wx.Size(210,-1), style = wx.TE_LEFT) box.Add(self.editName, 0, wx.ALIGN_CENTRE_VERTICAL|wx.ALL, 5) sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) # market box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_market')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) self.editMarket = wx.ComboBox(self,-1, "", size=wx.Size(200,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) box.Add(self.editMarket, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_COMBOBOX(self,self.editMarket.GetId(),self.OnMarket) count = 0 for eachCtrl in list_of_markets(ifLoaded=True): self.editMarket.Append(eachCtrl,eachCtrl) if eachCtrl==self.m_market: idx = count count = count + 1 self.editMarket.SetSelection(idx) sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) # separator box = wx.BoxSizer(wx.HORIZONTAL) sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) # country & place & currency box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('prop_country')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) self.dispCountry = wx.StaticText(self, -1, self.m_country) box.Add(self.dispCountry, 0, wx.ALIGN_CENTRE|wx.ALL, 5) label = wx.StaticText(self, -1, message('prop_place')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) tID = wx.NewId() self.editPlace = wx.ComboBox(self,tID, "", size=wx.Size(60,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) box.Add(self.editPlace, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_COMBOBOX(self,tID,self.OnPlace) self.fillPlaces() label = wx.StaticText(self, -1, message('prop_currency')) box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) tID = wx.NewId() self.editCurrency = wx.ComboBox(self,tID, "", size=wx.Size(80,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) box.Add(self.editCurrency, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_COMBOBOX(self,tID,self.OnCurrency) count = 0 for eachCtrl in list_of_currencies(): #print eachCtrl self.editCurrency.Append(eachCtrl,eachCtrl) if eachCtrl==self.m_currency: idx = count count = count + 1 self.editCurrency.SetSelection(idx) sizer.AddSizer(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) # buttons 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) # OK btn = wx.Button(self, wx.ID_OK, tb) btn.SetDefault() btn.SetHelpText(message('ok_desc')) box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_OK, self.OnValid) # CANCEL btn = wx.Button(self, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) box.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnCancel) sizer.AddSizer(box, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) wx.EVT_SIZE(self, self.OnSize) self.checkEnability() self.SetAutoLayout(True) self.SetSizerAndFit(sizer) self.Layout()
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): iTradeSizedDialog.__init__(self, None, -1, message('portfolio_properties_%s' % operation), style=wx.DEFAULT_DIALOG_STYLE, size=(420, 420)) if portfolio: self.m_filename = portfolio.filename() self.m_name = portfolio.name() self.m_accountref = portfolio.accountref() self.m_market = portfolio.market() self.m_currency = portfolio.currency() self.m_vat = portfolio.vat() self.m_term = portfolio.term() self.m_risk = portfolio.risk() self.m_indice = portfolio.indice() else: self.m_filename = 'noname' self.m_name = '' self.m_accountref = '' self.m_market = 'EURONEXT' self.m_currency = 'EUR' self.m_vat = 1.196 self.m_term = 3 self.m_risk = 5 self.m_indice = getDefaultIndice(self.m_market) self.m_operation = operation # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("form") pane.SetSizerProps(expand=True) # row1 : filename label = wx.StaticText(pane, -1, message('portfolio_filename')) label.SetSizerProps(valign='center') self.wxFilenameCtrl = wx.TextCtrl(pane, -1, self.m_filename, size=(120, -1)) self.wxFilenameCtrl.SetSizerProps(expand=True) # row2 : name label = wx.StaticText(pane, -1, message('portfolio_name')) label.SetSizerProps(valign='center') self.wxNameCtrl = wx.TextCtrl(pane, -1, self.m_name, size=(180, -1)) self.wxNameCtrl.SetSizerProps(expand=True) # row3 : accountref label = wx.StaticText(pane, -1, message('portfolio_accountref')) label.SetSizerProps(valign='center') self.wxAccountRefCtrl = wx.TextCtrl(pane, -1, self.m_accountref, size=(80, -1)) self.wxAccountRefCtrl.SetSizerProps(expand=True) # row4 : market label = wx.StaticText(pane, -1, message('portfolio_market')) label.SetSizerProps(valign='center') self.wxMarketCtrl = wx.ComboBox(pane, -1, "", size=wx.Size(160, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) wx.EVT_COMBOBOX(self, self.wxMarketCtrl.GetId(), self.OnMarket) count = 0 for eachCtrl in list_of_markets(): self.wxMarketCtrl.Append(eachCtrl, eachCtrl) if eachCtrl == self.m_market: idx = count count = count + 1 self.wxMarketCtrl.SetSelection(idx) # row5 : main indice label = wx.StaticText(pane, -1, message('portfolio_indicator')) label.SetSizerProps(valign='center') self.wxIndicatorCtrl = wx.ComboBox(pane, -1, "", size=wx.Size(160, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) wx.EVT_COMBOBOX(self, self.wxIndicatorCtrl.GetId(), self.OnIndicator) count = 0 for eachCtrl in quotes.list(): if eachCtrl.list() == QLIST_INDICES: #self.wxIndicatorCtrl.Append(eachCtrl.name(),eachCtrl.isin()) try: self.wxIndicatorCtrl.Append(eachCtrl.name(), eachCtrl.isin()) except: print 'eachCtrl:', eachCtrl if eachCtrl.isin() == self.m_indice: idx = count count = count + 1 self.wxIndicatorCtrl.SetSelection(idx) # row6 : currency label = wx.StaticText(pane, -1, message('portfolio_currency')) label.SetSizerProps(valign='center') self.wxCurrencyCtrl = wx.ComboBox(pane, -1, "", size=wx.Size(80, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) wx.EVT_COMBOBOX(self, self.wxCurrencyCtrl.GetId(), self.OnCurrency) count = 0 for eachCtrl in list_of_currencies(): #print eachCtrl self.wxCurrencyCtrl.Append(eachCtrl, eachCtrl) if eachCtrl == self.m_currency: idx = count count = count + 1 self.wxCurrencyCtrl.SetSelection(idx) # row7 : default vat label = wx.StaticText(pane, -1, message('portfolio_vat')) label.SetSizerProps(valign='center') self.wxVATCtrl = masked.Ctrl(pane, integerWidth=5, fractionWidth=3, controlType=masked.controlTypes.NUMBER, allowNegative=False, groupChar=getGroupChar(), decimalChar=getDecimalChar()) self.wxVATCtrl.SetValue((self.m_vat - 1) * 100) # Row8 : trading style label = wx.StaticText(container, -1, message('prop_tradingstyle')) btnpane = sc.SizedPanel(container, -1, style=wx.RAISED_BORDER | wx.CAPTION | wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN | wx.NO_FULL_REPAINT_ON_RESIZE) btnpane.SetSizerType("form") btnpane.SetSizerProps(expand=True) label = wx.StaticText(btnpane, -1, message('prop_term')) label.SetSizerProps(valign='center') self.wxTermCtrl = masked.Ctrl(btnpane, integerWidth=3, fractionWidth=0, controlType=masked.controlTypes.NUMBER, allowNegative=False, groupChar=getGroupChar(), decimalChar=getDecimalChar()) self.wxTermCtrl.SetValue(self.m_term) label = wx.StaticText(btnpane, -1, message('prop_risk')) label.SetSizerProps(valign='center') self.wxRiskCtrl = masked.Ctrl(btnpane, integerWidth=3, fractionWidth=0, controlType=masked.controlTypes.NUMBER, allowNegative=False, groupChar=getGroupChar(), decimalChar=getDecimalChar()) self.wxRiskCtrl.SetValue(self.m_risk) # row 9 : separator line = wx.StaticLine(container, -1, size=(20, -1), style=wx.LI_HORIZONTAL) line.SetSizerProps(expand=True) # Last Row : OK and Cancel btnpane = sc.SizedPanel(container, -1) btnpane.SetSizerType("horizontal") btnpane.SetSizerProps(expand=True) if operation == 'create': msg = message('portfolio_properties_btncreate') msgdesc = message('portfolio_properties_btncreatedesc') fnt = self.OnValid elif operation == 'delete': msg = message('portfolio_properties_btndelete') msgdesc = message('portfolio_properties_btndeletedesc') fnt = self.OnValid elif operation == 'edit': msg = message('portfolio_properties_btnedit') msgdesc = message('portfolio_properties_btneditdesc') fnt = self.OnValid elif operation == 'rename': msg = message('portfolio_properties_btnrename') msgdesc = message('portfolio_properties_btnrenamedesc') fnt = self.OnValid else: msg = message('valid') msgdesc = message('valid_desc') fnt = self.OnValid # 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, fnt) # CANCEL btn = wx.Button(btnpane, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) # enable some fields based on the operation if operation == 'edit': # edit: filename, market and currency can't be changed self.wxFilenameCtrl.Enable(False) self.wxMarketCtrl.Enable(False) self.wxCurrencyCtrl.Enable(False) #self.wxNameCtrl.SetFocus() elif operation == 'delete': # display only self.wxFilenameCtrl.Enable(False) self.wxNameCtrl.Enable(False) self.wxAccountRefCtrl.Enable(False) self.wxMarketCtrl.Enable(False) self.wxCurrencyCtrl.Enable(False) self.wxVATCtrl.Enable(False) self.wxTermCtrl.Enable(False) self.wxRiskCtrl.Enable(False) self.wxIndicatorCtrl.Enable(False) #self.btn.SetFocus() elif operation == 'rename': # filename only self.wxNameCtrl.Enable(False) self.wxAccountRefCtrl.Enable(False) self.wxMarketCtrl.Enable(False) self.wxCurrencyCtrl.Enable(False) self.wxVATCtrl.Enable(False) self.wxTermCtrl.Enable(False) self.wxRiskCtrl.Enable(False) self.wxIndicatorCtrl.Enable(False) #self.btn.SetFocus() else: # everything is editable pass # 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())