Package horizons :: Package gui :: Package widgets :: Module fpsdisplay
[hide private]
[frames] | no frames]

Source Code for Module horizons.gui.widgets.fpsdisplay

 1  # ################################################### 
 2  # Copyright (C) 2008-2017 The Unknown Horizons Team 
 3  # team@unknown-horizons.org 
 4  # This file is part of Unknown Horizons. 
 5  # 
 6  # Unknown Horizons is free software; you can redistribute it and/or modify 
 7  # it under the terms of the GNU General Public License as published by 
 8  # the Free Software Foundation; either version 2 of the License, or 
 9  # (at your option) any later version. 
10  # 
11  # This program is distributed in the hope that it will be useful, 
12  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
13  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
14  # GNU General Public License for more details. 
15  # 
16  # You should have received a copy of the GNU General Public License 
17  # along with this program; if not, write to the 
18  # Free Software Foundation, Inc., 
19  # 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
20  # ################################################### 
21   
22  from fife.extensions.pychan.widgets import ABox, Label 
23   
24  import horizons.globals 
25  from horizons.engine import Fife 
26  from horizons.extscheduler import ExtScheduler 
27   
28   
29 -class FPSDisplay(ABox):
30 """Display the frames per second. 31 32 Updates once a second if visible. 33 """ 34
35 - def __init__(self):
36 super().__init__() 37 38 self._label = Label(text="- - -") 39 self.addChild(self._label) 40 self.stylize('menu') 41 self.position_technique = "left:bottom" 42 43 self._timemanager = horizons.globals.fife.engine.getTimeManager()
44
45 - def _update(self):
46 fps = 1000 / self._timemanager.getAverageFrameTime() 47 self._label.text = "FPS: {:.1f}".format(fps) 48 self.resizeToContent() 49 self.toggle() # hide and show again to fix position (pychan...) 50 self.toggle()
51
52 - def show(self):
53 ExtScheduler().add_new_object(self._update, self, loops=-1) 54 return super().show()
55
56 - def hide(self):
57 ExtScheduler().rem_call(self, self._update) 58 return super().hide()
59
60 - def toggle(self):
61 if self.isSetVisible(): 62 self.hide() 63 else: 64 self.show()
65