changed baseline style menu to pie menu

This commit is contained in:
Dave Schuyler 2001-03-14 03:51:41 +00:00
parent 79b50aeabb
commit f2242f06d9

View File

@ -385,6 +385,7 @@ class LevelEditor(NodePath, PandaObject):
('select_sign_color', self.setDNATargetColor), ('select_sign_color', self.setDNATargetColor),
('select_sign_orientation', self.setDNATargetOrientation), ('select_sign_orientation', self.setDNATargetOrientation),
('select_sign_texture', self.setDNATargetCode, ['sign']), ('select_sign_texture', self.setDNATargetCode, ['sign']),
('select_baseline_style', self.panel.setSignBaselineStyle),
('select_door_color', self.setDNATargetColor), ('select_door_color', self.setDNATargetColor),
('select_door_orientation', self.setDNATargetOrientation), ('select_door_orientation', self.setDNATargetOrientation),
('select_door_texture', self.setDNATargetCode, ['door']), ('select_door_texture', self.setDNATargetCode, ['door']),
@ -1192,6 +1193,8 @@ class LevelEditor(NodePath, PandaObject):
menuMode = 'sign_color' menuMode = 'sign_color'
elif direct.fAlt: elif direct.fAlt:
menuMode = 'sign_orientation' menuMode = 'sign_orientation'
elif direct.fShift:
menuMode = 'baseline_style'
else: else:
menuMode = 'sign_texture' menuMode = 'sign_texture'
return menuMode return menuMode
@ -2266,8 +2269,8 @@ class LevelStyleManager:
# Create a baseline style dictionary for each neighborhood # Create a baseline style dictionary for each neighborhood
self.createBaselineStyleDictionary(neighborhood)) self.createBaselineStyleDictionary(neighborhood))
# Using this dictionary, create color pie menus # Using this dictionary, create color pie menus
#attribute.setMenu( attribute.setMenu(
# self.createBaselineStyleMenu(neighborhood, attribute.getDict())) self.createBaselineStyleMenu(neighborhood, attribute.getDict()))
dict[neighborhood] = attribute dict[neighborhood] = attribute
def createBaselineStyleDictionary(self, neighborhood): def createBaselineStyleDictionary(self, neighborhood):
@ -2318,11 +2321,22 @@ class LevelStyleManager:
else: else:
pair = map(string.strip, l.split(':')) pair = map(string.strip, l.split(':'))
if style.__dict__.has_key(pair[0]): if style.__dict__.has_key(pair[0]):
# Convert colors and count strings to numerical values pair_0 = pair[0]
if (pair[0] == 'color'): # Convert some numerical values
style[pair[0]] = eval(pair[1]) if (pair_0 == 'color'
or pair_0 == 'kern'
or pair_0 == 'wiggle'
or pair_0 == 'stumble'
or pair_0 == 'stomp'
or pair_0 == 'curve'
or pair_0 == 'x'
or pair_0 == 'z'
or pair_0 == 'scaleX'
or pair_0 == 'scaleZ'
or pair_0 == 'roll'):
style[pair_0] = eval(pair[1])
else: else:
style[pair[0]] = pair[1] style[pair_0] = pair[1]
else: else:
print 'extractBaselineStyle: Invalid Key' print 'extractBaselineStyle: Invalid Key'
print pair[0] print pair[0]
@ -2341,7 +2355,7 @@ class LevelStyleManager:
keys = dictionary.keys() keys = dictionary.keys()
keys.sort() keys.sort()
styles = map(lambda x, d = dictionary: d[x], keys) styles = map(lambda x, d = dictionary: d[x], keys)
sf = 0.03 sf = 0.1
aspectRatio = (direct.dr.width/float(direct.dr.height)) aspectRatio = (direct.dr.width/float(direct.dr.height))
for i in range(numItems): for i in range(numItems):
# Get the node # Get the node
@ -2368,9 +2382,9 @@ class LevelStyleManager:
Create a style sample using the DNA info in the style Create a style sample using the DNA info in the style
""" """
baseline = DNASignBaseline() baseline = DNASignBaseline()
#baselineStyle = DNABaselineStyle(styleList = [(baselineStyle, 10.0)]) # Set some example text:
#self.setDNABaselineStyle(baseline, baselineStyle, width = 12.0, DNASetBaselineString(baseline, "Example Text")
# name = 'baseline_style_sample') baselineStyle.copyTo(baseline)
return baseline.traverse(hidden, DNASTORE, 1) return baseline.traverse(hidden, DNASTORE, 1)
# WALL STYLE FUNCTIONS # WALL STYLE FUNCTIONS
@ -3183,36 +3197,74 @@ class DNABaselineStyle:
self.flags = baseline.getFlags() self.flags = baseline.getFlags()
self.color = baseline.getColor() self.color = baseline.getColor()
def copyTo(self, baseline):
if self.code != None:
baseline.setCode(self.code)
if self.kern != None:
baseline.setKern(self.kern)
if self.wiggle != None:
baseline.setWiggle(self.wiggle)
if self.stumble != None:
baseline.setStumble(self.stumble)
if self.stomp != None:
baseline.setStomp(self.stomp)
if self.curve != None:
diameter=0.0
if self.curve:
diameter=1.0/self.curve
baseline.setWidth(diameter)
baseline.setHeight(diameter)
if (self.x != None) or (self.z != None):
pos=baseline.getPos()
if self.x != None:
pos=Vec3(self.x, pos[1], pos[2])
if self.z != None:
pos=Vec3(pos[0], pos[1], self.z)
baseline.setPos(pos)
if self.roll != None:
baseline.setHpr(Vec3(0.0, 0.0, self.roll))
if (self.scaleX != None) or (self.scaleZ != None):
scale=baseline.getScale()
if self.scaleX != None:
scale=Vec3(self.scaleX, scale[1], scale[2])
if self.scaleZ != None:
scale=Vec3(scale[0], scale[1], self.scaleZ)
baseline.setScale(scale)
if self.flags != None:
baseline.setFlags(self.flags)
if self.color != None:
baseline.setColor(self.color)
def output(self, file = sys.stdout): def output(self, file = sys.stdout):
""" Output style description to a file """ """ Output style description to a file """
file.write('baselineStyle\n') file.write('baselineStyle\n')
if self.name: if self.name != None:
file.write('name: %s\n' % self.name) file.write('name: %s\n' % self.name)
if self.code: if self.code != None:
file.write('code: %s\n' % self.code) file.write('code: %s\n' % self.code)
if self.kern: if self.kern != None:
file.write('kern: %s\n' % self.kern) file.write('kern: %s\n' % self.kern)
if self.wiggle: if self.wiggle != None:
file.write('wiggle: %s\n' % self.wiggle) file.write('wiggle: %s\n' % self.wiggle)
if self.stumble: if self.stumble != None:
file.write('stumble: %s\n' % self.stumble) file.write('stumble: %s\n' % self.stumble)
if self.stomp: if self.stomp != None:
file.write('stomp: %s\n' % self.stomp) file.write('stomp: %s\n' % self.stomp)
if self.curve: if self.curve != None:
file.write('curve: %s\n' % self.curve) file.write('curve: %s\n' % self.curve)
if self.x: if self.x != None:
file.write('x: %s\n' % self.x) file.write('x: %s\n' % self.x)
if self.z: if self.z != None:
file.write('z: %s\n' % self.z) file.write('z: %s\n' % self.z)
if self.scaleX: if self.scaleX != None:
file.write('scaleX: %s\n' % self.scaleX) file.write('scaleX: %s\n' % self.scaleX)
if self.scaleZ: if self.scaleZ != None:
file.write('scaleZ: %s\n' % self.scaleZ) file.write('scaleZ: %s\n' % self.scaleZ)
if self.roll: if self.roll != None:
file.write('roll: %s\n' % self.roll) file.write('roll: %s\n' % self.roll)
if self.flags: if self.flags != None:
file.write('flags: %s\n' % self.flags) file.write('flags: %s\n' % self.flags)
if self.color: if self.color != None:
file.write('color: Vec4(%.2f, %.2f, %.2f, 1.0)\n' file.write('color: Vec4(%.2f, %.2f, %.2f, 1.0)\n'
% (self.color[0], self.color[1], self.color[2])) % (self.color[0], self.color[1], self.color[2]))
file.write('endBaselineStyle\n') file.write('endBaselineStyle\n')
@ -3602,21 +3654,21 @@ class LevelEditorPanel(Pmw.MegaToplevel):
self.baselineTextBox = Entry( self.baselineTextBox = Entry(
gridFrame, width = 24, gridFrame, width = 24,
textvariable=self.baselineString) textvariable=self.baselineString)
self.baselineTextBox.grid(row=1, column=0, columnspan=6) self.baselineTextBox.grid(row=1, column=0, columnspan=3)
levelAttribute = ( """levelAttribute = (
self.styleManager.attributeDictionary self.styleManager.attributeDictionary
['baseline_style']['toontown_central'] ['baseline_style']['toontown_central']
.getDict().keys()) .getDict().keys())
levelAttribute.sort() levelAttribute.sort()
baselineStyleList = ["<custom>", "Zero"] + levelAttribute baselineStyleList = ["<custom>", "Plain"] + levelAttribute
self.baselineStyleMenu = Pmw.ComboBox( self.baselineStyleMenu = Pmw.ComboBox(
gridFrame, labelpos = W, gridFrame, labelpos = W,
label_text = 'Style:', entry_width = 12, label_text = 'Style:', entry_width = 12,
selectioncommand = self.setSignBaselineStyle, history = 0, selectioncommand = self.setSignBaselineStyle, history = 0,
scrolledlist_items = baselineStyleList) scrolledlist_items = baselineStyleList)
self.baselineStyleMenu.selectitem(baselineStyleList[0]) self.baselineStyleMenu.selectitem(0)
self.baselineStyleMenu.grid(row=2, column=0, columnspan=3) self.baselineStyleMenu.grid(row=2, column=0, columnspan=3)"""
fontList = [""]+self.styleManager.getCatalogCodes('font') fontList = [""]+self.styleManager.getCatalogCodes('font')
self.fontMenu = Pmw.ComboBox( self.fontMenu = Pmw.ComboBox(
@ -3624,8 +3676,8 @@ class LevelEditorPanel(Pmw.MegaToplevel):
label_text = 'Font:', entry_width = 12, label_text = 'Font:', entry_width = 12,
selectioncommand = self.setSignBaslineFont, history = 0, selectioncommand = self.setSignBaslineFont, history = 0,
scrolledlist_items = fontList) scrolledlist_items = fontList)
self.fontMenu.selectitem(fontList[0]) self.fontMenu.selectitem(0)
self.fontMenu.grid(row=2, column=3, columnspan=3) self.fontMenu.grid(row=1, column=3, columnspan=3)
signButtonFrame = Frame(gridFrame) signButtonFrame = Frame(gridFrame)
@ -3953,7 +4005,6 @@ class LevelEditorPanel(Pmw.MegaToplevel):
return target return target
def selectSignBaseline(self, val): def selectSignBaseline(self, val):
print "\nselectSignBaseline:", val
if not self.currentSignDNA: if not self.currentSignDNA:
return return
# Temporarily undefine DNATarget (this will speed # Temporarily undefine DNATarget (this will speed
@ -4039,68 +4090,34 @@ class LevelEditorPanel(Pmw.MegaToplevel):
def setSignBaselineStyle(self, val): def setSignBaselineStyle(self, val):
baseline=self.currentBaselineDNA baseline=self.currentBaselineDNA
if baseline: if not baseline:
settings={} return #skyler: This isn't working yet.
if val == '<custom>': # As a workaround, select the baseline from the tk panel.
return # Try to find the first baseline in the sign:
elif val == 'Zero': sign=self.findSignFromDNARoot()
self.levelEditor.replaceSelectedEnabled=0 if sign:
self.currentSignDNA = sign
# Don't set string: self.baselineString.set('') baseline=DNAGetChild(sign, DNA_SIGN_BASELINE)
self.addCurveFloater.set(0) if baseline and val:
self.addKernFloater.set(0) self.levelEditor.DNATarget=baseline
self.addWiggleFloater.set(0) self.currentBaselineDNA=baseline
self.addStumbleFloater.set(0) settings=val
self.addStompFloater.set(0)
self.bigFirstLetterIntVar.set(0)
self.setBigFirstLetter();
self.allCapsIntVar.set(0)
self.setAllCaps()
self.dropShadowIntVar.set(0)
self.setDropShadow()
self.fontMenu.selectitem(0)
self.setSignBaslineFont('')
self.addXFloater.set(0)
self.addZFloater.set(0)
self.addScaleXFloater.set(1)
self.addScaleZFloater.set(1)
self.addRollFloater.set(0)
#self.updateSelectedObjColor(Vec4(1.0))
self.setCurrentColor(Vec4(1.0))
self.setResetColor(Vec4(1.0))
baseline.setColor(Vec4(1.0))
self.levelEditor.replaceSelectedEnabled=1
self.levelEditor.replaceSelected()
return
else:
settings = (
self.styleManager.attributeDictionary
['baseline_style']['toontown_central']
# TODO: toontown_centeral should not be hard coded.
.getDict()[val])
self.levelEditor.replaceSelectedEnabled=0 self.levelEditor.replaceSelectedEnabled=0
# Don't set string: self.baselineString.set('') # Don't set string: self.baselineString.set('')
if settings['curve']: if settings['curve'] != None:
self.addCurveFloater.set(float(settings['curve'])) self.addCurveFloater.set(settings['curve'])
if settings['kern']: if settings['kern'] != None:
self.addKernFloater.set(float(settings['kern'])) self.addKernFloater.set(settings['kern'])
if settings['wiggle']: if settings['wiggle'] != None:
self.addWiggleFloater.set(float(settings['wiggle'])) self.addWiggleFloater.set(settings['wiggle'])
if settings['stumble']: if settings['stumble'] != None:
self.addStumbleFloater.set(float(settings['stumble'])) self.addStumbleFloater.set(settings['stumble'])
if settings['stomp']: if settings['stomp'] != None:
self.addStompFloater.set(float(settings['stomp'])) self.addStompFloater.set(settings['stomp'])
flags=settings['flags'] flags=settings['flags']
if flags: if flags != None:
self.bigFirstLetterIntVar.set('b' in flags) self.bigFirstLetterIntVar.set('b' in flags)
self.setBigFirstLetter(); self.setBigFirstLetter();
@ -4111,23 +4128,23 @@ class LevelEditorPanel(Pmw.MegaToplevel):
self.setDropShadow() self.setDropShadow()
code = settings['code'] code = settings['code']
if code: if code != None:
self.fontMenu.selectitem(code) self.fontMenu.selectitem(code)
self.setSignBaslineFont(code) self.setSignBaslineFont(code)
if settings['x']: if settings['x'] != None:
self.addXFloater.set(float(settings['x'])) self.addXFloater.set(settings['x'])
if settings['z']: if settings['z'] != None:
self.addZFloater.set(float(settings['z'])) self.addZFloater.set(settings['z'])
if settings['scaleX']: if settings['scaleX'] != None:
self.addScaleXFloater.set(float(settings['scaleX'])) self.addScaleXFloater.set(settings['scaleX'])
if settings['scaleZ']: if settings['scaleZ'] != None:
self.addScaleZFloater.set(float(settings['scaleZ'])) self.addScaleZFloater.set(settings['scaleZ'])
if settings['roll']: if settings['roll'] != None:
self.addRollFloater.set(float(settings['roll'])) self.addRollFloater.set(settings['roll'])
color = settings['color'] color = settings['color']
if color: if color != None:
#self.updateSelectedObjColor(settings['color']) #self.updateSelectedObjColor(settings['color'])
self.setCurrentColor(color) self.setCurrentColor(color)
self.setResetColor(color) self.setResetColor(color)
@ -4158,8 +4175,7 @@ class LevelEditorPanel(Pmw.MegaToplevel):
# Remove the flag: # Remove the flag:
flags=string.join(flags.split(flagChar), '') flags=string.join(flags.split(flagChar), '')
baseline.setFlags(flags) baseline.setFlags(flags)
s=self.baselineString.get()#skyler self.levelEditor.replaceSelected()
self.setBaselineString(s)
def setBigFirstLetter(self): def setBigFirstLetter(self):
self.adjustBaselineFlag(self.bigFirstLetterIntVar.get(), 'b') self.adjustBaselineFlag(self.bigFirstLetterIntVar.get(), 'b')