1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- """
- Created on 22-04-2013
- @author: citan
- """
- import pygame
- from pimonitor.cu.PMCUParameter import PMCUParameter
- class PMSingleWindow(object):
- """
- classdocs
- """
- def __init__(self, param):
- self._fg_color = pygame.Color(230, 166, 0)
- self._fg_color_dim = pygame.Color(200, 140, 0)
- self._bg_color = pygame.Color(0, 0, 0)
- self._param = param
- self._packets = None
- self._x_offset = 0
- self._sum_value = 0.0
- self._readings = 0
- def set_surface(self, surface):
- if surface is None:
- return
- self._surface = surface
- self._width = self._surface.get_width()
- self._height = self._surface.get_height()
- self._title_font_size = int(self._surface.get_height() / 12)
- self._value_font_size = int(self._surface.get_height() / 1.8)
- self._unit_font_size = int(self._surface.get_height() / 4)
- self._title_font = pygame.font.SysFont(pygame.font.get_default_font(), self._title_font_size)
- self._value_font = pygame.font.SysFont(pygame.font.get_default_font(), self._value_font_size)
- self._unit_font = pygame.font.SysFont(pygame.font.get_default_font(), self._unit_font_size)
- self._font_aa = 1
- self._title_lbl = self._title_font.render(self._param.get_name(), self._font_aa, self._fg_color)
- self._unit_lbl = self._unit_font.render(self._param.get_default_unit(), self._font_aa, self._fg_color_dim)
- self._end_x_offset = self._width - self._unit_lbl.get_width() - 10
- def render(self):
- value = "??"
- if self._packets is not None:
- if self._param.get_cu_type() == PMCUParameter.CU_TYPE_CALCULATED_PARAMETER():
- value = self._param.get_calculated_value(self._packets)
- else:
- value = self._param.get_value(self._packets[0])
- self._readings += 1
- try:
- self._sum_value += float(value)
- except:
- self._sum_value = 0
- value_lbl_width = self._value_font.render(value, self._font_aa, self._fg_color).get_width()
- self._x_offset = (self._width - value_lbl_width) / 2
- value_lbl = self._value_font.render(value, self._font_aa, self._fg_color)
- avg_value_lbl = self._unit_font.render(str(self._sum_value/self._readings), self._font_aa, self._fg_color_dim)
- self._surface.blit(self._title_lbl, (2, 2))
- self._surface.blit(value_lbl, (self._x_offset, 10 + self._title_font_size))
- self._surface.blit(self._unit_lbl, (self._end_x_offset, 10 + self._title_font_size + self._value_font_size))
- self._surface.blit(avg_value_lbl, (200, 200))
- def set_packets(self, packets):
- self._packets = packets
- def get_parameter(self):
- return self._param
|