def ApplyAttributes(self, attributes): proj = trinity.Tr2ProjectBoundingBoxBracket() self.projectBracket = proj cs = uicore.uilib.bracketCurveSet cs.curves.append(self.projectBracket) self.leftBinding = trinity.CreatePythonBinding(cs, proj, 'projectedX', self, 'scaledLeft') self.topBinding = trinity.CreatePythonBinding(cs, proj, 'projectedY', self, 'scaledTop') self.widthBinding = trinity.CreatePythonBinding( cs, proj, 'projectedWidth', self, 'scaledWidth') self.heightBinding = trinity.CreatePythonBinding( cs, proj, 'projectedHeight', self, 'scaledHeight') Container.ApplyAttributes(self, attributes) self.trackObject = attributes.get('trackObject', None) self.screenMargin = attributes.get('screenMargin', self.default_screenMargin) pb = self.projectBracket if self.width: pb.minProjectedWidth = pb.maxProjectedWidth = self.width else: pb.minProjectedWidth = attributes.get('minWidth', self.default_minWidth) pb.maxProjectedWidth = attributes.get('maxWidth', self.default_maxWidth) if self.height: pb.minProjectedHeight = pb.maxProjectedHeight = self.height else: pb.minProjectedHeight = attributes.get('minHeight', self.default_minHeight) pb.maxProjectedHeight = attributes.get('maxHeight', self.default_maxHeight)
def Play(self, curve, obj, attrName, loops=1, callback=None, sleep=False, curveSet=None): curve.cycle = loops is uiconst.ANIM_REPEAT or loops > 1 if not curveSet: curveSet = self.CreateCurveSet(useRealTime=True) curveSet.name = getattr(obj, 'name', str(id(obj))) curveSet.curves.append(curve) self.RegisterCurvesetForObject(obj, curveSet, attrName) if hasattr(obj, '__iroot__'): binding = trinity.CreateBinding(curveSet, curve, 'currentValue', obj, attrName) else: obj.isAnimated = True binding = trinity.CreatePythonBinding(curveSet, curve, 'currentValue', obj, attrName) binding.name = getattr(obj, 'name', str(id(obj))) + '_' + attrName curveSet.Play() if loops == uiconst.ANIM_REPEAT: return curveSet duration = loops * curveSet.GetMaxCurveDuration() duration += self.GetMaxTimeOffset(curveSet) if callback: curveSet.StopAfterWithCallback(duration, callback) else: curveSet.StopAfter(duration) if sleep: blue.pyos.synchro.SleepWallclock(duration * 1000) return curveSet
def _Play(self, curve, obj, attrName, loops=1, callback=None, sleep=False, curveSet=None): if not isinstance(obj, uicls.Base): raise ValueError( "Can't animate '%s' attribute of %s. Class must inherit from uicls.Base" % (attrName, obj)) curve.cycle = loops is ANIM_REPEAT or loops > 1 if not curveSet: curveSet = self._CreateCurveSet() curveSet.name = obj.name curveSet.curves.append(curve) obj.AttachAnimationCurveSet(curveSet, attrName) binding = trinity.CreatePythonBinding(curveSet, curve, 'currentValue', obj, attrName) binding.name = obj.name + '_' + attrName curveSet.Play() if loops == ANIM_REPEAT: return curveSet duration = loops * curveSet.GetMaxCurveDuration() duration += self.GetMaxTimeOffset(curveSet) if callback: curveSet.StopAfterWithCallback(duration, callback, ()) else: curveSet.StopAfter(duration) if sleep: blue.pyos.synchro.SleepSim(duration * 1000) return curveSet
def SetupSharedBlinkingCurve(self, cuverSetName, fromCurveValue, toCurveValue, duration, *args): curveSet = getattr(uicore, cuverSetName, None) if curveSet: curve = curveSet.curves[0] else: curveSet = trinity.TriCurveSet() setattr(uicore, cuverSetName, curveSet) setattr(curveSet, 'name', cuverSetName) trinity.device.curveSets.append(curveSet) curveSet.Play() curve = trinity.Tr2ScalarCurve() curve.name = 'blinking_curve' curve.length = duration curve.startValue = fromCurveValue curve.endValue = fromCurveValue curve.AddKey(duration / 2.0, toCurveValue) curve.cycle = True curve.interpolation = trinity.TR2CURVE_LINEAR curveSet.curves.append(curve) if getattr(self, 'blinkBinding', None) is not None: curveSet.bindings.remove(self.blinkBinding) self.blinkBinding = trinity.CreatePythonBinding(curveSet, curve, 'currentValue', self, 'opacity')