def __init__(self, parent,id,title): self.m_id = wx.NewId() wx.Frame.__init__(self,None,self.m_id, title, size = (640,480), style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE) iTrade_wxFrame.__init__(self,parent,'currencies') iTrade_wxLiveCurrencyMixin.__init__(self) # the menu self.filemenu = wx.Menu() #self.filemenu.Append(ID_SAVE,message('main_save'),message('main_desc_save')) #self.filemenu.AppendSeparator() self.filemenu.Append(ID_CLOSE,message('main_close'),message('main_desc_close')) self.viewmenu = wx.Menu() self.viewmenu.Append(ID_CONVERT, message('main_view_convert'),message('main_view_desc_convert')) self.viewmenu.Append(ID_REFRESH, message('main_view_refresh'),message('main_view_desc_refresh')) self.viewmenu.AppendCheckItem(ID_AUTOREFRESH, message('main_view_autorefresh'),message('main_view_desc_autorefresh')) # default checking self.updateCheckItems() # Creating the menubar menuBar = wx.MenuBar() # Adding the "<x>menu" to the MenuBar menuBar.Append(self.filemenu,message('currency_menu_file')) menuBar.Append(self.viewmenu,message('currency_menu_view')) # Adding the MenuBar to the Frame content self.SetMenuBar(menuBar) # Toolbar self.m_toolbar = iTradeCurrencyToolbar(self, wx.NewId()) # default list is quotes self.m_list = iTradeCurrenciesMatrix(self, wx.NewId(), style = wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.LC_HRULES, list=list_of_currencies()) #self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) self.m_list.SetFont(wx.Font(10, wx.SWISS , wx.NORMAL, wx.NORMAL)) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MENU(self, ID_CLOSE, self.OnClose) wx.EVT_MENU(self, ID_CONVERT, self.OnConvert) wx.EVT_MENU(self, ID_REFRESH, self.OnRefresh) wx.EVT_MENU(self, ID_AUTOREFRESH, self.OnAutoRefresh) wx.EVT_WINDOW_DESTROY(self, self.OnDestroy) wx.EVT_CLOSE(self, self.OnCloseWindow) EVT_UPDATE_LIVECURRENCY(self, self.OnLiveCurrency) # refresh full view after window init finished EVT_POSTINIT(self, self.OnPostInit) wx.PostEvent(self,PostInitEvent()) self.Show(True)
def refreshLine(self,key,x,disp): used ,rate = currencies.m_currencies[key] #self.m_list.SetStringItem(x,IDC_RATE,"%.4f" % rate) list = list_of_currencies() curTo = key[:3] indTo = [i for i in range(len(list)) if list[i] == curTo][0] curFrom = key[3:] indFrom = [i for i in range(len(list)) if list[i] == curFrom][0] self.m_list.SetCellValue(indFrom, indTo, "%.4f" % rate)
def refreshLine(self, key, x, disp): used, rate = currencies.m_currencies[key] #self.m_list.SetStringItem(x,IDC_RATE,"%.4f" % rate) list = list_of_currencies() curTo = key[:3] indTo = [i for i in range(len(list)) if list[i] == curTo][0] curFrom = key[3:] indFrom = [i for i in range(len(list)) if list[i] == curFrom][0] self.m_list.SetCellValue(indFrom, indTo, "%.4f" % rate)
def populate(self,bDuringInit): info('populate duringinit=%d'%bDuringInit) # clear current population self.stopLiveCurrency(bBusy=False) self.unregisterLiveCurrency() list = list_of_currencies() for i in range(len(list)): for j in range(len(list)): # currencies.rate format : curTo, curFrom self.m_list.SetCellValue(i, j, "%.4f" % currencies.rate(list[j], list[i])) self.m_list.SetCellAlignment(i, j, wx.ALIGN_RIGHT, wx.ALIGN_CENTER) if not bDuringInit and itrade_config.bAutoRefreshCurrencyView: self.startLiveCurrency()
def populate(self, bDuringInit): info('populate duringinit=%d' % bDuringInit) # clear current population self.stopLiveCurrency(bBusy=False) self.unregisterLiveCurrency() list = list_of_currencies() for i in range(len(list)): for j in range(len(list)): # currencies.rate format : curTo, curFrom self.m_list.SetCellValue( i, j, "%.4f" % currencies.rate(list[j], list[i])) self.m_list.SetCellAlignment(i, j, wx.ALIGN_RIGHT, wx.ALIGN_CENTER) if not bDuringInit and itrade_config.bAutoRefreshCurrencyView: self.startLiveCurrency()
def __init__(self, parent, curSelected=(0, 1)): iTradeSizedDialog.__init__(self, parent, -1, message('converter_title'), size=(420, 420), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("form") pane.SetSizerProps(expand=True) # Row 1 : Org Currency Value self.wxOrgVal = masked.Ctrl(pane, integerWidth=9, fractionWidth=2, controlType=masked.controlTypes.NUMBER, allowNegative=False, groupDigits=True, groupChar=getGroupChar(), decimalChar=getDecimalChar(), selectOnEntry=True) self.wxOrgVal.SetValue(1) masked.EVT_NUM(self, self.wxOrgVal.GetId(), self.OnValueChange) self.wxOrgCur = wx.ComboBox(pane, -1, "", size=wx.Size(80, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) list = list_of_currencies() (curFrom, curTo) = curSelected for c in list: self.wxOrgCur.Append(c, c) self.wxOrgCur.SetSelection(curFrom) self.m_orgcur = list[curFrom] wx.EVT_COMBOBOX(self, self.wxOrgCur.GetId(), self.OnOrgCurrency) # Row 2 : Dest Currency Value self.wxDestVal = wx.StaticText(pane, -1, "", size=(100, -1), style=wx.ALIGN_RIGHT | wx.ST_NO_AUTORESIZE) self.wxDestVal.SetLabel('') self.wxDestVal.SetSizerProps(valign='center') self.wxDestCur = wx.ComboBox(pane, -1, "", size=wx.Size(80, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) for c in list: self.wxDestCur.Append(c, c) self.wxDestCur.SetSelection(curTo) self.m_destcur = list[curTo] wx.EVT_COMBOBOX(self, self.wxDestCur.GetId(), self.OnDestCurrency) # 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(self) # CLOSE btn = wx.Button(btnpane, wx.ID_CANCEL, message('close')) btn.SetHelpText(message('close_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()) EVT_UPDATE_CONVERT(self, self.OnUpdateConvert) # convert now self.convertValue()
def __init__(self, parent, curSelected=(0, 1)): iTradeSizedDialog.__init__(self,parent,-1,message('converter_title'), size=(420, 420),style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("form") pane.SetSizerProps(expand=True) # Row 1 : Org Currency Value self.wxOrgVal = masked.Ctrl(pane, integerWidth=9, fractionWidth=2, controlType=masked.controlTypes.NUMBER, allowNegative = False, groupDigits = True, groupChar=getGroupChar(), decimalChar=getDecimalChar(), selectOnEntry=True ) self.wxOrgVal.SetValue(1) masked.EVT_NUM(self, self.wxOrgVal.GetId(), self.OnValueChange) self.wxOrgCur = wx.ComboBox(pane,-1, "", size=wx.Size(80,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) list = list_of_currencies() (curFrom, curTo) = curSelected for c in list: self.wxOrgCur.Append(c,c) self.wxOrgCur.SetSelection(curFrom) self.m_orgcur = list[curFrom] wx.EVT_COMBOBOX(self,self.wxOrgCur.GetId(),self.OnOrgCurrency) # Row 2 : Dest Currency Value self.wxDestVal = wx.StaticText(pane, -1, "", size=(100,-1), style = wx.ALIGN_RIGHT | wx.ST_NO_AUTORESIZE) self.wxDestVal.SetLabel('') self.wxDestVal.SetSizerProps(valign='center') self.wxDestCur = wx.ComboBox(pane,-1, "", size=wx.Size(80,-1), style=wx.CB_DROPDOWN|wx.CB_READONLY) for c in list: self.wxDestCur.Append(c,c) self.wxDestCur.SetSelection(curTo) self.m_destcur = list[curTo] wx.EVT_COMBOBOX(self,self.wxDestCur.GetId(),self.OnDestCurrency) # 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(self) # CLOSE btn = wx.Button(btnpane, wx.ID_CANCEL, message('close')) btn.SetHelpText(message('close_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()) EVT_UPDATE_CONVERT(self, self.OnUpdateConvert) # convert now self.convertValue()
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, 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, id, title): self.m_id = wx.NewId() wx.Frame.__init__(self, None, self.m_id, title, size=(640, 480), style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE) iTrade_wxFrame.__init__(self, parent, 'currencies') iTrade_wxLiveCurrencyMixin.__init__(self) # the menu self.filemenu = wx.Menu() #self.filemenu.Append(ID_SAVE,message('main_save'),message('main_desc_save')) #self.filemenu.AppendSeparator() self.filemenu.Append(ID_CLOSE, message('main_close'), message('main_desc_close')) self.viewmenu = wx.Menu() self.viewmenu.Append(ID_CONVERT, message('main_view_convert'), message('main_view_desc_convert')) self.viewmenu.Append(ID_REFRESH, message('main_view_refresh'), message('main_view_desc_refresh')) self.viewmenu.AppendCheckItem(ID_AUTOREFRESH, message('main_view_autorefresh'), message('main_view_desc_autorefresh')) # default checking self.updateCheckItems() # Creating the menubar menuBar = wx.MenuBar() # Adding the "<x>menu" to the MenuBar menuBar.Append(self.filemenu, message('currency_menu_file')) menuBar.Append(self.viewmenu, message('currency_menu_view')) # Adding the MenuBar to the Frame content self.SetMenuBar(menuBar) # Toolbar self.m_toolbar = iTradeCurrencyToolbar(self, wx.NewId()) # default list is quotes self.m_list = iTradeCurrenciesMatrix( self, wx.NewId(), style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.LC_HRULES, list=list_of_currencies()) #self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) self.m_list.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL)) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MENU(self, ID_CLOSE, self.OnClose) wx.EVT_MENU(self, ID_CONVERT, self.OnConvert) wx.EVT_MENU(self, ID_REFRESH, self.OnRefresh) wx.EVT_MENU(self, ID_AUTOREFRESH, self.OnAutoRefresh) wx.EVT_WINDOW_DESTROY(self, self.OnDestroy) wx.EVT_CLOSE(self, self.OnCloseWindow) EVT_UPDATE_LIVECURRENCY(self, self.OnLiveCurrency) # refresh full view after window init finished EVT_POSTINIT(self, self.OnPostInit) wx.PostEvent(self, PostInitEvent()) self.Show(True)
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())