(self, epics_pv_name='', min_value=0, max_value=100, *args, **kwargs)
| 290 | text_actual_value = None # the gui.SvgText value indicator |
| 291 | |
| 292 | def __init__(self, epics_pv_name='', min_value=0, max_value=100, *args, **kwargs): |
| 293 | w = kwargs.get("style", {}).get("width", kwargs.get("width", 100)) |
| 294 | h = kwargs.get("style", {}).get("height", kwargs.get("height", 100)) |
| 295 | if 'width' in kwargs.keys(): |
| 296 | del kwargs["width"] |
| 297 | if 'height' in kwargs.keys(): |
| 298 | del kwargs["height"] |
| 299 | default_style = {'position':'absolute','left':'10px','top':'10px'} |
| 300 | default_style.update(kwargs.get('style',{})) |
| 301 | kwargs['style'] = default_style |
| 302 | super(EPICSValueGaugeWidget, self).__init__(width=w, height=h, *args, **kwargs) |
| 303 | self.epics_pv_name = epics_pv_name |
| 304 | |
| 305 | #the indicator |
| 306 | self.indicator = gui.SvgPolygon(_maxlen=4) |
| 307 | self.indicator.set_stroke(width=0.001, color='red') |
| 308 | self.indicator.set_fill('red') |
| 309 | |
| 310 | indicator_pin_radius = 0.05 |
| 311 | self.indicator_pin = gui.SvgCircle(0,0.5,indicator_pin_radius) |
| 312 | self.indicator_pin.set_fill('black') |
| 313 | |
| 314 | #the value signs |
| 315 | scale = max_value-min_value |
| 316 | radius_min = 0.4 |
| 317 | radius_max = 0.5 |
| 318 | for i in range(0,10): |
| 319 | angle = math.pi/9*i |
| 320 | #sign = gui.SvgLine(math.cos(angle)*radius_min, radius_max-math.sin(angle)*radius_min, math.cos(angle)*radius_max, radius_max-math.sin(angle)*radius_max) |
| 321 | sign = gui.SvgLine(math.cos(angle)*(radius_min - 0.01 + 0.1*(i+1)/10), radius_max-math.sin(angle)*(radius_min - 0.01 + 0.1*(i+1)/10), math.cos(angle)*radius_max, radius_max-math.sin(angle)*radius_max) |
| 322 | sign.set_stroke(0.01, 'black') |
| 323 | self.append(sign) |
| 324 | |
| 325 | #subindicators value signs |
| 326 | scale = max_value-min_value |
| 327 | radius_min = 0.4 |
| 328 | radius_max = 0.5 |
| 329 | for i in range(0,100): |
| 330 | angle = math.pi/99*i |
| 331 | #sign = gui.SvgLine(math.cos(angle)*radius_min, radius_max-math.sin(angle)*radius_min, math.cos(angle)*radius_max, radius_max-math.sin(angle)*radius_max) |
| 332 | sign = gui.SvgLine(math.cos(angle)*(radius_min - 0.01 + 0.1*(i+10)/100), radius_max-math.sin(angle)*(radius_min - 0.01 + 0.1*(i+10)/100), math.cos(angle)*radius_max, radius_max-math.sin(angle)*radius_max) |
| 333 | sign.set_stroke(0.002, 'black') |
| 334 | self.append(sign) |
| 335 | |
| 336 | font_size = 0.1 |
| 337 | self.text_min_value = gui.SvgText(-radius_max, 0.5 + font_size + 0.01, str(min_value)) |
| 338 | self.text_min_value.style['font-size'] = gui.to_pix(font_size) |
| 339 | self.text_min_value.style['text-anchor'] = "start" |
| 340 | |
| 341 | self.text_max_value = gui.SvgText(radius_max, 0.5 + font_size + 0.01, str(max_value)) |
| 342 | self.text_max_value.style['font-size'] = gui.to_pix(font_size) |
| 343 | self.text_max_value.style['text-anchor'] = "end" |
| 344 | |
| 345 | self.text_actual_value = gui.SvgText(0, 0.5 + indicator_pin_radius + font_size + 0.01, str(max_value)) |
| 346 | self.text_actual_value.style['font-size'] = gui.to_pix(font_size) |
| 347 | self.text_actual_value.style['text-anchor'] = "middle" |
| 348 | self.text_actual_value.style['font-weight'] = 'bold' |
| 349 |
nothing calls this directly
no test coverage detected