Ver Fonte

*** empty log message ***

Mark Mine há 25 anos atrás
pai
commit
f2609e28fb
2 ficheiros alterados com 43 adições e 12 exclusões
  1. 27 2
      direct/src/showbase/PythonUtil.py
  2. 16 10
      direct/src/tkpanels/MopathRecorder.py

+ 27 - 2
direct/src/showbase/PythonUtil.py

@@ -32,12 +32,33 @@ def apropos(obj, str = None, fOverloaded = 0, width = None,
     """
     """
     Print out a formatted list of members and methods of an instance or class
     Print out a formatted list of members and methods of an instance or class
     """
     """
+    def printHeader(name):
+        name = ' ' + name + ' '
+        length = len(name)
+        if length < 70:
+            padBefore = int((70 - length)/2.0)
+            padAfter = max(0,70 - length - padBefore)
+            header = '*' * padBefore + name + '*' * padAfter
+        print header
+    def printInstanceHeader(i, printHeader = printHeader):
+        printHeader(i.__class__.__name__ + ' INSTANCE INFO')
+    def printClassHeader(c, printHeader = printHeader):
+        printHeader(c.__name__ + ' CLASS INFO')
+    def printDictionaryHeader(d, printHeader = printHeader):
+        printHeader('DICTIONARY INFO')
+    # Print Header
     if type(obj) == types.InstanceType:
     if type(obj) == types.InstanceType:
-        print "***************************INSTANCE INFO*****************************"
+        printInstanceHeader(obj)
+    elif type(obj) == types.ClassType:
+        printClassHeader(obj)
+    elif type (obj) == types.DictionaryType:
+        printDictionaryHeader(obj)
+    # Get dict
     if type(obj) == types.DictionaryType:
     if type(obj) == types.DictionaryType:
         dict = obj
         dict = obj
     else:
     else:
         dict = obj.__dict__
         dict = obj.__dict__
+    # Adjust width
     if width:
     if width:
         maxWidth = width
         maxWidth = width
     else:
     else:
@@ -86,8 +107,12 @@ def apropos(obj, str = None, fOverloaded = 0, width = None,
             value = value[:max(1,lineWidth - maxWidth)]
             value = value[:max(1,lineWidth - maxWidth)]
         print (format % key)[:maxWidth] + '\t' + value
         print (format % key)[:maxWidth] + '\t' + value
     if type(obj) == types.InstanceType:
     if type(obj) == types.InstanceType:
-        print "*****************************CLASS INFO******************************"
+        print
         apropos(obj.__class__, str = str )
         apropos(obj.__class__, str = str )
+    elif type(obj) == types.ClassType:
+        for parentClass in obj.__bases__:
+            print
+            apropos(parentClass, str = str)
 
 
 def aproposAll(obj):
 def aproposAll(obj):
     """
     """

+ 16 - 10
direct/src/tkpanels/MopathRecorder.py

@@ -10,7 +10,7 @@ import Dial
 import Floater
 import Floater
 import EntryScale
 import EntryScale
 
 
-class MopathRecorder(AppShell):
+class MopathRecorder(AppShell, PandaObject):
     # Override class variables here
     # Override class variables here
     appname = 'Mopath Recorder Panel'
     appname = 'Mopath Recorder Panel'
     frameWidth      = 450
     frameWidth      = 450
@@ -43,6 +43,10 @@ class MopathRecorder(AppShell):
         self.tempCS = direct.group.attachNewNode('mopathRecorderTempCS')
         self.tempCS = direct.group.attachNewNode('mopathRecorderTempCS')
         # Count of point sets recorded
         # Count of point sets recorded
         self.pointSetCount = 0
         self.pointSetCount = 0
+        # Count of number of points in a point set
+        self.pointCount = 0
+        # Curve fitter object
+        self.curveFitter = CurveFitter()
         # Set up event hooks
         # Set up event hooks
         self.undoEvents = [('undo', self.undoHook),
         self.undoEvents = [('undo', self.undoHook),
                            ('pushUndo', self.pushUndoHook),
                            ('pushUndo', self.pushUndoHook),
@@ -213,7 +217,7 @@ class MopathRecorder(AppShell):
             relief = RAISED, borderwidth = 2, anchor = CENTER)
             relief = RAISED, borderwidth = 2, anchor = CENTER)
         self.getWidget('CV Controls', 'Constant Velocity').pack(
         self.getWidget('CV Controls', 'Constant Velocity').pack(
             fill = 'x', expand = 1)
             fill = 'x', expand = 1)
-        self.createLabeledEntry(frame, 'CV Controls', 'Total Time',
+        self.createLabeledEntry(frame, 'CV Controls', 'Path Duration',
                                 'Set total curve duration',
                                 'Set total curve duration',
                                 command = self.setTotalTime)
                                 command = self.setTotalTime)
         frame.pack(fill = 'x', expand = 1)
         frame.pack(fill = 'x', expand = 1)
@@ -240,17 +244,17 @@ class MopathRecorder(AppShell):
                           'Zero refine curve offset',
                           'Zero refine curve offset',
                           self.resetOffset, side = 'left')
                           self.resetOffset, side = 'left')
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'X',
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'X',
-                                'Refine pass X offset', expand = 1)
+                                'Refine pass X offset', width = 3, expand = 1)
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'Y',
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'Y',
-                                'Refine pass Y offset', expand = 1)
+                                'Refine pass Y offset', width = 3, expand = 1)
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'Z',
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'Z',
-                                'Refine pass Z offset', expand = 1)
+                                'Refine pass Z offset', width = 3, expand = 1)
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'H',
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'H',
-                                'Refine pass H offset', expand = 1)
+                                'Refine pass H offset', width = 3, expand = 1)
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'P',
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'P',
-                                'Refine pass P offset', expand = 1)
+                                'Refine pass P offset', width = 3, expand = 1)
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'R',
         self.createLabeledEntry(offsetFrame, 'Refine Page', 'R',
-                                'Refine pass R offset', expand = 1)
+                                'Refine pass R offset', width = 3, expand = 1)
         offsetFrame.pack(fill = 'x')
         offsetFrame.pack(fill = 'x')
 
 
         frame = Frame(self.refinePage)
         frame = Frame(self.refinePage)
@@ -321,6 +325,7 @@ class MopathRecorder(AppShell):
         print self.getVariable('Recording', 'Recording Path').get()
         print self.getVariable('Recording', 'Recording Path').get()
 
 
     def setStartStopHook(self):
     def setStartStopHook(self):
+        self.
         print 'start stop'
         print 'start stop'
 
 
     def setPlaybackTime(self, time):
     def setPlaybackTime(self, time):
@@ -348,7 +353,7 @@ class MopathRecorder(AppShell):
         print self.getWidget('CV Controls', 'Constant Velocity').get()
         print self.getWidget('CV Controls', 'Constant Velocity').get()
 
 
     def setTotalTime(self):
     def setTotalTime(self):
-        print 'total time'
+        print 'path duration'
 
 
     def setRefineStart(self,value):
     def setRefineStart(self,value):
         print 'refine start'
         print 'refine start'
@@ -379,9 +384,10 @@ class MopathRecorder(AppShell):
         Label(frame, text = text).pack(side = 'left', fill = 'x')
         Label(frame, text = text).pack(side = 'left', fill = 'x')
         entry = Entry(frame, width = width, relief = relief)
         entry = Entry(frame, width = width, relief = relief)
         entry.pack(side = 'left', fill = 'x', expand = expand)
         entry.pack(side = 'left', fill = 'x', expand = expand)
+        self.widgetDict[category + '-' + text] = entry
         if command:
         if command:
             entry.bind('<Return>', command)
             entry.bind('<Return>', command)
-        frame.pack(side = side, expand = expand)
+        frame.pack(side = side, fill = 'x', expand = expand)
 
 
     def createButton(self, parent, category, text, balloonHelp, command,
     def createButton(self, parent, category, text, balloonHelp, command,
                      side = 'top', expand = 0):
                      side = 'top', expand = 0):