def drawPanel(self): """Draws the Risk panel """ self.topSizer = wx.BoxSizer(wx.VERTICAL) self.sizer1 = wx.BoxSizer(wx.HORIZONTAL) self.sizer2 = wx.BoxSizer(wx.HORIZONTAL) self.btn = wx.Button(self, label="Refresh Front data") self.btn.Bind(wx.EVT_BUTTON, self.onRefreshFrontData) #self.btn2 = wx.Button(self, label="Fill USD PV") #self.btn2.Bind(wx.EVT_BUTTON, self.onFillEODPrices) btn3 = wx.Button(self, label = "Print risk tree") btn3.Bind(wx.EVT_BUTTON, self.onPrintRiskTree) self.sizer1.Add(self.btn, 1, wx.ALL, 2) #self.sizer1.Add(self.btn2, 0.5, wx.ALL, 2) self.sizer1.Add(btn3, 0.5, wx.ALL, 2) self.lastUpdateTime = wx.TextCtrl(self,-1,self.lastUpdateString()) self.sizer2.Add(self.lastUpdateTime,1,wx.ALL,2) self.riskTree = RiskTree(self,self.riskTreeManager) self.sizerRiskH = wx.BoxSizer(wx.HORIZONTAL) self.sizerRiskH.Add(self.riskTree,proportion=1,flag=wx.EXPAND) self.sizerRiskV = wx.BoxSizer(wx.VERTICAL) self.sizerRiskV.Add(self.sizerRiskH,proportion=1,flag=wx.EXPAND) self.topSizer.Add(self.sizer1, 0, wx.ALL|wx.EXPAND, 2) self.topSizer.Add(self.sizer2, 0, wx.ALL|wx.EXPAND, 2) self.topSizer.Add(self.sizerRiskV, 1, wx.ALL|wx.EXPAND, 5) self.SetSizer(self.topSizer) self.Layout() pass
class RiskTabPanel(wx.Panel): """RiskTabPanel class: Class to define the Risk tab panel Attributes: self.tradeHistory : TradeHistory object, see TradeHistoryAnalysis.TradeHistory self.parentnotebook : wx.Python notebook object self.mainframe : wx.Python frame object self.riskTree : riskTreeView > riskTree class instance Methods: __init__() lastUpdateString() drawPanel() onDeepRefreshFrontData() onRefreshFrontData() updatePositions() onFillEODPrices() onRiskTreeQuery() """ #---------------------------------------------------------------------- def __init__(self, riskTreeManager, parentnotebook, mainframe): """ Keyword argument: tradeHistory : TradeHistory object, see TradeHistoryAnalysis.TradeHistory parentnotebook : wx.Python notebook object mainframe : wx.Python frame object """ pub.subscribe(self.updatePositions, "RISKTREE_REDRAWN") self.riskTreeManager = riskTreeManager self.parentnotebook = parentnotebook self.mainframe = mainframe wx.Panel.__init__(self, parent=parentnotebook) self.drawPanel() def lastUpdateString(self): """Defines lastUpdateString variable """ if self.riskTreeManager.th.df['Date'].iloc[-1]!=datetime.datetime.today().strftime('%d/%m/%y'): return 'Last updated on ' + self.riskTreeManager.th.df['Date'].iloc[-1] + '. Ctrl-F to expand a bond or an issuer.' else: return 'Last updated today at ' + datetime.datetime.now().strftime('%H:%M') + '. Ctrl-F to expand a bond or an issuer.' def drawPanel(self): """Draws the Risk panel """ self.topSizer = wx.BoxSizer(wx.VERTICAL) self.sizer1 = wx.BoxSizer(wx.HORIZONTAL) self.sizer2 = wx.BoxSizer(wx.HORIZONTAL) self.btn = wx.Button(self, label="Refresh Front data") self.btn.Bind(wx.EVT_BUTTON, self.onRefreshFrontData) #self.btn2 = wx.Button(self, label="Fill USD PV") #self.btn2.Bind(wx.EVT_BUTTON, self.onFillEODPrices) btn3 = wx.Button(self, label = "Print risk tree") btn3.Bind(wx.EVT_BUTTON, self.onPrintRiskTree) self.sizer1.Add(self.btn, 1, wx.ALL, 2) #self.sizer1.Add(self.btn2, 0.5, wx.ALL, 2) self.sizer1.Add(btn3, 0.5, wx.ALL, 2) self.lastUpdateTime = wx.TextCtrl(self,-1,self.lastUpdateString()) self.sizer2.Add(self.lastUpdateTime,1,wx.ALL,2) self.riskTree = RiskTree(self,self.riskTreeManager) self.sizerRiskH = wx.BoxSizer(wx.HORIZONTAL) self.sizerRiskH.Add(self.riskTree,proportion=1,flag=wx.EXPAND) self.sizerRiskV = wx.BoxSizer(wx.VERTICAL) self.sizerRiskV.Add(self.sizerRiskH,proportion=1,flag=wx.EXPAND) self.topSizer.Add(self.sizer1, 0, wx.ALL|wx.EXPAND, 2) self.topSizer.Add(self.sizer2, 0, wx.ALL|wx.EXPAND, 2) self.topSizer.Add(self.sizerRiskV, 1, wx.ALL|wx.EXPAND, 5) self.SetSizer(self.topSizer) self.Layout() pass def onRefreshFrontData(self,event): """Refreshes Front data. Function is called when the 'Refresh Front data' button is clicked. """ self.btn.Disable() if not self.riskTreeManager.EODPricesFilled: self.onFillEODPrices(event) self.lastUpdateTime.SetValue('Requested data update, please wait...') self.mainframe.onTodayTrades(event) pass def updatePositions(self,message=None): """event listener for the POSITION_UPDATE event. Updates position when the event is publicised """ #self.riskTreeManager.onUpdateTree() #self.parentnotebook.SetSelection(1) if message.data == 'RiskTree': self.lastUpdateTime.SetValue(self.lastUpdateString()) self.btn.Enable() pass def onFillEODPrices(self,event): """Function is called when the 'Fill USD PV' button is clicked. """ #self.btn2.Disable() x=self.lastUpdateTime.GetValue() self.lastUpdateTime.SetValue('Refreshing EOD prices from Front...') if not self.mainframe.connectedToFront: self.mainframe.onLogInFront(event) #fc = FO_Toolkit.FrontConnection(self.mainframe.front_username,self.mainframe.front_password) if not self.riskTreeManager.EODPricesFilled: #self.riskTreeManager.onFillEODPrices(fc) self.riskTreeManager.onFillEODPrices(self.mainframe.front_connection) self.lastUpdateTime.SetValue(x) pass def onPrintRiskTree(self, event): """Function to call RiskTreeView.takeScreenshot() to take a screenshot of the risk tree. """ self.riskTree.takeScreenshot() def onRiskTreeQuery(self, event, item): """Calls the RiskTreeView > RiskTree.onRiskTreeQuery function """ self.riskTree.onRiskTreeQuery(item) pass