Browse Source

*** empty log message ***

Mark Mine 25 years ago
parent
commit
e5e955af8e
2 changed files with 71 additions and 107 deletions
  1. 2 2
      direct/src/directtools/DirectManipulation.py
  2. 69 105
      direct/src/tkpanels/ParticlePanel.py

+ 2 - 2
direct/src/directtools/DirectManipulation.py

@@ -230,9 +230,9 @@ class DirectManipulationControl(PandaObject):
                 # Mouse started in central region, xlate
                 # Mouse started in central region, xlate
                 # Mode depends on shift key
                 # Mode depends on shift key
                 if direct.fShift:
                 if direct.fShift:
-                    self.xlateCamXZ(state)
-                else:
                     self.xlateCamXY(state)
                     self.xlateCamXY(state)
+                else:
+                    self.xlateCamXZ(state)
         if self.fSetCoa:
         if self.fSetCoa:
             # Update coa based on current widget position
             # Update coa based on current widget position
             direct.selected.last.mCoa2Dnp.assign(
             direct.selected.last.mCoa2Dnp.assign(

+ 69 - 105
direct/src/tkpanels/ParticlePanel.py

@@ -92,60 +92,6 @@ class ParticlePanel(AppShell):
             label = 'Print Params',
             label = 'Print Params',
             command = lambda s = self: s.particles.printParams())
             command = lambda s = self: s.particles.printParams())
 
 
-        # EFFECTS MENU
-        self.menuBar.addmenu('Effects', 'Particle Effects Operations')
-        # Get a handle on this menu
-        effectsMenu = self.menuBar.component('Effects-menu')
-        # Create new particle effect
-        self.menuBar.addmenuitem(
-            'Effects', 'command',
-            'Create New Particle Effect',
-            label = 'Create New Effect',
-            command = self.createNewEffect)
-        # Add cascade menus to view and enable, saving a handle
-        effectsConfigureMenu = Menu(effectsMenu, tearoff = 0)
-        effectsMenu.add_cascade(label = 'Configure',
-                                menu = effectsConfigureMenu)
-        self.effectsEnableMenu = Menu(effectsMenu, tearoff = 0)
-        effectsMenu.add_cascade(label = 'Enable/Disable',
-                                menu = self.effectsEnableMenu)
-
-        # PARTICLES MENU
-        self.menuBar.addmenu('Particles', 'Particles Operations')
-        # Get a handle on this menu
-        particlesMenu = self.menuBar.component('Particles-menu')
-        # Create new particles object
-        self.menuBar.addmenuitem(
-            'Particles', 'command',
-            'Create New Particles Object',
-            label = 'Create New Particles',
-            command = self.createNewParticles)
-        # Add cascade menus to view and enable, saving a handle
-        particlesConfigureMenu = Menu(particlesMenu, tearoff = 0)
-        particlesMenu.add_cascade(label = 'Configure',
-                                menu = particlesConfigureMenu)
-        self.particlesEnableMenu = Menu(particlesMenu, tearoff = 0)
-        particlesMenu.add_cascade(label = 'Enable/Disable',
-                                menu = self.particlesEnableMenu)
-
-        # FORCE GROUP MENU
-        self.menuBar.addmenu('ForceGroup', 'ForceGroup Operations')
-        # Get a handle on this menu
-        forceGroupMenu = self.menuBar.component('ForceGroup-menu')
-        # Create new particle effect
-        self.menuBar.addmenuitem(
-            'ForceGroup', 'command',
-            'Create New ForceGroup Object',
-            label = 'Create New ForceGroup',
-            command = self.createNewForceGroup)
-        # Add cascade menus to view and enable, saving a handle
-        forceGroupConfigureMenu = Menu(forceGroupMenu, tearoff = 0)
-        forceGroupMenu.add_cascade(label = 'Configure',
-                                menu = forceGroupConfigureMenu)
-        self.forceGroupEnableMenu = Menu(forceGroupMenu, tearoff = 0)
-        forceGroupMenu.add_cascade(label = 'Enable/Disable',
-                                menu = self.forceGroupEnableMenu)
-        
         # PARTICLE MANAGER MENU
         # PARTICLE MANAGER MENU
         self.menuBar.addmenu('ParticleMgr', 'ParticleMgr Operations')
         self.menuBar.addmenu('ParticleMgr', 'ParticleMgr Operations')
         self.particleMgrActive = IntVar()
         self.particleMgrActive = IntVar()
@@ -164,40 +110,59 @@ class ParticlePanel(AppShell):
         self.effectsLabel = Menubutton(labelFrame, width = 10,
         self.effectsLabel = Menubutton(labelFrame, width = 10,
                                        relief = RAISED,
                                        relief = RAISED,
                                        borderwidth = 2,
                                        borderwidth = 2,
-                                       font=('MSSansSerif', 14, 'bold'),
+                                       font=('MSSansSerif', 12, 'bold'),
                                        activebackground = '#909090')
                                        activebackground = '#909090')
-        effectsConfigureLabel = Menu(self.effectsLabel, tearoff = 0)
-        self.effectsLabel['menu'] = effectsConfigureLabel
-        self.effectsLabel.pack(side = LEFT, fill = 'x', expand = 0)
+        self.effectsLabelMenu = Menu(self.effectsLabel, tearoff = 0)
+        self.effectsLabel['menu'] = self.effectsLabelMenu
+        self.effectsLabel.pack(side = LEFT, fill = 'x', expand = 1)
+        self.bind(self.effectsLabel,
+                  'Select effect to configure or create new effect')
+        self.effectsLabelMenu.add_command(label = 'Create New Effect',
+                                          command = self.createNewEffect)
+        self.effectsEnableMenu = Menu(self.effectsLabelMenu, tearoff = 0)
+        self.effectsLabelMenu.add_cascade(label = 'Enable/Disable',
+                                          menu = self.effectsEnableMenu)
+        self.effectsLabelMenu.add_separator()
         # Current particles
         # Current particles
         self.particlesLabel = Menubutton(labelFrame, width = 10,
         self.particlesLabel = Menubutton(labelFrame, width = 10,
                                          relief = RAISED,
                                          relief = RAISED,
                                          borderwidth = 2,
                                          borderwidth = 2,
-                                         font=('MSSansSerif', 14, 'bold'),
+                                         font=('MSSansSerif', 12, 'bold'),
                                          activebackground = '#909090')
                                          activebackground = '#909090')
-        particlesConfigureLabel = Menu(self.particlesLabel, tearoff = 0)
-        self.particlesLabel['menu'] = particlesConfigureLabel
-        self.particlesLabel.pack(side = LEFT, fill = 'x', expand = 0)
+        self.particlesLabelMenu = Menu(self.particlesLabel, tearoff = 0)
+        self.particlesLabel['menu'] = self.particlesLabelMenu
+        self.particlesLabel.pack(side = LEFT, fill = 'x', expand = 1)
+        self.bind(self.particlesLabel,
+                  ('Select particles object to configure ' +
+                   'or add new particles object to current effect' ))
+        self.particlesLabelMenu.add_command(label = 'Create New Particles',
+                                            command = self.createNewParticles)
+        self.particlesEnableMenu = Menu(self.particlesLabelMenu, tearoff = 0)
+        self.particlesLabelMenu.add_cascade(label = 'Enable/Disable',
+                                            menu = self.particlesEnableMenu)
+        self.particlesLabelMenu.add_separator()
         # Current force
         # Current force
         self.forceGroupLabel = Menubutton(labelFrame, width = 10,
         self.forceGroupLabel = Menubutton(labelFrame, width = 10,
                                       relief = RAISED,
                                       relief = RAISED,
                                       borderwidth = 2,
                                       borderwidth = 2,
-                                      font=('MSSansSerif', 14, 'bold'),
+                                      font=('MSSansSerif', 12, 'bold'),
                                       activebackground = '#909090')
                                       activebackground = '#909090')
-        forceGroupConfigureLabel = Menu(self.forceGroupLabel, tearoff = 0)
-        self.forceGroupLabel['menu'] = forceGroupConfigureLabel
-        self.forceGroupLabel.pack(side = LEFT, fill = 'x', expand = 0)
+        self.forceGroupLabelMenu = Menu(self.forceGroupLabel, tearoff = 0)
+        self.forceGroupLabel['menu'] = self.forceGroupLabelMenu
+        self.forceGroupLabel.pack(side = LEFT, fill = 'x', expand = 1)
+        self.bind(self.forceGroupLabel,
+                  ('Select force group to configure ' +
+                   'or add a new force group to current effect'))
+        self.forceGroupLabelMenu.add_command(
+            label = 'Create New ForceGroup',
+            command = self.createNewForceGroup)
+        self.forceGroupEnableMenu = Menu(self.forceGroupLabelMenu, tearoff = 0)
+        self.forceGroupLabelMenu.add_cascade(label = 'Enable/Disable',
+                                             menu = self.forceGroupEnableMenu)
+        self.forceGroupLabelMenu.add_separator()
         # Pack labels
         # Pack labels
         labelFrame.pack(fill = 'x', expand = 0)
         labelFrame.pack(fill = 'x', expand = 0)
 
 
-        # These get updated together
-        self.effectsConfigureMenus = [effectsConfigureMenu,
-                                      effectsConfigureLabel]
-        self.particlesConfigureMenus = [particlesConfigureMenu,
-                                        particlesConfigureLabel]
-        self.forceGroupConfigureMenus = [forceGroupConfigureMenu,
-                                         forceGroupConfigureLabel]
-                                 
         # Create the toplevel notebook pages
         # Create the toplevel notebook pages
         self.mainNotebook = Pmw.NoteBook(interior)
         self.mainNotebook = Pmw.NoteBook(interior)
         self.mainNotebook.pack(fill = BOTH, expand = 1)
         self.mainNotebook.pack(fill = BOTH, expand = 1)
@@ -836,7 +801,7 @@ class ParticlePanel(AppShell):
         if self.forceGroup != None:
         if self.forceGroup != None:
             self.forceGroupLabel['text'] = self.forceGroup.getName()
             self.forceGroupLabel['text'] = self.forceGroup.getName()
         else:
         else:
-            self.forceGroupLabel['text'] = ''
+            self.forceGroupLabel['text'] = 'Force Group'
     
     
     def updateMenus(self):
     def updateMenus(self):
         self.updateEffectsMenus()
         self.updateEffectsMenus()
@@ -846,19 +811,18 @@ class ParticlePanel(AppShell):
     def updateEffectsMenus(self):
     def updateEffectsMenus(self):
         # Get rid of old effects entries if any
         # Get rid of old effects entries if any
         self.effectsEnableMenu.delete(0, 'end')
         self.effectsEnableMenu.delete(0, 'end')
-        for menu in self.effectsConfigureMenus:
-            menu.delete(0, 'end')
+        self.effectsLabelMenu.delete(2, 'end')
+        self.effectsLabelMenu.add_separator()
         # Add in a checkbutton for each effect (to toggle on/off)
         # Add in a checkbutton for each effect (to toggle on/off)
         keys = self.effectsDict.keys()
         keys = self.effectsDict.keys()
         keys.sort()
         keys.sort()
         for name in keys: 
         for name in keys: 
             effect = self.effectsDict[name]
             effect = self.effectsDict[name]
-            for menu in self.effectsConfigureMenus:
-                menu.add_command(
-                    label = effect.getName(),
-                    command = (lambda s = self,
-                               e = effect: s.selectEffectNamed(e.getName()))
-                    )
+            self.effectsLabelMenu.add_command(
+                label = effect.getName(),
+                command = (lambda s = self,
+                           e = effect: s.selectEffectNamed(e.getName()))
+                )
             effectActive = IntVar()
             effectActive = IntVar()
             effectActive.set(effect.isEnabled())
             effectActive.set(effect.isEnabled())
             self.effectsEnableMenu.add_checkbutton(
             self.effectsEnableMenu.add_checkbutton(
@@ -871,20 +835,19 @@ class ParticlePanel(AppShell):
     def updateParticlesMenus(self):
     def updateParticlesMenus(self):
         # Get rid of old particles entries if any
         # Get rid of old particles entries if any
         self.particlesEnableMenu.delete(0, 'end')
         self.particlesEnableMenu.delete(0, 'end')
-        for menu in self.particlesConfigureMenus:
-            menu.delete(0, 'end')
+        self.particlesLabelMenu.delete(2, 'end')
+        self.particlesLabelMenu.add_separator()
         # Add in a checkbutton for each effect (to toggle on/off)
         # Add in a checkbutton for each effect (to toggle on/off)
         particles = self.particleEffect.getParticlesList()
         particles = self.particleEffect.getParticlesList()
         names = map(lambda x: x.getName(), particles)
         names = map(lambda x: x.getName(), particles)
         names.sort()
         names.sort()
         for name in names:
         for name in names:
             particle = self.particleEffect.getParticlesNamed(name)
             particle = self.particleEffect.getParticlesNamed(name)
-            for menu in self.particlesConfigureMenus:
-                menu.add_command(
-                    label = name,
-                    command = (lambda s = self,
-                               n = name: s.selectParticlesNamed(n))
-                    )
+            self.particlesLabelMenu.add_command(
+                label = name,
+                command = (lambda s = self,
+                           n = name: s.selectParticlesNamed(n))
+                )
             particleActive = IntVar()
             particleActive = IntVar()
             particleActive.set(particle.isEnabled())
             particleActive.set(particle.isEnabled())
             self.particlesEnableMenu.add_checkbutton(
             self.particlesEnableMenu.add_checkbutton(
@@ -897,20 +860,19 @@ class ParticlePanel(AppShell):
     def updateForceGroupMenus(self):
     def updateForceGroupMenus(self):
         # Get rid of old forceGroup entries if any
         # Get rid of old forceGroup entries if any
         self.forceGroupEnableMenu.delete(0, 'end')
         self.forceGroupEnableMenu.delete(0, 'end')
-        for menu in self.forceGroupConfigureMenus:
-            menu.delete(0, 'end')
+        self.forceGroupLabelMenu.delete(2, 'end')
+        self.forceGroupLabelMenu.add_separator()
         # Add in a checkbutton for each effect (to toggle on/off)
         # Add in a checkbutton for each effect (to toggle on/off)
         forceGroupList = self.particleEffect.getForceGroupList()
         forceGroupList = self.particleEffect.getForceGroupList()
         names = map(lambda x: x.getName(), forceGroupList)
         names = map(lambda x: x.getName(), forceGroupList)
         names.sort()
         names.sort()
         for name in names:
         for name in names:
             force = self.particleEffect.getForceGroupNamed(name)
             force = self.particleEffect.getForceGroupNamed(name)
-            for menu in self.forceGroupConfigureMenus:
-                menu.add_command(
-                    label = name,
-                    command = (lambda s = self,
-                               n = name: s.selectForceGroupNamed(n))
-                    )
+            self.forceGroupLabelMenu.add_command(
+                label = name,
+                command = (lambda s = self,
+                           n = name: s.selectForceGroupNamed(n))
+                )
             forceActive = IntVar()
             forceActive = IntVar()
             forceActive.set(force.isEnabled())
             forceActive.set(force.isEnabled())
             self.forceGroupEnableMenu.add_checkbutton(
             self.forceGroupEnableMenu.add_checkbutton(
@@ -1106,9 +1068,9 @@ class ParticlePanel(AppShell):
         lifespanSpread = factory.getLifespanSpread()
         lifespanSpread = factory.getLifespanSpread()
         self.getWidget('Factory', 'Life Span Spread').set(lifespanSpread, 0)
         self.getWidget('Factory', 'Life Span Spread').set(lifespanSpread, 0)
         mass = factory.getMassBase()
         mass = factory.getMassBase()
-        self.getWidget('Factory', 'Life Span').set(mass, 0)
+        self.getWidget('Factory', 'Mass').set(mass, 0)
         massSpread = factory.getMassSpread()
         massSpread = factory.getMassSpread()
-        self.getWidget('Factory', 'Life Span Spread').set(massSpread, 0)
+        self.getWidget('Factory', 'Mass Spread').set(massSpread, 0)
         terminalVelocity = factory.getTerminalVelocityBase()
         terminalVelocity = factory.getTerminalVelocityBase()
         self.getWidget('Factory', 'Terminal Velocity').set(terminalVelocity, 0)
         self.getWidget('Factory', 'Terminal Velocity').set(terminalVelocity, 0)
         terminalVelocitySpread = factory.getTerminalVelocitySpread()
         terminalVelocitySpread = factory.getTerminalVelocitySpread()
@@ -1471,10 +1433,12 @@ class ParticlePanel(AppShell):
                  color[2]/255.0, color[3]/255.0))
                  color[2]/255.0, color[3]/255.0))
     # Geom #
     # Geom #
     def setRendererGeomNode(self, event):
     def setRendererGeomNode(self, event):
-	node = loader.loadOnce(self.rendererGeomNode.get())
-	if (node == None):
-	    return None
-	self.particles.renderer.setGeomNode(node)
+        node = None
+	nodePath = loader.loadModel(self.rendererGeomNode.get())
+        if nodePath != None:
+            node = nodePath.node()
+	if (node != None):
+            self.particles.renderer.setGeomNode(node)
     # Point #
     # Point #
     def setRendererPointSize(self, size):
     def setRendererPointSize(self, size):
 	self.particles.renderer.setPointSize(size)
 	self.particles.renderer.setPointSize(size)