Something went wrong on our end
-
stefan authored
- Added Images to Intro git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2008 5a81b35b-ba03-0410-adc8-b2c5c5119f08
stefan authored- Added Images to Intro git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2008 5a81b35b-ba03-0410-adc8-b2c5c5119f08
hud.py 3.71 KiB
import math
import time
from ost import gfx
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtOpenGL import *
class HUD(QObject):
def __init__(self, parent=None):
QObject.__init__(self,parent)
self.objects = list()
def Add(self, hud_object):
if hud_object in self.objects:
self.objects.remove(hud_object)
self.objects.append(hud_object)
hud_object.Appended(self)
self.emit(SIGNAL('HUDChanged()'))
def Remove(self, hud_object):
if hud_object in self.objects:
self.objects.remove(hud_object)
self.emit(SIGNAL('HUDChanged()'))
def Paint(self, painter):
for hud_object in self.objects:
hud_object.Paint(painter)
def Clear(self):
del(self.objects[:])
class HUDObject(QObject):
def __init__(self, time, parent=None):
QObject.__init__(self, parent)
self.time = time
self.timer = QTimer()
self.timer.setSingleShot(True)
self.hud = None
self.endtime = None
QObject.connect(self.timer, SIGNAL("timeout()"), self.Timeout)
def Appended(self, hud):
self.hud = hud
if self.time >= 0:
self.timer.start(self.time)
self.endtime = float(time.time()+(self.time)/1000.0)
def Timeout(self):
self.timer.stop()
if self.hud is not None:
self.hud.Remove(self)
self.emit(SIGNAL('Finished()'))
def Reset(self):
self.timer.stop()
if self.hud is not None:
self.hud.Add(self)
class TextHUDObject(HUDObject):
def __init__(self, text, pos, time, color=QColor(255,255,255), font=QFont("Verdana"), parent=None):
HUDObject.__init__(self,time,parent)
self.text = text
self.pos = pos
self.rect = None
self.color = color
self.font = font
def Paint(self, painter):
if self.endtime is not None:
rem_time = (self.endtime-float(time.time()))*1000.0
if rem_time > 0:
self.color.setAlpha((rem_time/self.time)*255)
painter.setPen(QPen(self.color, Qt.SolidLine))
painter.setFont(self.font)
if self.pos is not None:
painter.drawText(self.pos, self.text)
if self.rect is not None:
painter.drawText(self.rect, self.align, self.text)
class RectTextHUDObject(HUDObject):
def __init__(self, text, rect, time, align=Qt.AlignCenter, color=QColor(255,255,255), font=QFont("Verdana"), parent=None):
HUDObject.__init__(self,time,parent)
self.text = text
self.rect = rect
self.align = align
self.color = color
self.font = font
def Paint(self, painter):
if self.endtime is not None:
rem_time = (self.endtime-float(time.time()))*1000.0
if rem_time > 0:
self.color.setAlpha((rem_time/self.time)*255)
painter.setPen(QPen(self.color, Qt.SolidLine))
painter.setFont(self.font)
painter.drawText(self.rect, self.align, self.text)
class RectHUDObject(HUDObject):
def __init__(self, time, rect, fade=False, bg_color=QColor(255,255,255), border_color=QColor(255,255,255), parent=None):
HUDObject.__init__(self,time,parent)
self.rect = rect
self.fade = fade
self.bg_color = bg_color
self.border_color = border_color
def Paint(self, painter):
if self.fade:
rem_time = (self.endtime-float(time.time()))*1000.0
if rem_time >0:
alpha = (rem_time/self.time)*255
self.bg_color.setAlpha(alpha)
self.border_color.setAlpha(alpha)
painter.setPen(self.border_color)
painter.setBrush(self.bg_color)
painter.drawRect(self.rect)
painter.setPen(QPen(self.border_color, Qt.SolidLine))
class ImgHUDObject(HUDObject):
def __init__(self, time, pos, img_loc="", parent=None):
HUDObject.__init__(self,time,parent)
self.pos = pos
self.img = QImage(img_loc)
def Paint(self, painter):
painter.drawImage(self.pos, self.img)