def setUpEventsGUI(): app = Piavca.getWXApp() #wx.PySimpleApp() for avatarName in Piavca.Core.getCore().getAvatarNames(): avatar = Piavca.Core.getCore().getAvatar(avatarName) events = Piavca.getEvents(avatar) if len(events) > 0: frame = wx.Frame(None, -1, title=avatarName + " Events") sizer1 = wx.BoxSizer(wx.HORIZONTAL) sizer2 = wx.BoxSizer(wx.VERTICAL) id_counter = 0 for event in events: button = wx.Button(frame, id_counter, label=event) wx.EVT_BUTTON(frame, id_counter, lambda evt, a=avatar, e=event: a.event(e)) sizer1.Add(button, 1) id_counter += 1 if id_counter % 6 == 0: sizer2.Add(sizer1, 0) sizer1 = wx.BoxSizer(wx.HORIZONTAL) sizer2.Add(sizer1, 0) frame.SetSizer(sizer2) frame.SetAutoLayout(1) sizer2.Fit(frame) frame.Show(True) frame.Layout()
def setUpEventsGUI(): app = Piavca.getWXApp() #wx.PySimpleApp() for avatarName in Piavca.Core.getCore().getAvatarNames(): avatar = Piavca.Core.getCore().getAvatar(avatarName) events = Piavca.getEvents(avatar) if len(events) > 0: frame=wx.Frame(None,-1, title=avatarName+" Events") sizer1=wx.BoxSizer(wx.HORIZONTAL) sizer2=wx.BoxSizer(wx.VERTICAL) id_counter = 0 for event in events: button=wx.Button(frame, id_counter, label=event) wx.EVT_BUTTON (frame, id_counter, lambda evt, a = avatar, e=event : a.event(e)) sizer1.Add(button,1 ) id_counter+=1 if id_counter % 6 == 0: sizer2.Add(sizer1,0) sizer1=wx.BoxSizer(wx.HORIZONTAL) sizer2.Add(sizer1,0) frame.SetSizer(sizer2) frame.SetAutoLayout(1) sizer2.Fit(frame) frame.Show(True) frame.Layout()
def saveMotions(filename, motions, element = None, doc = None, avatars=[]): writeout = 0 if element == None: impl = minidom.getDOMImplementation() doc = impl.createDocument("", "PiavcaMotions", None) element = doc.documentElement writeout = 1 allPiavca = Piavca.__dict__ #print allPiavca members_to_ignore = ["getQuatValueAtTime", "getVecValueAtTime", "getFloatValueAtTime", "getQuatValueAtTimeInternal", "getVecValueAtTimeInternal", "getFloatValueAtTimeInternal", "getMotionLength"] for avatar in avatars: avatar_el = doc.createElement("Avatar") avatar_el.setAttribute("name", avatar.getName()) avatar_el.setAttribute("position", str(avatar.getRootPosition())) q = avatar.getRootOrientation() angle = q.getAngle() axis = q.getAxis() avatar_el.setAttribute("rotation", str(angle) + " " + str(axis)) events = Piavca.getEvents(avatar) for event in events: el = doc.createElement("Event") el.setAttribute("name", event) avatar_el.appendChild(el) element.appendChild(avatar_el) for motion in motions: motiontype = None motiontypes = [] motiontypename = "unknown" for key in allPiavca.keys(): if type(allPiavca[key]) == types.TypeType and isinstance(motion, allPiavca[key]): motiontypes.append(allPiavca[key]) if motiontype == None or issubclass(allPiavca[key], motiontype): motiontype = allPiavca[key] motiontypename = key #print name, "is a", motiontypename if motiontype == None: print "Motion is of unknown type" continue if motiontype == Piavca.KeyframeMotion: print "don't save keyframe motions" continue #print motion.getName(), motiontypename el = doc.createElement(motiontypename) #el.setAttribute("name", name) #print motion.__dict__ ignorelist = set(["getStartTime", "getMotion", "getMotion1", "getMotion2"]) for mtype in motiontypes: for key in mtype.__dict__.keys(): if key[:3] == "get": #print key if key in ignorelist: continue if hasattr(motion, "set" + key[3:]): #print key method = getattr(motion, key) value = method() if type(value) == Piavca.Quat: value = str(Piavca.radToDeg(value.getAngle())) + " " + str(value.getAxis()) else: value = str(value) if key[-len("JointId"):] == "JointId" or key[-len("ExpressionId"):] == "ExpressionId" or key[-len("TrackId"):] == "TrackId": value = Piavca.Core.getCore().getTrackName(method()) # don't save empty names, it screws things up if key[3:] != "Name" or value != "": # check if its a quaternion el.setAttribute(key[3:], value) motionlist = [] if hasattr(motion, "getNumMotions"): n = motion.getNumMotions() for i in range(n): m = motion.getMotionByIndex(i) if m == None: continue m = Piavca.getRealMotionType(m) motionlist.append(m) elif hasattr(motion, "getMotion1"): m = motion.getMotion1() if m != None: m = Piavca.getRealMotionType(m) motionlist.append(m) m = motion.getMotion2() if m != None: m = Piavca.getRealMotionType(m) motionlist.append(m) elif hasattr(motion, "getMotion"): m = motion.getMotion() if m != None: m = Piavca.getRealMotionType(m) motionlist.append(m) for m in motionlist: if m.getName() != "": sub_el = doc.createElement("Motion") sub_el.setAttribute("name", m.getName()) el.appendChild(sub_el) else: saveMotions(filename, [m], el, doc) element.appendChild(el) file = open(filename, "w") doc.writexml(file, "", "\t", "\n") file.close()
def getEvents(self): if self.avatar: return Piavca.getEvents(self.avatar) else: return []
def saveMotions(filename, motions, element=None, doc=None, avatars=[]): writeout = 0 if element == None: impl = minidom.getDOMImplementation() doc = impl.createDocument("", "PiavcaMotions", None) element = doc.documentElement writeout = 1 allPiavca = Piavca.__dict__ #print allPiavca members_to_ignore = [ "getQuatValueAtTime", "getVecValueAtTime", "getFloatValueAtTime", "getQuatValueAtTimeInternal", "getVecValueAtTimeInternal", "getFloatValueAtTimeInternal", "getMotionLength" ] for avatar in avatars: avatar_el = doc.createElement("Avatar") avatar_el.setAttribute("name", avatar.getName()) avatar_el.setAttribute("position", str(avatar.getRootPosition())) q = avatar.getRootOrientation() angle = q.getAngle() axis = q.getAxis() avatar_el.setAttribute("rotation", str(angle) + " " + str(axis)) events = Piavca.getEvents(avatar) for event in events: el = doc.createElement("Event") el.setAttribute("name", event) avatar_el.appendChild(el) element.appendChild(avatar_el) for motion in motions: motiontype = None motiontypes = [] motiontypename = "unknown" for key in allPiavca.keys(): if type(allPiavca[key]) == types.TypeType and isinstance( motion, allPiavca[key]): motiontypes.append(allPiavca[key]) if motiontype == None or issubclass(allPiavca[key], motiontype): motiontype = allPiavca[key] motiontypename = key #print name, "is a", motiontypename if motiontype == None: print "Motion is of unknown type" continue if motiontype == Piavca.KeyframeMotion: print "don't save keyframe motions" continue #print motion.getName(), motiontypename el = doc.createElement(motiontypename) #el.setAttribute("name", name) #print motion.__dict__ ignorelist = set( ["getStartTime", "getMotion", "getMotion1", "getMotion2"]) for mtype in motiontypes: for key in mtype.__dict__.keys(): if key[:3] == "get": #print key if key in ignorelist: continue if hasattr(motion, "set" + key[3:]): #print key method = getattr(motion, key) value = method() if type(value) == Piavca.Quat: value = str(Piavca.radToDeg( value.getAngle())) + " " + str(value.getAxis()) else: value = str(value) if key[-len("JointId"):] == "JointId" or key[-len( "ExpressionId"):] == "ExpressionId" or key[ -len("TrackId"):] == "TrackId": value = Piavca.Core.getCore().getTrackName( method()) # don't save empty names, it screws things up if key[3:] != "Name" or value != "": # check if its a quaternion el.setAttribute(key[3:], value) motionlist = [] if hasattr(motion, "getNumMotions"): n = motion.getNumMotions() for i in range(n): m = motion.getMotionByIndex(i) if m == None: continue m = Piavca.getRealMotionType(m) motionlist.append(m) elif hasattr(motion, "getMotion1"): m = motion.getMotion1() if m != None: m = Piavca.getRealMotionType(m) motionlist.append(m) m = motion.getMotion2() if m != None: m = Piavca.getRealMotionType(m) motionlist.append(m) elif hasattr(motion, "getMotion"): m = motion.getMotion() if m != None: m = Piavca.getRealMotionType(m) motionlist.append(m) for m in motionlist: if m.getName() != "": sub_el = doc.createElement("Motion") sub_el.setAttribute("name", m.getName()) el.appendChild(sub_el) else: saveMotions(filename, [m], el, doc) element.appendChild(el) file = open(filename, "w") doc.writexml(file, "", "\t", "\n") file.close()