|
@@ -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):
|