class AutomataState(JCircle): def __init__(self, name): JCircle.__init__(self, 200) self._label = Label(name) self._label.translate(-self._label.getWidth() / 2.0, -self._label.getHeight() / 2.0) self._links_to = [] self._arcs = [] def get_name(self): return self._label.get_text() def add_arc(self, a): self._arcs.append(a) def translate(self, tx, ty, lock_control_points=False): JCircle.translate(self, tx, ty) if not lock_control_points: for arc in self._links_to: arc.translate_2central_points(tx, ty) def set_name(self, name): self._label.set_text(name) def get_selected(self, x, y): result = None if self._visible: if self.isSelected(x, y): return self return result def add_link_to(self, link): self._links_to.append(link) def paint(self, paintHidden=False): #self.setOpenGlColor() if self.getVisibility() or paintHidden: JCircle.paint(self) glPushMatrix() glTranslatef(self._tx, self._ty, 0) self._label.paint() glPopMatrix()
class Attribute(JCircle): def __init__(self, name): JCircle.__init__(self, 40) self._label = Label(name) self._primary_key = False def setPrimaryKey(self, value): self._primary_key = value if value: self._background_color = QColor(255,255,255) else: self._background_color = QColor(0, 0, 0) def get_name(self): return self._label.get_text() def set_name(self, name): self._label.set_text(name) def get_selected(self, x, y): result = None if self._visible or True: result = self._label.get_selected(x - self._tx, y - self._ty) if result != None: return result elif self.isSelected(x, y): return self return result def paint(self, paintHidden=False): #self.setOpenGlColor() if self.getVisibility() or paintHidden: JCircle.paint(self) glPushMatrix() glTranslatef(self._tx, self._ty, 0) self._label.paint() glPopMatrix()