Browse Source

Merge branch 'master' into cmake

Sam Edwards 7 years ago
parent
commit
2ab77d9a27
100 changed files with 1000 additions and 816 deletions
  1. 1 0
      .gitignore
  2. 1 1
      .travis.yml
  3. 4 0
      contrib/src/ai/aiBehaviors.cxx
  4. 1 1
      contrib/src/ai/aiCharacter.cxx
  5. 1 1
      contrib/src/ai/aiPathFinder.cxx
  6. 5 5
      contrib/src/ai/aiWorld.cxx
  7. 1 1
      contrib/src/ai/arrival.cxx
  8. 7 3
      contrib/src/ai/pathFind.cxx
  9. 1 1
      contrib/src/ai/pathFollow.cxx
  10. 4 4
      contrib/src/rplight/gpuCommand.cxx
  11. 2 2
      contrib/src/rplight/iesDataset.cxx
  12. 5 3
      contrib/src/rplight/internalLightManager.cxx
  13. 1 1
      contrib/src/rplight/pointerSlotStorage.h
  14. 1 1
      contrib/src/rplight/rpLight.I
  15. 1 1
      contrib/src/rplight/rpLight.h
  16. 6 6
      contrib/src/rplight/shadowAtlas.cxx
  17. 3 1
      contrib/src/rplight/tagStateManager.cxx
  18. 1 1
      contrib/src/sceneeditor/MetadataPanel.py
  19. 37 29
      contrib/src/sceneeditor/SideWindow.py
  20. 3 4
      contrib/src/sceneeditor/collisionWindow.py
  21. 186 180
      contrib/src/sceneeditor/controllerWindow.py
  22. 50 48
      contrib/src/sceneeditor/dataHolder.py
  23. 2 2
      contrib/src/sceneeditor/duplicateWindow.py
  24. 32 25
      contrib/src/sceneeditor/lightingPanel.py
  25. 4 5
      contrib/src/sceneeditor/propertyWindow.py
  26. 6 8
      contrib/src/sceneeditor/quad.py
  27. 48 37
      contrib/src/sceneeditor/sceneEditor.py
  28. 9 5
      contrib/src/sceneeditor/seAnimPanel.py
  29. 9 5
      contrib/src/sceneeditor/seBlendAnimPanel.py
  30. 10 11
      contrib/src/sceneeditor/seCameraControl.py
  31. 8 2
      contrib/src/sceneeditor/seColorEntry.py
  32. 18 18
      contrib/src/sceneeditor/seFileSaver.py
  33. 1 3
      contrib/src/sceneeditor/seForceGroup.py
  34. 8 8
      contrib/src/sceneeditor/seGeometry.py
  35. 10 11
      contrib/src/sceneeditor/seLights.py
  36. 1 1
      contrib/src/sceneeditor/seManipulation.py
  37. 153 146
      contrib/src/sceneeditor/seMopathRecorder.py
  38. 4 4
      contrib/src/sceneeditor/seParticleEffect.py
  39. 29 22
      contrib/src/sceneeditor/seParticlePanel.py
  40. 5 25
      contrib/src/sceneeditor/seParticles.py
  41. 34 27
      contrib/src/sceneeditor/sePlacer.py
  42. 16 9
      contrib/src/sceneeditor/seSceneGraphExplorer.py
  43. 20 11
      contrib/src/sceneeditor/seSelection.py
  44. 9 6
      contrib/src/sceneeditor/seSession.py
  45. 15 9
      contrib/src/sceneeditor/seTree.py
  46. 3 0
      direct/src/dcparse/dcparse.cxx
  47. 4 2
      direct/src/dcparser/dcArrayParameter.cxx
  48. 5 3
      direct/src/dcparser/dcAtomicField.cxx
  49. 7 3
      direct/src/dcparser/dcClass.cxx
  50. 2 2
      direct/src/dcparser/dcClassParameter.cxx
  51. 2 2
      direct/src/dcparser/dcDeclaration.cxx
  52. 6 4
      direct/src/dcparser/dcField.cxx
  53. 6 3
      direct/src/dcparser/dcFile.cxx
  54. 4 4
      direct/src/dcparser/dcKeyword.cxx
  55. 3 3
      direct/src/dcparser/dcKeywordList.cxx
  56. 17 13
      direct/src/dcparser/dcLexer.cxx.prebuilt
  57. 17 13
      direct/src/dcparser/dcLexer.lxx
  58. 3 3
      direct/src/dcparser/dcMolecularField.cxx
  59. 8 2
      direct/src/dcparser/dcPacker.cxx
  60. 2 0
      direct/src/dcparser/dcPackerCatalog.cxx
  61. 3 1
      direct/src/dcparser/dcPackerInterface.cxx
  62. 3 0
      direct/src/dcparser/dcParameter.cxx
  63. 4 0
      direct/src/dcparser/dcParser.cxx.prebuilt
  64. 4 0
      direct/src/dcparser/dcParser.yxx
  65. 3 1
      direct/src/dcparser/dcSimpleParameter.cxx
  66. 2 2
      direct/src/dcparser/dcSubatomicType.cxx
  67. 3 0
      direct/src/dcparser/dcSwitch.cxx
  68. 4 2
      direct/src/dcparser/dcSwitchParameter.cxx
  69. 5 3
      direct/src/dcparser/dcTypedef.cxx
  70. 2 2
      direct/src/dcparser/dcindent.cxx
  71. 2 2
      direct/src/dcparser/hashGenerator.cxx
  72. 5 5
      direct/src/deadrec/smoothMover.cxx
  73. 6 1
      direct/src/directd/directd.cxx
  74. 6 0
      direct/src/directdServer/directdClient.cxx
  75. 6 2
      direct/src/directdServer/directdServer.cxx
  76. 5 2
      direct/src/distributed/cConnectionRepository.cxx
  77. 4 4
      direct/src/distributed/cDistributedSmoothNodeBase.cxx
  78. 17 1
      direct/src/interval/MetaInterval.py
  79. 2 2
      direct/src/interval/cConstrainHprInterval.cxx
  80. 2 2
      direct/src/interval/cConstrainPosHprInterval.cxx
  81. 2 2
      direct/src/interval/cConstrainPosInterval.cxx
  82. 2 2
      direct/src/interval/cConstrainTransformInterval.cxx
  83. 1 1
      direct/src/interval/cConstraintInterval.cxx
  84. 4 1
      direct/src/interval/cInterval.cxx
  85. 3 3
      direct/src/interval/cIntervalManager.cxx
  86. 1 1
      direct/src/interval/cLerpAnimEffectInterval.cxx
  87. 2 2
      direct/src/interval/cLerpInterval.cxx
  88. 2 2
      direct/src/interval/cLerpNodePathInterval.cxx
  89. 8 6
      direct/src/interval/cMetaInterval.cxx
  90. 2 2
      direct/src/interval/hideInterval.cxx
  91. 2 2
      direct/src/interval/showInterval.cxx
  92. 5 0
      direct/src/plugin/binaryXml.cxx
  93. 0 2
      direct/src/plugin/binaryXml.h
  94. 7 2
      direct/src/plugin/fileSpec.cxx
  95. 0 1
      direct/src/plugin/fileSpec.h
  96. 4 0
      direct/src/plugin/find_root_dir.cxx
  97. 0 1
      direct/src/plugin/find_root_dir.h
  98. 1 1
      direct/src/plugin/find_root_dir_assist.mm
  99. 4 0
      direct/src/plugin/handleStreamBuf.cxx
  100. 0 2
      direct/src/plugin/handleStreamBuf.h

+ 1 - 0
.gitignore

@@ -59,3 +59,4 @@ __pycache__/
 # Test tool cache directories
 # Test tool cache directories
 .tox/
 .tox/
 .cache/
 .cache/
+.pytest_cache/

+ 1 - 1
.travis.yml

@@ -72,4 +72,4 @@ notifications:
     on_success: change
     on_success: change
     on_failure: always
     on_failure: always
     use_notice: true
     use_notice: true
-    skip_join: true
+    skip_join: false

+ 4 - 0
contrib/src/ai/aiBehaviors.cxx

@@ -13,6 +13,10 @@
 
 
 #include "aiBehaviors.h"
 #include "aiBehaviors.h"
 
 
+using std::cout;
+using std::endl;
+using std::string;
+
 static const float _PI = 3.14;
 static const float _PI = 3.14;
 
 
 AIBehaviors::AIBehaviors() {
 AIBehaviors::AIBehaviors() {

+ 1 - 1
contrib/src/ai/aiCharacter.cxx

@@ -13,7 +13,7 @@
 
 
 #include "aiCharacter.h"
 #include "aiCharacter.h"
 
 
-AICharacter::AICharacter(string model_name, NodePath model_np, double mass, double movt_force, double max_force) {
+AICharacter::AICharacter(std::string model_name, NodePath model_np, double mass, double movt_force, double max_force) {
   _name = model_name;
   _name = model_name;
   _ai_char_np = model_np;
   _ai_char_np = model_np;
 
 

+ 1 - 1
contrib/src/ai/aiPathFinder.cxx

@@ -74,7 +74,7 @@ void PathFinder::generate_path() {
       add_to_clist(nxt_node);
       add_to_clist(nxt_node);
     }
     }
   }
   }
-  cout<<"DESTINATION NOT REACHABLE MATE!"<<endl;
+  std::cout << "DESTINATION NOT REACHABLE MATE!" << std::endl;
   _closed_list.clear();
   _closed_list.clear();
 }
 }
 
 

+ 5 - 5
contrib/src/ai/aiWorld.cxx

@@ -14,7 +14,7 @@
 #include "aiWorld.h"
 #include "aiWorld.h"
 
 
 AIWorld::AIWorld(NodePath render) {
 AIWorld::AIWorld(NodePath render) {
-  _render = move(render);
+  _render = std::move(render);
 }
 }
 
 
 AIWorld::~AIWorld() {
 AIWorld::~AIWorld() {
@@ -26,7 +26,7 @@ void AIWorld::add_ai_char(AICharacter *ai_char) {
   ai_char->_world = this;
   ai_char->_world = this;
 }
 }
 
 
-void AIWorld::remove_ai_char(string name) {
+void AIWorld::remove_ai_char(std::string name) {
   AICharPool::iterator it;
   AICharPool::iterator it;
   for (it = _ai_char_pool.begin(); it != _ai_char_pool.end(); ++it) {
   for (it = _ai_char_pool.begin(); it != _ai_char_pool.end(); ++it) {
     AICharacter *ai_char = *it;
     AICharacter *ai_char = *it;
@@ -38,10 +38,10 @@ void AIWorld::remove_ai_char(string name) {
     }
     }
   }
   }
 
 
-  remove_ai_char_from_flock(move(name));
+  remove_ai_char_from_flock(std::move(name));
 }
 }
 
 
-void AIWorld::remove_ai_char_from_flock(string name) {
+void AIWorld::remove_ai_char_from_flock(std::string name) {
   for (AICharacter *ai_char : _ai_char_pool) {
   for (AICharacter *ai_char : _ai_char_pool) {
     for (Flock *flock : _flock_pool) {
     for (Flock *flock : _flock_pool) {
       if (ai_char->_ai_char_flock_id == flock->get_id()) {
       if (ai_char->_ai_char_flock_id == flock->get_id()) {
@@ -62,7 +62,7 @@ void AIWorld::remove_ai_char_from_flock(string name) {
  */
  */
 void AIWorld::print_list() {
 void AIWorld::print_list() {
   for (AICharacter *ai_char : _ai_char_pool) {
   for (AICharacter *ai_char : _ai_char_pool) {
-    cout << ai_char->_name << endl;
+    std::cout << ai_char->_name << std::endl;
   }
   }
 }
 }
 
 

+ 1 - 1
contrib/src/ai/arrival.cxx

@@ -77,7 +77,7 @@ LVecBase3 Arrival::do_arrival() {
     return(desired_force);
     return(desired_force);
   }
   }
 
 
-  cout<<"Arrival works only with seek and pursue"<<endl;
+  std::cout << "Arrival works only with seek and pursue" << std::endl;
   return(LVecBase3(0.0, 0.0, 0.0));
   return(LVecBase3(0.0, 0.0, 0.0));
 }
 }
 
 

+ 7 - 3
contrib/src/ai/pathFind.cxx

@@ -13,6 +13,10 @@
 
 
 #include "pathFind.h"
 #include "pathFind.h"
 
 
+using std::cout;
+using std::endl;
+using std::string;
+
 PathFind::PathFind(AICharacter *ai_ch) {
 PathFind::PathFind(AICharacter *ai_ch) {
   _ai_char = ai_ch;
   _ai_char = ai_ch;
 
 
@@ -68,7 +72,7 @@ void PathFind::create_nav_mesh(const char* navmesh_filename) {
     // Begin reading data from the file.
     // Begin reading data from the file.
     while(!nav_mesh_file.eof()) {
     while(!nav_mesh_file.eof()) {
       getline(nav_mesh_file, line);
       getline(nav_mesh_file, line);
-      stringstream linestream (line);
+      std::stringstream linestream (line);
 
 
       // Stores all the data members in the line to the array.  Data
       // Stores all the data members in the line to the array.  Data
       // structure:
       // structure:
@@ -125,7 +129,7 @@ void PathFind::assign_neighbor_nodes(const char* navmesh_filename){
 
 
     while(!nav_mesh_file.eof()) {
     while(!nav_mesh_file.eof()) {
       getline(nav_mesh_file, ln); // Gets main node data only. No neighbor nodes.
       getline(nav_mesh_file, ln); // Gets main node data only. No neighbor nodes.
-      stringstream linestream (ln);
+      std::stringstream linestream (ln);
       for(int i = 0; i < 10; ++i) {
       for(int i = 0; i < 10; ++i) {
         getline(linestream, fields[i], ',');
         getline(linestream, fields[i], ',');
       }
       }
@@ -135,7 +139,7 @@ void PathFind::assign_neighbor_nodes(const char* navmesh_filename){
         gd_y = atoi(fields[3].c_str());
         gd_y = atoi(fields[3].c_str());
         for(int i = 0; i < 8; ++i) {
         for(int i = 0; i < 8; ++i) {
           getline(nav_mesh_file, ln); // Gets neighbor node data only. No main nodes.
           getline(nav_mesh_file, ln); // Gets neighbor node data only. No main nodes.
-          stringstream linestream_n (ln);
+          std::stringstream linestream_n (ln);
           for(int j = 0; j < 10; ++j) {
           for(int j = 0; j < 10; ++j) {
             getline(linestream_n, fields_n[j], ',');
             getline(linestream_n, fields_n[j], ',');
           }
           }

+ 1 - 1
contrib/src/ai/pathFollow.cxx

@@ -23,7 +23,7 @@ void PathFollow::add_to_path(LVecBase3 pos) {
 /**
 /**
  * This function initiates the path follow behavior.
  * This function initiates the path follow behavior.
  */
  */
-void PathFollow::start(string type) {
+void PathFollow::start(std::string type) {
     _type = type;
     _type = type;
   _start = true;
   _start = true;
   if(_path.size() > 0) {
   if(_path.size() > 0) {

+ 4 - 4
contrib/src/rplight/gpuCommand.cxx

@@ -57,13 +57,13 @@ GPUCommand::GPUCommand(CommandType command_type) {
  *   in mind that integers might be shown in their binary float representation,
  *   in mind that integers might be shown in their binary float representation,
  *   depending on the setting in the GPUCommand::convert_int_to_float method.
  *   depending on the setting in the GPUCommand::convert_int_to_float method.
  */
  */
-void GPUCommand::write(ostream &out) const {
-  out << "GPUCommand(type=" << _command_type << ", size=" << _current_index << ", data = {" << endl;
+void GPUCommand::write(std::ostream &out) const {
+  out << "GPUCommand(type=" << _command_type << ", size=" << _current_index << ", data = {" << std::endl;
   for (size_t k = 0; k < GPU_COMMAND_ENTRIES; ++k) {
   for (size_t k = 0; k < GPU_COMMAND_ENTRIES; ++k) {
     out << std::setw(12) << std::fixed << std::setprecision(5) << _data[k] << " ";
     out << std::setw(12) << std::fixed << std::setprecision(5) << _data[k] << " ";
-    if (k % 6 == 5 || k == GPU_COMMAND_ENTRIES - 1) out << endl;
+    if (k % 6 == 5 || k == GPU_COMMAND_ENTRIES - 1) out << std::endl;
   }
   }
-  out << "})" << endl;
+  out << "})" << std::endl;
 }
 }
 
 
 /**
 /**

+ 2 - 2
contrib/src/rplight/iesDataset.cxx

@@ -141,7 +141,7 @@ float IESDataset::get_candela_value(float vertical_angle, float horizontal_angle
         iesdataset_cat.error() << "Invalid horizontal lerp: " << lerp
         iesdataset_cat.error() << "Invalid horizontal lerp: " << lerp
                      << ", requested angle was " << horizontal_angle
                      << ", requested angle was " << horizontal_angle
                      << ", prev = " << prev_angle << ", cur = " << curr_angle
                      << ", prev = " << prev_angle << ", cur = " << curr_angle
-                     << endl;
+                     << std::endl;
       }
       }
 
 
       return curr_value * lerp + prev_value * (1-lerp);
       return curr_value * lerp + prev_value * (1-lerp);
@@ -192,7 +192,7 @@ float IESDataset::get_vertical_candela_value(size_t horizontal_angle_idx, float
         iesdataset_cat.error() << "ERROR: Invalid vertical lerp: " << lerp
         iesdataset_cat.error() << "ERROR: Invalid vertical lerp: " << lerp
                      << ", requested angle was " << vertical_angle
                      << ", requested angle was " << vertical_angle
                      << ", prev = " << prev_angle << ", cur = " << curr_angle
                      << ", prev = " << prev_angle << ", cur = " << curr_angle
-                     << endl;
+                     << std::endl;
       }
       }
 
 
       return curr_value * lerp + prev_value * (1-lerp);
       return curr_value * lerp + prev_value * (1-lerp);

+ 5 - 3
contrib/src/rplight/internalLightManager.cxx

@@ -29,6 +29,8 @@
 
 
 #include <algorithm>
 #include <algorithm>
 
 
+using std::endl;
+
 NotifyCategoryDef(lightmgr, "");
 NotifyCategoryDef(lightmgr, "");
 
 
 
 
@@ -133,7 +135,7 @@ void InternalLightManager::setup_shadows(RPLight* light) {
   }
   }
 
 
   // Init all sources
   // Init all sources
-  for (int i = 0; i < num_sources; ++i) {
+  for (size_t i = 0; i < num_sources; ++i) {
     ShadowSource* source = light->get_shadow_source(i);
     ShadowSource* source = light->get_shadow_source(i);
 
 
     // Set the source as dirty, so it gets updated in the beginning
     // Set the source as dirty, so it gets updated in the beginning
@@ -355,7 +357,7 @@ bool InternalLightManager::compare_shadow_sources(const ShadowSource* a, const S
 void InternalLightManager::update_shadow_sources() {
 void InternalLightManager::update_shadow_sources() {
 
 
   // Find all dirty shadow sources and make a list of them
   // Find all dirty shadow sources and make a list of them
-  vector<ShadowSource*> sources_to_update;
+  std::vector<ShadowSource*> sources_to_update;
    for (auto iter = _shadow_sources.begin(); iter != _shadow_sources.end(); ++iter) {
    for (auto iter = _shadow_sources.begin(); iter != _shadow_sources.end(); ++iter) {
     ShadowSource* source = *iter;
     ShadowSource* source = *iter;
     if (source) {
     if (source) {
@@ -393,7 +395,7 @@ void InternalLightManager::update_shadow_sources() {
 
 
   // Free the regions of all sources which will get updated. We have to take into
   // Free the regions of all sources which will get updated. We have to take into
   // account that only a limited amount of sources can get updated per frame.
   // account that only a limited amount of sources can get updated per frame.
-  size_t update_slots = min(sources_to_update.size(),
+  size_t update_slots = std::min(sources_to_update.size(),
                 _shadow_manager->get_num_update_slots_left());
                 _shadow_manager->get_num_update_slots_left());
   for(size_t i = 0; i < update_slots; ++i) {
   for(size_t i = 0; i < update_slots; ++i) {
     if (sources_to_update[i]->has_region()) {
     if (sources_to_update[i]->has_region()) {

+ 1 - 1
contrib/src/rplight/pointerSlotStorage.h

@@ -170,7 +170,7 @@ public:
     _num_entries--;
     _num_entries--;
 
 
     // Update maximum index
     // Update maximum index
-    if (slot == _max_index) {
+    if ((int)slot == _max_index) {
       while (_max_index >= 0 && !_data[_max_index--]);
       while (_max_index >= 0 && !_data[_max_index--]);
     }
     }
   }
   }

+ 1 - 1
contrib/src/rplight/rpLight.I

@@ -33,7 +33,7 @@
  *
  *
  * @return Amount of shadow sources
  * @return Amount of shadow sources
  */
  */
-inline int RPLight::get_num_shadow_sources() const {
+inline size_t RPLight::get_num_shadow_sources() const {
   return _shadow_sources.size();
   return _shadow_sources.size();
 }
 }
 
 

+ 1 - 1
contrib/src/rplight/rpLight.h

@@ -57,7 +57,7 @@ public:
   virtual void update_shadow_sources() = 0;
   virtual void update_shadow_sources() = 0;
   virtual void write_to_command(GPUCommand &cmd);
   virtual void write_to_command(GPUCommand &cmd);
 
 
-  inline int get_num_shadow_sources() const;
+  inline size_t get_num_shadow_sources() const;
   inline ShadowSource* get_shadow_source(size_t index) const;
   inline ShadowSource* get_shadow_source(size_t index) const;
   inline void clear_shadow_sources();
   inline void clear_shadow_sources();
 
 

+ 6 - 6
contrib/src/rplight/shadowAtlas.cxx

@@ -131,13 +131,13 @@ LVecBase4i ShadowAtlas::find_and_reserve_region(size_t tile_width, size_t tile_h
 
 
   // Check for empty region
   // Check for empty region
   if (tile_width < 1 || tile_height < 1) {
   if (tile_width < 1 || tile_height < 1) {
-    shadowatlas_cat.error() << "Called find_and_reserve_region with null-region!" << endl;
+    shadowatlas_cat.error() << "Called find_and_reserve_region with null-region!" << std::endl;
     return LVecBase4i(-1);
     return LVecBase4i(-1);
   }
   }
 
 
   // Check for region bigger than the shadow atlas
   // Check for region bigger than the shadow atlas
   if (tile_width > _num_tiles || tile_height > _num_tiles) {
   if (tile_width > _num_tiles || tile_height > _num_tiles) {
-    shadowatlas_cat.error() << "Requested region exceeds shadow atlas size!" << endl;
+    shadowatlas_cat.error() << "Requested region exceeds shadow atlas size!" << std::endl;
     return LVecBase4i(-1);
     return LVecBase4i(-1);
   }
   }
 
 
@@ -155,7 +155,7 @@ LVecBase4i ShadowAtlas::find_and_reserve_region(size_t tile_width, size_t tile_h
   // When we reached this part, we couldn't find a free region, so the atlas
   // When we reached this part, we couldn't find a free region, so the atlas
   // seems to be full.
   // seems to be full.
   shadowatlas_cat.error() << "Failed to find a free region of size " << tile_width
   shadowatlas_cat.error() << "Failed to find a free region of size " << tile_width
-              << " x " << tile_height << "!"  << endl;
+              << " x " << tile_height << "!"  << std::endl;
   return LVecBase4i(-1);
   return LVecBase4i(-1);
 }
 }
 
 
@@ -173,12 +173,12 @@ LVecBase4i ShadowAtlas::find_and_reserve_region(size_t tile_width, size_t tile_h
 void ShadowAtlas::free_region(const LVecBase4i& region) {
 void ShadowAtlas::free_region(const LVecBase4i& region) {
   // Out of bounds check, can't hurt
   // Out of bounds check, can't hurt
   nassertv(region.get_x() >= 0 && region.get_y() >= 0);
   nassertv(region.get_x() >= 0 && region.get_y() >= 0);
-  nassertv(region.get_x() + region.get_z() <= _num_tiles && region.get_y() + region.get_w() <= _num_tiles);
+  nassertv(region.get_x() + region.get_z() <= (int)_num_tiles && region.get_y() + region.get_w() <= (int)_num_tiles);
 
 
   _num_used_tiles -= region.get_z() * region.get_w();
   _num_used_tiles -= region.get_z() * region.get_w();
 
 
-  for (size_t x = 0; x < region.get_z(); ++x) {
-    for (size_t y = 0; y < region.get_w(); ++y) {
+  for (int x = 0; x < region.get_z(); ++x) {
+    for (int y = 0; y < region.get_w(); ++y) {
       // Could do an assert here, that the tile should have been used (=true) before
       // Could do an assert here, that the tile should have been used (=true) before
       set_tile(region.get_x() + x, region.get_y() + y, false);
       set_tile(region.get_x() + x, region.get_y() + y, false);
     }
     }

+ 3 - 1
contrib/src/rplight/tagStateManager.cxx

@@ -27,6 +27,8 @@
 
 
 #include "tagStateManager.h"
 #include "tagStateManager.h"
 
 
+using std::endl;
+
 
 
 NotifyCategoryDef(tagstatemgr, "");
 NotifyCategoryDef(tagstatemgr, "");
 
 
@@ -77,7 +79,7 @@ TagStateManager::
  */
  */
 void TagStateManager::
 void TagStateManager::
 apply_state(StateContainer& container, NodePath np, Shader* shader,
 apply_state(StateContainer& container, NodePath np, Shader* shader,
-            const string &name, int sort) {
+            const std::string &name, int sort) {
   if (tagstatemgr_cat.is_spam()) {
   if (tagstatemgr_cat.is_spam()) {
     tagstatemgr_cat.spam() << "Constructing new state " << name
     tagstatemgr_cat.spam() << "Constructing new state " << name
                  << " with shader " << shader << endl;
                  << " with shader " << shader << endl;

+ 1 - 1
contrib/src/sceneeditor/MetadataPanel.py

@@ -36,7 +36,7 @@ class MetadataPanel(AppShell,Pmw.MegaWidget):
 
 
 
 
     def appInit(self):
     def appInit(self):
-        print "Metadata Panel"
+        print("Metadata Panel")
 
 
     def createInterface(self):
     def createInterface(self):
         interior = self.interior()
         interior = self.interior()

+ 37 - 29
contrib/src/sceneeditor/SideWindow.py

@@ -6,8 +6,16 @@ from direct.tkwidgets.AppShell import AppShell
 from direct.tkwidgets.VectorWidgets import ColorEntry
 from direct.tkwidgets.VectorWidgets import ColorEntry
 from direct.showbase.TkGlobal import spawnTkLoop
 from direct.showbase.TkGlobal import spawnTkLoop
 import seSceneGraphExplorer
 import seSceneGraphExplorer
-from Tkinter import Frame, IntVar, Checkbutton, Toplevel
-import Pmw, Tkinter
+
+import Pmw, sys
+
+if sys.version_info >= (3, 0):
+    from tkinter import Frame, IntVar, Checkbutton, Toplevel
+    import tkinter
+else:
+    from Tkinter import Frame, IntVar, Checkbutton, Toplevel
+    import Tkinter as tkinter
+
 
 
 class sideWindow(AppShell):
 class sideWindow(AppShell):
     #################################################################
     #################################################################
@@ -65,7 +73,7 @@ class sideWindow(AppShell):
         self.parent.resizable(False,False) ## Disable the ability to resize for this Window.
         self.parent.resizable(False,False) ## Disable the ability to resize for this Window.
 
 
     def appInit(self):
     def appInit(self):
-        print '----SideWindow is Initialized!!'
+        print('----SideWindow is Initialized!!')
 
 
     def createInterface(self):
     def createInterface(self):
         # The interior of the toplevel panel
         # The interior of the toplevel panel
@@ -73,7 +81,7 @@ class sideWindow(AppShell):
         mainFrame = Frame(interior)
         mainFrame = Frame(interior)
         ## Creat NoteBook
         ## Creat NoteBook
         self.notebookFrame = Pmw.NoteBook(mainFrame)
         self.notebookFrame = Pmw.NoteBook(mainFrame)
-        self.notebookFrame.pack(fill=Tkinter.BOTH,expand=1)
+        self.notebookFrame.pack(fill=tkinter.BOTH,expand=1)
         sgePage = self.notebookFrame.add('Tree Graph')
         sgePage = self.notebookFrame.add('Tree Graph')
         envPage = self.notebookFrame.add('World Setting')
         envPage = self.notebookFrame.add('World Setting')
         self.notebookFrame['raisecommand'] = self.updateInfo
         self.notebookFrame['raisecommand'] = self.updateInfo
@@ -83,7 +91,7 @@ class sideWindow(AppShell):
             sgePage, nodePath = render,
             sgePage, nodePath = render,
             scrolledCanvas_hull_width = 270,
             scrolledCanvas_hull_width = 270,
             scrolledCanvas_hull_height = 570)
             scrolledCanvas_hull_height = 570)
-        self.SGE.pack(fill = Tkinter.BOTH, expand = 0)
+        self.SGE.pack(fill = tkinter.BOTH, expand = 0)
 
 
         ## World Setting Page
         ## World Setting Page
         envPage = Frame(envPage)
         envPage = Frame(envPage)
@@ -95,8 +103,8 @@ class sideWindow(AppShell):
             text = 'Enable Lighting',
             text = 'Enable Lighting',
             variable = self.LightingVar,
             variable = self.LightingVar,
             command = self.toggleLights)
             command = self.toggleLights)
-        self.LightingButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.LightingButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.CollisionVar = IntVar()
         self.CollisionVar = IntVar()
@@ -106,8 +114,8 @@ class sideWindow(AppShell):
             text = 'Show Collision Object',
             text = 'Show Collision Object',
             variable = self.CollisionVar,
             variable = self.CollisionVar,
             command = self.showCollision)
             command = self.showCollision)
-        self.CollisionButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.CollisionButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.ParticleVar = IntVar()
         self.ParticleVar = IntVar()
@@ -117,8 +125,8 @@ class sideWindow(AppShell):
             text = 'Show Particle Dummy',
             text = 'Show Particle Dummy',
             variable = self.ParticleVar,
             variable = self.ParticleVar,
             command = self.enableParticle)
             command = self.enableParticle)
-        self.ParticleButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.ParticleButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.baseUseDriveVar = IntVar()
         self.baseUseDriveVar = IntVar()
@@ -128,8 +136,8 @@ class sideWindow(AppShell):
             text = 'Enable base.usedrive',
             text = 'Enable base.usedrive',
             variable = self.baseUseDriveVar,
             variable = self.baseUseDriveVar,
             command = self.enablebaseUseDrive)
             command = self.enablebaseUseDrive)
-        self.baseUseDriveButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.baseUseDriveButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.backfaceVar = IntVar()
         self.backfaceVar = IntVar()
@@ -139,8 +147,8 @@ class sideWindow(AppShell):
             text = 'Enable BackFace',
             text = 'Enable BackFace',
             variable = self.backfaceVar,
             variable = self.backfaceVar,
             command = self.toggleBackface)
             command = self.toggleBackface)
-        self.backfaceButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.backfaceButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.textureVar = IntVar()
         self.textureVar = IntVar()
@@ -150,8 +158,8 @@ class sideWindow(AppShell):
             text = 'Enable Texture',
             text = 'Enable Texture',
             variable = self.textureVar,
             variable = self.textureVar,
             command = self.toggleTexture)
             command = self.toggleTexture)
-        self.textureButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.textureButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.wireframeVar = IntVar()
         self.wireframeVar = IntVar()
@@ -161,8 +169,8 @@ class sideWindow(AppShell):
             text = 'Enable Wireframe',
             text = 'Enable Wireframe',
             variable = self.wireframeVar,
             variable = self.wireframeVar,
             command = self.toggleWireframe)
             command = self.toggleWireframe)
-        self.wireframeButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.wireframeButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.gridVar = IntVar()
         self.gridVar = IntVar()
@@ -172,8 +180,8 @@ class sideWindow(AppShell):
             text = 'Enable Grid',
             text = 'Enable Grid',
             variable = self.gridVar,
             variable = self.gridVar,
             command = self.toggleGrid)
             command = self.toggleGrid)
-        self.gridButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.gridButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.widgetVisVar = IntVar()
         self.widgetVisVar = IntVar()
@@ -183,8 +191,8 @@ class sideWindow(AppShell):
             text = 'Enable WidgetVisible',
             text = 'Enable WidgetVisible',
             variable = self.widgetVisVar,
             variable = self.widgetVisVar,
             command = self.togglewidgetVis)
             command = self.togglewidgetVis)
-        self.widgetVisButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.widgetVisButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.enableAutoCameraVar = IntVar()
         self.enableAutoCameraVar = IntVar()
@@ -194,17 +202,17 @@ class sideWindow(AppShell):
             text = 'Enable Auto Camera Movement for Loading Objects',
             text = 'Enable Auto Camera Movement for Loading Objects',
             variable = self.enableAutoCameraVar,
             variable = self.enableAutoCameraVar,
             command = self.toggleAutoCamera)
             command = self.toggleAutoCamera)
-        self.enableAutoCameraButton.pack(side=Tkinter.LEFT, expand=False)
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        self.enableAutoCameraButton.pack(side=tkinter.LEFT, expand=False)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         pageFrame = Frame(envPage)
         pageFrame = Frame(envPage)
         self.backgroundColor = ColorEntry(
         self.backgroundColor = ColorEntry(
             pageFrame, text = 'BG Color', value=self.worldColor)
             pageFrame, text = 'BG Color', value=self.worldColor)
         self.backgroundColor['command'] = self.setBackgroundColorVec
         self.backgroundColor['command'] = self.setBackgroundColorVec
         self.backgroundColor['resetValue'] = [0,0,0,0]
         self.backgroundColor['resetValue'] = [0,0,0,0]
-        self.backgroundColor.pack(side=Tkinter.LEFT, expand=False)
+        self.backgroundColor.pack(side=tkinter.LEFT, expand=False)
         self.bind(self.backgroundColor, 'Set background color')
         self.bind(self.backgroundColor, 'Set background color')
-        pageFrame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True)
+        pageFrame.pack(side=tkinter.TOP, fill=tkinter.X, expand=True)
 
 
         envPage.pack(expand=False)
         envPage.pack(expand=False)
 
 
@@ -320,11 +328,11 @@ class sideWindow(AppShell):
         #
         #
         #################################################################
         #################################################################
         if self.enableBaseUseDrive==0:
         if self.enableBaseUseDrive==0:
-            print 'Enabled'
+            print('Enabled')
             base.useDrive()
             base.useDrive()
             self.enableBaseUseDrive = 1
             self.enableBaseUseDrive = 1
         else:
         else:
-            print 'disabled'
+            print('disabled')
             #base.useTrackball()
             #base.useTrackball()
             base.disableMouse()
             base.disableMouse()
             self.enableBaseUseDrive = 0
             self.enableBaseUseDrive = 0

+ 3 - 4
contrib/src/sceneeditor/collisionWindow.py

@@ -9,9 +9,8 @@ from seColorEntry import *
 from direct.tkwidgets import VectorWidgets
 from direct.tkwidgets import VectorWidgets
 from direct.tkwidgets import Floater
 from direct.tkwidgets import Floater
 from direct.tkwidgets import Slider
 from direct.tkwidgets import Slider
-from Tkinter import *
 import string, math, types
 import string, math, types
-from pandac.PandaModules import *
+from panda3d.core import *
 
 
 
 
 class collisionWindow(AppShell):
 class collisionWindow(AppShell):
@@ -195,7 +194,7 @@ class collisionWindow(AppShell):
         # put the object into a CollisionNode and attach it to the target nodePath
         # put the object into a CollisionNode and attach it to the target nodePath
         #################################################################
         #################################################################
         collisionObject = None
         collisionObject = None
-        print self.objType
+        print(self.objType)
         if self.objType=='collisionPolygon':
         if self.objType=='collisionPolygon':
             pointA =  Point3(float(self.widgetDict['PolygonPoint A'][0]._entry.get()),
             pointA =  Point3(float(self.widgetDict['PolygonPoint A'][0]._entry.get()),
                              float(self.widgetDict['PolygonPoint A'][1]._entry.get()),
                              float(self.widgetDict['PolygonPoint A'][1]._entry.get()),
@@ -236,7 +235,7 @@ class collisionWindow(AppShell):
                            float(self.widgetDict['RayDirection'][1]._entry.get()),
                            float(self.widgetDict['RayDirection'][1]._entry.get()),
                            float(self.widgetDict['RayDirection'][2]._entry.get()))
                            float(self.widgetDict['RayDirection'][2]._entry.get()))
 
 
-            print vector, point
+            print(vector, point)
 
 
             collisionObject = CollisionRay()
             collisionObject = CollisionRay()
             collisionObject.setOrigin(point)
             collisionObject.setOrigin(point)

+ 186 - 180
contrib/src/sceneeditor/controllerWindow.py

@@ -4,8 +4,14 @@
 #################################################################
 #################################################################
 
 
 from direct.tkwidgets.AppShell import AppShell
 from direct.tkwidgets.AppShell import AppShell
-from Tkinter import Frame, Label, Button
-import string, Pmw, Tkinter
+import sys, Pmw
+
+if sys.version_info >= (3, 0):
+    from tkinter import Frame, Label, Button
+    import tkinter
+else:
+    from Tkinter import Frame, Label, Button
+    import Tkinter as tkinter
 
 
 # Define the Category
 # Define the Category
 KEYBOARD = 'Keyboard-'
 KEYBOARD = 'Keyboard-'
@@ -75,11 +81,11 @@ class controllerWindow(AppShell):
         self.cotrollerTypeEntry = self.createcomponent(
         self.cotrollerTypeEntry = self.createcomponent(
             'Controller Type', (), None,
             'Controller Type', (), None,
             Pmw.ComboBox, (frame,),
             Pmw.ComboBox, (frame,),
-            labelpos = Tkinter.W, label_text='Controller Type:', entry_width = 20,entry_state = Tkinter.DISABLED,
+            labelpos = tkinter.W, label_text='Controller Type:', entry_width = 20,entry_state = tkinter.DISABLED,
             selectioncommand = self.setControllerType,
             selectioncommand = self.setControllerType,
             scrolledlist_items = self.controllerList)
             scrolledlist_items = self.controllerList)
-        self.cotrollerTypeEntry.pack(side=Tkinter.LEFT)
-        frame.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=False, pady = 3)
+        self.cotrollerTypeEntry.pack(side=tkinter.LEFT)
+        frame.pack(side=tkinter.TOP, fill=tkinter.X, expand=False, pady = 3)
         self.cotrollerTypeEntry.selectitem('Keyboard', setentry=True)
         self.cotrollerTypeEntry.selectitem('Keyboard', setentry=True)
 
 
         self.inputZone = Pmw.Group(mainFrame, tag_pyclass = None)
         self.inputZone = Pmw.Group(mainFrame, tag_pyclass = None)
@@ -102,7 +108,7 @@ class controllerWindow(AppShell):
         keyboardPage = self.objNotebook.add('Keyboard')
         keyboardPage = self.objNotebook.add('Keyboard')
         tarckerPage = self.objNotebook.add('Tracker')
         tarckerPage = self.objNotebook.add('Tracker')
         self.objNotebook.selectpage('Keyboard')
         self.objNotebook.selectpage('Keyboard')
-        self.objNotebook.pack(side = Tkinter.TOP, fill='both',expand=False)
+        self.objNotebook.pack(side = tkinter.TOP, fill='both',expand=False)
         # Put this here so it isn't called right away
         # Put this here so it isn't called right away
         self.objNotebook['raisecommand'] = self.updateControlInfo
         self.objNotebook['raisecommand'] = self.updateControlInfo
 
 
@@ -113,11 +119,11 @@ class controllerWindow(AppShell):
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Target Type', (), None,
             'Target Type', (), None,
             Pmw.ComboBox, (Interior,),
             Pmw.ComboBox, (Interior,),
-            labelpos = Tkinter.W, label_text='Target Object:', entry_width = 20, entry_state = Tkinter.DISABLED,
+            labelpos = tkinter.W, label_text='Target Object:', entry_width = 20, entry_state = tkinter.DISABLED,
             selectioncommand = self.setTargetObj,
             selectioncommand = self.setTargetObj,
             scrolledlist_items = self.listOfObj)
             scrolledlist_items = self.listOfObj)
-        widget.pack(side=Tkinter.LEFT, padx=3)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 5)
+        widget.pack(side=tkinter.LEFT, padx=3)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 5)
         widget.selectitem(self.nameOfNode, setentry=True)
         widget.selectitem(self.nameOfNode, setentry=True)
         self.widgetsDict[KEYBOARD+'ObjList'] = widget
         self.widgetsDict[KEYBOARD+'ObjList'] = widget
 
 
@@ -126,411 +132,411 @@ class controllerWindow(AppShell):
         settingFrame = inputZone.interior()
         settingFrame = inputZone.interior()
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Assign a Key For:').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True,pady = 6 )
+        widget = Label(Interior, text = 'Assign a Key For:').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True,pady = 6 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Forward   :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Forward   :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Forward key', (), None,
             'Forward key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyForward'],
             value = self.keyboardMapDict['KeyForward'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyForward'] = widget
         self.widgetsDict[KEYBOARD+'KeyForward'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Forward Speed', (), None,
             'Forward Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedForward'],
             value = self.keyboardSpeedDict['SpeedForward'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedForward'] = widget
         self.widgetsDict[KEYBOARD+'SpeedForward'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Backward  :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Backward  :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Backward key', (), None,
             'Backward key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyBackward'],
             value = self.keyboardMapDict['KeyBackward'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyBackward'] = widget
         self.widgetsDict[KEYBOARD+'KeyBackward'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Backward Speed', (), None,
             'Backward Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedBackward'],
             value = self.keyboardSpeedDict['SpeedBackward'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedBackward'] = widget
         self.widgetsDict[KEYBOARD+'SpeedBackward'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Right     :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Right     :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Right key', (), None,
             'Right key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyRight'],
             value = self.keyboardMapDict['KeyRight'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyRight'] = widget
         self.widgetsDict[KEYBOARD+'KeyRight'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Right Speed', (), None,
             'Right Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedRight'],
             value = self.keyboardSpeedDict['SpeedRight'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedRight'] = widget
         self.widgetsDict[KEYBOARD+'SpeedRight'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Left      :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Left      :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Left key', (), None,
             'Left key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyLeft'],
             value = self.keyboardMapDict['KeyLeft'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyLeft'] = widget
         self.widgetsDict[KEYBOARD+'KeyLeft'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Left Speed', (), None,
             'Left Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedLeft'],
             value = self.keyboardSpeedDict['SpeedLeft'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedLeft'] = widget
         self.widgetsDict[KEYBOARD+'SpeedLeft'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Up        :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Up        :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Up key', (), None,
             'Up key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyUp'],
             value = self.keyboardMapDict['KeyUp'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyUp'] = widget
         self.widgetsDict[KEYBOARD+'KeyUp'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Up Speed', (), None,
             'Up Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedUp'],
             value = self.keyboardSpeedDict['SpeedUp'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedUp'] = widget
         self.widgetsDict[KEYBOARD+'SpeedUp'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Down      :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Down      :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Down key', (), None,
             'Down key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyDown'],
             value = self.keyboardMapDict['KeyDown'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyDown'] = widget
         self.widgetsDict[KEYBOARD+'KeyDown'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Down Speed', (), None,
             'Down Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedDown'],
             value = self.keyboardSpeedDict['SpeedDown'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedDown'] = widget
         self.widgetsDict[KEYBOARD+'SpeedDown'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Turn Right:', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Turn Right:', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn Right key', (), None,
             'Turn Right key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyTurnRight'],
             value = self.keyboardMapDict['KeyTurnRight'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyTurnRight'] = widget
         self.widgetsDict[KEYBOARD+'KeyTurnRight'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn Right Speed', (), None,
             'Turn Right Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedTurnRight'],
             value = self.keyboardSpeedDict['SpeedTurnRight'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedTurnRight'] = widget
         self.widgetsDict[KEYBOARD+'SpeedTurnRight'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Turn Left :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Turn Left :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn Left key', (), None,
             'Turn Left key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyTurnLeft'],
             value = self.keyboardMapDict['KeyTurnLeft'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyTurnLeft'] = widget
         self.widgetsDict[KEYBOARD+'KeyTurnLeft'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn Left Speed', (), None,
             'Turn Left Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedTurnLeft'],
             value = self.keyboardSpeedDict['SpeedTurnLeft'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedTurnLeft'] = widget
         self.widgetsDict[KEYBOARD+'SpeedTurnLeft'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Turn UP   :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Turn UP   :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn UP key', (), None,
             'Turn UP key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyTurnUp'],
             value = self.keyboardMapDict['KeyTurnUp'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyTurnUp'] = widget
         self.widgetsDict[KEYBOARD+'KeyTurnUp'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn UP Speed', (), None,
             'Turn UP Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedTurnUp'],
             value = self.keyboardSpeedDict['SpeedTurnUp'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedTurnUp'] = widget
         self.widgetsDict[KEYBOARD+'SpeedTurnUp'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Turn Down :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Turn Down :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn Down key', (), None,
             'Turn Down key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyTurnDown'],
             value = self.keyboardMapDict['KeyTurnDown'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyTurnDown'] = widget
         self.widgetsDict[KEYBOARD+'KeyTurnDown'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Turn Down Speed', (), None,
             'Turn Down Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedTurnDown'],
             value = self.keyboardSpeedDict['SpeedTurnDown'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedTurnDown'] = widget
         self.widgetsDict[KEYBOARD+'SpeedTurnDown'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Roll Right:', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Roll Right:', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Roll Right key', (), None,
             'Roll Right key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyRollRight'],
             value = self.keyboardMapDict['KeyRollRight'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyRollRight'] = widget
         self.widgetsDict[KEYBOARD+'KeyRollRight'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Roll Right Speed', (), None,
             'Roll Right Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedRollRight'],
             value = self.keyboardSpeedDict['SpeedRollRight'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedRollRight'] = widget
         self.widgetsDict[KEYBOARD+'SpeedRollRight'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Roll Left :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Roll Left :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Roll Left key', (), None,
             'Roll Left key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyRollLeft'],
             value = self.keyboardMapDict['KeyRollLeft'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyRollLeft'] = widget
         self.widgetsDict[KEYBOARD+'KeyRollLeft'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Roll Left Speed', (), None,
             'Roll Left Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedRollLeft'],
             value = self.keyboardSpeedDict['SpeedRollLeft'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedRollLeft'] = widget
         self.widgetsDict[KEYBOARD+'SpeedRollLeft'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale UP :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale UP :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale UP key', (), None,
             'Scale UP key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleUp'],
             value = self.keyboardMapDict['KeyScaleUp'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleUp'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleUp'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale UP Speed', (), None,
             'Scale UP Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleUp'],
             value = self.keyboardSpeedDict['SpeedScaleUp'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleUp'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleUp'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale Down:', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale Down:', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Down key', (), None,
             'Scale Down key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleDown'],
             value = self.keyboardMapDict['KeyScaleDown'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleDown'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleDown'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Down Speed', (), None,
             'Scale Down Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleDown'],
             value = self.keyboardSpeedDict['SpeedScaleDown'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleDown'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleDown'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale X UP :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale X UP :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale X UP key', (), None,
             'Scale X UP key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleXUp'],
             value = self.keyboardMapDict['KeyScaleXUp'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleXUp'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleXUp'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale X UP Speed', (), None,
             'Scale X UP Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleXUp'],
             value = self.keyboardSpeedDict['SpeedScaleXUp'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleXUp'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleXUp'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale X Down:', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale X Down:', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale X Down key', (), None,
             'Scale X Down key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleXDown'],
             value = self.keyboardMapDict['KeyScaleXDown'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleXDown'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleXDown'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Down X Speed', (), None,
             'Scale Down X Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleXDown'],
             value = self.keyboardSpeedDict['SpeedScaleXDown'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleXDown'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleXDown'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale Y UP :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale Y UP :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Y UP key', (), None,
             'Scale Y UP key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleYUp'],
             value = self.keyboardMapDict['KeyScaleYUp'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleYUp'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleYUp'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Y UP Speed', (), None,
             'Scale Y UP Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleYUp'],
             value = self.keyboardSpeedDict['SpeedScaleYUp'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleYUp'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleYUp'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale Y Down:', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale Y Down:', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Y Down key', (), None,
             'Scale Y Down key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleYDown'],
             value = self.keyboardMapDict['KeyScaleYDown'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleYDown'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleYDown'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Down XY Speed', (), None,
             'Scale Down XY Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleYDown'],
             value = self.keyboardSpeedDict['SpeedScaleYDown'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleYDown'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleYDown'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale Z UP :', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale Z UP :', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Z UP key', (), None,
             'Scale Z UP key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleZUp'],
             value = self.keyboardMapDict['KeyScaleZUp'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleZUp'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleZUp'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Z UP Speed', (), None,
             'Scale Z UP Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleZUp'],
             value = self.keyboardSpeedDict['SpeedScaleZUp'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleZUp'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleZUp'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
         Interior = Frame(settingFrame)
         Interior = Frame(settingFrame)
-        widget = Label(Interior, text = 'Scale Z Down:', width = 20, anchor = Tkinter.W).pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = 'Scale Z Down:', width = 20, anchor = tkinter.W).pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Z Down key', (), None,
             'Scale Z Down key', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardMapDict['KeyScaleZDown'],
             value = self.keyboardMapDict['KeyScaleZDown'],
-            labelpos = Tkinter.W, label_text='Key :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Key :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'KeyScaleZDown'] = widget
         self.widgetsDict[KEYBOARD+'KeyScaleZDown'] = widget
-        widget = Label(Interior, text = '   ').pack(side=Tkinter.LEFT, expand = False)
+        widget = Label(Interior, text = '   ').pack(side=tkinter.LEFT, expand = False)
         widget = self.createcomponent(
         widget = self.createcomponent(
             'Scale Down Z Speed', (), None,
             'Scale Down Z Speed', (), None,
             Pmw.EntryField, (Interior,),
             Pmw.EntryField, (Interior,),
             value = self.keyboardSpeedDict['SpeedScaleZDown'],
             value = self.keyboardSpeedDict['SpeedScaleZDown'],
-            labelpos = Tkinter.W, label_text='Speed :', entry_width = 10)
-        widget.pack(side=Tkinter.LEFT, expand = False)
+            labelpos = tkinter.W, label_text='Speed :', entry_width = 10)
+        widget.pack(side=tkinter.LEFT, expand = False)
         self.widgetsDict[KEYBOARD+'SpeedScaleZDown'] = widget
         self.widgetsDict[KEYBOARD+'SpeedScaleZDown'] = widget
-        widget = Label(Interior, text = 'Per Second').pack(side=Tkinter.LEFT, expand = False)
-        Interior.pack(side=Tkinter.TOP, fill=Tkinter.X, expand=True, pady = 4 )
+        widget = Label(Interior, text = 'Per Second').pack(side=tkinter.LEFT, expand = False)
+        Interior.pack(side=tkinter.TOP, fill=tkinter.X, expand=True, pady = 4 )
 
 
-        assignFrame.pack(side=Tkinter.TOP, expand=True, fill = Tkinter.X)
-        keyboardPage.pack(side=Tkinter.TOP, expand=True, fill = Tkinter.X)
+        assignFrame.pack(side=tkinter.TOP, expand=True, fill = tkinter.X)
+        keyboardPage.pack(side=tkinter.TOP, expand=True, fill = tkinter.X)
 
 
         ####################################################################
         ####################################################################
         ####################################################################
         ####################################################################
@@ -539,12 +545,12 @@ class controllerWindow(AppShell):
         ####################################################################
         ####################################################################
         # Pack the mainFrame
         # Pack the mainFrame
         frame = Frame(mainFrame)
         frame = Frame(mainFrame)
-        widget = Button(frame, text='OK', width = 13, command=self.ok_press).pack(side=Tkinter.RIGHT)
-        widget = Button(frame, text='Enable Control', width = 13, command=self.enableControl).pack(side=Tkinter.LEFT)
-        widget = Button(frame, text='Disable Control', width = 13, command=self.disableControl).pack(side=Tkinter.LEFT)
-        widget = Button(frame, text='Save & Keep', width = 13, command=self.saveKeepControl).pack(side=Tkinter.LEFT)
-        frame.pack(side = Tkinter.BOTTOM, expand=1, fill = Tkinter.X)
-        mainFrame.pack(expand=1, fill = Tkinter.BOTH)
+        widget = Button(frame, text='OK', width = 13, command=self.ok_press).pack(side=tkinter.RIGHT)
+        widget = Button(frame, text='Enable Control', width = 13, command=self.enableControl).pack(side=tkinter.LEFT)
+        widget = Button(frame, text='Disable Control', width = 13, command=self.disableControl).pack(side=tkinter.LEFT)
+        widget = Button(frame, text='Save & Keep', width = 13, command=self.saveKeepControl).pack(side=tkinter.LEFT)
+        frame.pack(side = tkinter.BOTTOM, expand=1, fill = tkinter.X)
+        mainFrame.pack(expand=1, fill = tkinter.BOTH)
 
 
     def onDestroy(self, event):
     def onDestroy(self, event):
         # Check if user wish to keep the control after the window closed.
         # Check if user wish to keep the control after the window closed.
@@ -688,7 +694,7 @@ class controllerWindow(AppShell):
                 self.keyboardMapDict[index] = self.widgetsDict['Keyboard-'+index].getvalue()
                 self.keyboardMapDict[index] = self.widgetsDict['Keyboard-'+index].getvalue()
             for index in self.keyboardSpeedDict:
             for index in self.keyboardSpeedDict:
                 self.keyboardSpeedDict[index] = float(self.widgetsDict['Keyboard-'+index].getvalue())
                 self.keyboardSpeedDict[index] = float(self.widgetsDict['Keyboard-'+index].getvalue())
-            print self.nodePath
+            print(self.nodePath)
             messenger.send('ControlW_saveSetting', ['Keyboard', [self.nodePath, self.keyboardMapDict, self.keyboardSpeedDict]])
             messenger.send('ControlW_saveSetting', ['Keyboard', [self.nodePath, self.keyboardMapDict, self.keyboardSpeedDict]])
         return
         return
 
 

+ 50 - 48
contrib/src/sceneeditor/dataHolder.py

@@ -2,13 +2,15 @@
 # TK and PMW INTERFACE MODULES#
 # TK and PMW INTERFACE MODULES#
 ###############################
 ###############################
 from direct.showbase.TkGlobal import*
 from direct.showbase.TkGlobal import*
-from tkFileDialog import *
 import Pmw
 import Pmw
-import tkFileDialog
-import tkMessageBox
 from direct.tkwidgets import Dial
 from direct.tkwidgets import Dial
 from direct.tkwidgets import Floater
 from direct.tkwidgets import Floater
 
 
+if sys.version_info >= (3, 0):
+    from tkinter.filedialog import askopenfilename
+else:
+    from tkFileDialog import askopenfilename
+
 
 
 #############################
 #############################
 # Scene Editor Python Files #
 # Scene Editor Python Files #
@@ -154,7 +156,7 @@ class dataHolder:
         self.ActorNum=0
         self.ActorNum=0
         self.theScene=None
         self.theScene=None
         messenger.send('SGE_Update Explorer',[render])
         messenger.send('SGE_Update Explorer',[render])
-        print 'Scene should be cleaned up!'
+        print('Scene should be cleaned up!')
 
 
     def removeObj(self, nodePath):
     def removeObj(self, nodePath):
         #################################################################
         #################################################################
@@ -169,7 +171,7 @@ class dataHolder:
         childrenList = nodePath.getChildren()
         childrenList = nodePath.getChildren()
 
 
 
 
-        if self.ModelDic.has_key(name):
+        if name in self.ModelDic:
             del self.ModelDic[name]
             del self.ModelDic[name]
             del self.ModelRefDic[name]
             del self.ModelRefDic[name]
             if len(childrenList) != 0:
             if len(childrenList) != 0:
@@ -178,7 +180,7 @@ class dataHolder:
             nodePath.removeNode()
             nodePath.removeNode()
             self.ModelNum -= 1
             self.ModelNum -= 1
             pass
             pass
-        elif self.ActorDic.has_key(name):
+        elif name in self.ActorDic:
             del self.ActorDic[name]
             del self.ActorDic[name]
             del self.ActorRefDic[name]
             del self.ActorRefDic[name]
             if len(childrenList) != 0:
             if len(childrenList) != 0:
@@ -187,14 +189,14 @@ class dataHolder:
             nodePath.removeNode()
             nodePath.removeNode()
             self.ActorNum -= 1
             self.ActorNum -= 1
             pass
             pass
-        elif self.collisionDict.has_key(name):
+        elif name in self.collisionDict:
             del self.collisionDict[name]
             del self.collisionDict[name]
             if len(childrenList) != 0:
             if len(childrenList) != 0:
                 for node in childrenList:
                 for node in childrenList:
                     self.removeObj(node)
                     self.removeObj(node)
             nodePath.removeNode()
             nodePath.removeNode()
             pass
             pass
-        elif self.dummyDict.has_key(name):
+        elif name in self.dummyDict:
             del self.dummyDict[name]
             del self.dummyDict[name]
             if len(childrenList) != 0:
             if len(childrenList) != 0:
                 for node in childrenList:
                 for node in childrenList:
@@ -207,12 +209,12 @@ class dataHolder:
                     self.removeObj(node)
                     self.removeObj(node)
             list = self.lightManager.delete(name)
             list = self.lightManager.delete(name)
             return list
             return list
-        elif self.particleNodes.has_key(name):
+        elif name in self.particleNodes:
             self.particleNodes[name].removeNode()
             self.particleNodes[name].removeNode()
             del self.particleNodes[name]
             del self.particleNodes[name]
             del self.particleDict[name]
             del self.particleDict[name]
         else:
         else:
-            print 'You cannot remove this NodePath'
+            print('You cannot remove this NodePath')
             return
             return
 
 
         messenger.send('SGE_Update Explorer',[render])
         messenger.send('SGE_Update Explorer',[render])
@@ -237,15 +239,15 @@ class dataHolder:
         cHpr = hpr
         cHpr = hpr
         cScale = scale
         cScale = scale
         parent = nodePath.getParent()
         parent = nodePath.getParent()
-        if self.ActorDic.has_key(name):
+        if name in self.ActorDic:
             holder = self.ActorDic
             holder = self.ActorDic
             holderRef = self.ActorRefDic
             holderRef = self.ActorRefDic
             isModel = False
             isModel = False
-        elif self.ModelDic.has_key(name):
+        elif name in self.ModelDic:
             holder = self.ModelDic
             holder = self.ModelDic
             holderRef = self.ModelRefDic
             holderRef = self.ModelRefDic
         else:
         else:
-            print '---- DataHolder: Target Obj is not a legal object could be duplicate!'
+            print('---- DataHolder: Target Obj is not a legal object could be duplicate!')
             return
             return
 
 
         FilePath = holderRef[name]
         FilePath = holderRef[name]
@@ -356,7 +358,7 @@ class dataHolder:
         # This funciton will return True if there is an Actor in the scene named "name"
         # This funciton will return True if there is an Actor in the scene named "name"
         # and will return False if not.
         # and will return False if not.
         ###########################################################################
         ###########################################################################
-        return self.ActorDic.has_key(name)
+        return name in self.ActorDic
 
 
     def getActor(self, name):
     def getActor(self, name):
         ###########################################################################
         ###########################################################################
@@ -366,7 +368,7 @@ class dataHolder:
         if self.isActor(name):
         if self.isActor(name):
             return self.ActorDic[name]
             return self.ActorDic[name]
         else:
         else:
-            print '----No Actor named: ', name
+            print('----No Actor named: ', name)
             return None
             return None
 
 
     def getModel(self, name):
     def getModel(self, name):
@@ -377,7 +379,7 @@ class dataHolder:
         if self.isModel(name):
         if self.isModel(name):
             return self.ModelDic[name]
             return self.ModelDic[name]
         else:
         else:
-            print '----No Model named: ', name
+            print('----No Model named: ', name)
             return None
             return None
 
 
     def isModel(self, name):
     def isModel(self, name):
@@ -386,7 +388,7 @@ class dataHolder:
         # This funciton will return True if there is a Model in the scene named "name"
         # This funciton will return True if there is a Model in the scene named "name"
         # and will return False if not.
         # and will return False if not.
         ###########################################################################
         ###########################################################################
-        return self.ModelDic.has_key(name)
+        return name in self.ModelDic
 
 
     def loadAnimation(self,name, Dic):
     def loadAnimation(self,name, Dic):
         ###########################################################################
         ###########################################################################
@@ -406,7 +408,7 @@ class dataHolder:
             messenger.send('DataH_loadFinish'+name)
             messenger.send('DataH_loadFinish'+name)
             return
             return
         else:
         else:
-            print '------ Error when loading animation for Actor: ', name
+            print('------ Error when loading animation for Actor: ', name)
 
 
     def removeAnimation(self, name, anim):
     def removeAnimation(self, name, anim):
         ###########################################################################
         ###########################################################################
@@ -527,7 +529,7 @@ class dataHolder:
             self.ActorDic[nName]= self.ActorDic[oName]
             self.ActorDic[nName]= self.ActorDic[oName]
             self.ActorRefDic[nName]= self.ActorRefDic[oName]
             self.ActorRefDic[nName]= self.ActorRefDic[oName]
             self.ActorDic[nName].setName(nName)
             self.ActorDic[nName].setName(nName)
-            if self.blendAnimDict.has_key(oName):
+            if oName in self.blendAnimDict:
                 self.blendAnimDict[nName] = self.blendAnimDict[oName]
                 self.blendAnimDict[nName] = self.blendAnimDict[oName]
                 del self.blendAnimDict[oName]
                 del self.blendAnimDict[oName]
             del self.ActorDic[oName]
             del self.ActorDic[oName]
@@ -540,16 +542,16 @@ class dataHolder:
             del self.ModelRefDic[oName]
             del self.ModelRefDic[oName]
         elif self.lightManager.isLight(oName):
         elif self.lightManager.isLight(oName):
             list, lightNode = self.lightManager.rename(oName, nName)
             list, lightNode = self.lightManager.rename(oName, nName)
-        elif self.dummyDict.has_key(oName):
+        elif oName in self.dummyDict:
             self.dummyDict[nName]= self.dummyDict[oName]
             self.dummyDict[nName]= self.dummyDict[oName]
             self.dummyDict[nName].setName(nName)
             self.dummyDict[nName].setName(nName)
             del self.dummyDict[oName]
             del self.dummyDict[oName]
-        elif self.collisionDict.has_key(oName):
+        elif oName in self.collisionDict:
             self.collisionDict[nName]= self.collisionDict[oName]
             self.collisionDict[nName]= self.collisionDict[oName]
             self.collisionDict[nName].setName(nName)
             self.collisionDict[nName].setName(nName)
             del self.collisionDict[oName]
             del self.collisionDict[oName]
 
 
-        elif self.particleNodes.has_key(oName):
+        elif oName in self.particleNodes:
             self.particleNodes[nName]= self.particleNodes[oName]
             self.particleNodes[nName]= self.particleNodes[oName]
             self.particleDict[nName]= self.particleDict[oName]
             self.particleDict[nName]= self.particleDict[oName]
             self.particleDict[nName].setName(nName)
             self.particleDict[nName].setName(nName)
@@ -557,9 +559,9 @@ class dataHolder:
             del self.particleNodes[oName]
             del self.particleNodes[oName]
             del self.particleDict[oName]
             del self.particleDict[oName]
         else:
         else:
-            print '----Error: This Object is not allowed to this function!'
+            print('----Error: This Object is not allowed to this function!')
 
 
-        if self.curveDict.has_key(oName):
+        if oName in self.curveDict:
             self.curveDict[nName] = self.curveDict[oName]
             self.curveDict[nName] = self.curveDict[oName]
             del self.curveDict[oName]
             del self.curveDict[oName]
 
 
@@ -578,11 +580,11 @@ class dataHolder:
             return True
             return True
         elif self.lightManager.isLight(name):
         elif self.lightManager.isLight(name):
             return True
             return True
-        elif self.dummyDict.has_key(name):
+        elif name in self.dummyDict:
             return True
             return True
-        elif self.collisionDict.has_key(name):
+        elif name in self.collisionDict:
             return True
             return True
-        elif self.particleNodes.has_key(name):
+        elif name in self.particleNodes:
             return True
             return True
         elif (name == 'render')or(name == 'SEditor')or(name == 'Lights')or(name == 'camera'):
         elif (name == 'render')or(name == 'SEditor')or(name == 'Lights')or(name == 'camera'):
             return True
             return True
@@ -596,7 +598,7 @@ class dataHolder:
         # using the node name as a reference to assosiate a list which contains all curves related to that node.
         # using the node name as a reference to assosiate a list which contains all curves related to that node.
         ###########################################################################
         ###########################################################################
         name = node.getName()
         name = node.getName()
-        if self.curveDict.has_key(name):
+        if name in self.curveDict:
             self.curveDict[name].append(curveCollection)
             self.curveDict[name].append(curveCollection)
             return
             return
         else:
         else:
@@ -612,7 +614,7 @@ class dataHolder:
         # If the input node has not been bindedwith any curve, it will return None.
         # If the input node has not been bindedwith any curve, it will return None.
         ###########################################################################
         ###########################################################################
         name = nodePath.getName()
         name = nodePath.getName()
-        if self.curveDict.has_key(name):
+        if name in self.curveDict:
             return self.curveDict[name]
             return self.curveDict[name]
         else:
         else:
             return None
             return None
@@ -626,7 +628,7 @@ class dataHolder:
         # This message will be caught by Property Window for this node.
         # This message will be caught by Property Window for this node.
         ###########################################################################
         ###########################################################################
         name =nodePath.getName()
         name =nodePath.getName()
-        if self.curveDict.has_key(name):
+        if name in self.curveDict:
             index = None
             index = None
             for curve in self.curveDict[name]:
             for curve in self.curveDict[name]:
                 if curve.getCurve(0).getName() == curveName:
                 if curve.getCurve(0).getName() == curveName:
@@ -677,12 +679,12 @@ class dataHolder:
         elif self.isLight(name):
         elif self.isLight(name):
             type = 'Light'
             type = 'Light'
             info['lightNode'] = self.lightManager.getLightNode(name)
             info['lightNode'] = self.lightManager.getLightNode(name)
-        elif self.dummyDict.has_key(name):
+        elif name in self.dummyDict:
             type = 'dummy'
             type = 'dummy'
-        elif self.collisionDict.has_key(name):
+        elif name in self.collisionDict:
             type = 'collisionNode'
             type = 'collisionNode'
             info['collisionNode'] = self.collisionDict[name]
             info['collisionNode'] = self.collisionDict[name]
-        if self.curveDict.has_key(name):
+        if name in self.curveDict:
             info['curveList'] = self.getCurveList(nodePath)
             info['curveList'] = self.getCurveList(nodePath)
 
 
         return type, info
         return type, info
@@ -794,7 +796,7 @@ class dataHolder:
         # The formate of thsi dictionary is
         # The formate of thsi dictionary is
         # {"name of Blend Animation" : ["Animation A, Animation B, Effect(Float, 0~1)"]}
         # {"name of Blend Animation" : ["Animation A, Animation B, Effect(Float, 0~1)"]}
         ###########################################################################
         ###########################################################################
-        if self.blendAnimDict.has_key(name):
+        if name in self.blendAnimDict:
             return self.blendAnimDict[name]
             return self.blendAnimDict[name]
         else:
         else:
             return {}
             return {}
@@ -808,8 +810,8 @@ class dataHolder:
         # Also, if this blend is the first blend animation that the target actor has,
         # Also, if this blend is the first blend animation that the target actor has,
         # this function will add a "Blending" tag on this actor which is "True".
         # this function will add a "Blending" tag on this actor which is "True".
         ###########################################################################
         ###########################################################################
-        if self.blendAnimDict.has_key(actorName):
-            if self.blendAnimDict[actorName].has_key(blendName):
+        if actorName in self.blendAnimDict:
+            if blendName in self.blendAnimDict[actorName]:
                 ### replace the original setting
                 ### replace the original setting
                 self.blendAnimDict[actorName][blendName][0] = animNameA
                 self.blendAnimDict[actorName][blendName][0] = animNameA
                 self.blendAnimDict[actorName][blendName][1] = animNameB
                 self.blendAnimDict[actorName][blendName][1] = animNameB
@@ -832,7 +834,7 @@ class dataHolder:
         # it will also rewrite the data to the newest one.
         # it will also rewrite the data to the newest one.
         ###########################################################################
         ###########################################################################
         self.removeBlendAnim(actorName,oName)
         self.removeBlendAnim(actorName,oName)
-        print self.blendAnimDict
+        print(self.blendAnimDict)
         return self.saveBlendAnim(actorName, nName, animNameA, animNameB, effect)
         return self.saveBlendAnim(actorName, nName, animNameA, animNameB, effect)
 
 
     def removeBlendAnim(self, actorName, blendName):
     def removeBlendAnim(self, actorName, blendName):
@@ -844,8 +846,8 @@ class dataHolder:
         # Also, it will check that there is any blended animation remained for this actor,
         # Also, it will check that there is any blended animation remained for this actor,
         # If none, this function will clear the "Blending" tag of this object.
         # If none, this function will clear the "Blending" tag of this object.
         ###########################################################################
         ###########################################################################
-        if self.blendAnimDict.has_key(actorName):
-            if self.blendAnimDict[actorName].has_key(blendName):
+        if actorName in self.blendAnimDict:
+            if blendName in self.blendAnimDict[actorName]:
                 ### replace the original setting
                 ### replace the original setting
                 del self.blendAnimDict[actorName][blendName]
                 del self.blendAnimDict[actorName][blendName]
             if len(self.blendAnimDict[actorName])==0:
             if len(self.blendAnimDict[actorName])==0:
@@ -876,15 +878,15 @@ class dataHolder:
         ###########################################################################
         ###########################################################################
         if name == 'camera':
         if name == 'camera':
             return camera
             return camera
-        elif self.ModelDic.has_key(name):
+        elif name in self.ModelDic:
             return self.ModelDic[name]
             return self.ModelDic[name]
-        elif self.ActorDic.has_key(name):
+        elif name in self.ActorDic:
             return self.ActorDic[name]
             return self.ActorDic[name]
-        elif self.collisionDict.has_key(name):
+        elif name in self.collisionDict:
             return self.collisionDict[name]
             return self.collisionDict[name]
-        elif self.dummyDict.has_key(name):
+        elif name in self.dummyDict:
             return self.dummyDict[name]
             return self.dummyDict[name]
-        elif self.particleNodes.has_key(name):
+        elif name in self.particleNodes:
             return self.particleNodes[name]
             return self.particleNodes[name]
         elif self.lightManager.isLight(name):
         elif self.lightManager.isLight(name):
             return self.lightManager.getLightNode(name)
             return self.lightManager.getLightNode(name)
@@ -935,13 +937,13 @@ class dataHolder:
         ###########################################################################
         ###########################################################################
 
 
         ### Ask for a filename
         ### Ask for a filename
-        OpenFilename = tkFileDialog.askopenfilename(filetypes = [("PY","py")],title = "Load Scene")
+        OpenFilename = askopenfilename(filetypes = [("PY","py")],title = "Load Scene")
         if(not OpenFilename):
         if(not OpenFilename):
             return None
             return None
         f=Filename.fromOsSpecific(OpenFilename)
         f=Filename.fromOsSpecific(OpenFilename)
         fileName=f.getBasenameWoExtension()
         fileName=f.getBasenameWoExtension()
         dirName=f.getFullpathWoExtension()
         dirName=f.getFullpathWoExtension()
-        print "DATAHOLDER::" + dirName
+        print("DATAHOLDER::" + dirName)
         ############################################################################
         ############################################################################
         # Append the path to this file to our sys path where python looks for modules
         # Append the path to this file to our sys path where python looks for modules
         # We do this so that we can use "import"  on our saved scene code and execute it
         # We do this so that we can use "import"  on our saved scene code and execute it
@@ -976,7 +978,7 @@ class dataHolder:
             self.ActorDic[actor]=self.Scene.ActorDic[actor]
             self.ActorDic[actor]=self.Scene.ActorDic[actor]
             #self.ActorRefDic[actor]=self.Scene.ActorRefDic[actor] # Old way of doing absolute paths
             #self.ActorRefDic[actor]=self.Scene.ActorRefDic[actor] # Old way of doing absolute paths
             self.ActorRefDic[actor]=Filename(dirName + "/" + self.Scene.ActorRefDic[actor]) # Relative Paths
             self.ActorRefDic[actor]=Filename(dirName + "/" + self.Scene.ActorRefDic[actor]) # Relative Paths
-            if(self.Scene.blendAnimDict.has_key(str(actor))):
+            if(str(actor) in self.Scene.blendAnimDict):
                 self.blendAnimDict[actor]=self.Scene.blendAnimDict[actor]
                 self.blendAnimDict[actor]=self.Scene.blendAnimDict[actor]
             self.ActorNum=self.ActorNum+1
             self.ActorNum=self.ActorNum+1
 
 
@@ -1006,7 +1008,7 @@ class dataHolder:
                 atten=alight.getAttenuation()
                 atten=alight.getAttenuation()
                 self.lightManager.create('spot',alight.getColor(),alight.getSpecularColor(),thenode.getPos(),thenode.getHpr(),atten.getX(),atten.getY(),atten.getZ(),alight.getExponent(),name=alight.getName(),tag=thenode.getTag("Metadata"))
                 self.lightManager.create('spot',alight.getColor(),alight.getSpecularColor(),thenode.getPos(),thenode.getHpr(),atten.getX(),atten.getY(),atten.getZ(),alight.getExponent(),name=alight.getName(),tag=thenode.getTag("Metadata"))
             else:
             else:
-                print 'Invalid light type'
+                print('Invalid light type')
 
 
         ############################################################################
         ############################################################################
         # Populate Dummy related Dictionaries
         # Populate Dummy related Dictionaries

+ 2 - 2
contrib/src/sceneeditor/duplicateWindow.py

@@ -45,7 +45,7 @@ class duplicateWindow(AppShell):
         self.parent.resizable(False,False) ## Disable the ability to resize for this Window.
         self.parent.resizable(False,False) ## Disable the ability to resize for this Window.
 
 
     def appInit(self):
     def appInit(self):
-        print '----SideWindow is Initialized!!'
+        print('----SideWindow is Initialized!!')
 
 
     def createInterface(self):
     def createInterface(self):
         # The interior of the toplevel panel
         # The interior of the toplevel panel
@@ -122,7 +122,7 @@ class duplicateWindow(AppShell):
         # This message will be caught by sceneEditor.
         # This message will be caught by sceneEditor.
         #################################################################
         #################################################################
         if not self.allEntryValid():
         if not self.allEntryValid():
-            print '---- Duplication Window: Invalid value!!'
+            print('---- Duplication Window: Invalid value!!')
             return
             return
         x = self.move_x.getvalue()
         x = self.move_x.getvalue()
         y = self.move_y.getvalue()
         y = self.move_y.getvalue()

+ 32 - 25
contrib/src/sceneeditor/lightingPanel.py

@@ -7,9 +7,16 @@ from direct.tkwidgets.AppShell import AppShell
 from seColorEntry import *
 from seColorEntry import *
 from direct.tkwidgets.VectorWidgets import Vector3Entry
 from direct.tkwidgets.VectorWidgets import Vector3Entry
 from direct.tkwidgets.Slider import Slider
 from direct.tkwidgets.Slider import Slider
-from Tkinter import Frame, Button, Menubutton, Menu
-import string, math, types, Pmw, Tkinter
-from pandac.PandaModules import *
+import sys, math, types, Pmw
+from panda3d.core import *
+
+if sys.version_info >= (3, 0):
+    from tkinter import Frame, Button, Menubutton, Menu
+    import tkinter
+else:
+    from Tkinter import Frame, Button, Menubutton, Menu
+    import Tkinter as tkinter
+
 
 
 class lightingPanel(AppShell):
 class lightingPanel(AppShell):
     #################################################################
     #################################################################
@@ -51,25 +58,25 @@ class lightingPanel(AppShell):
         mainFrame = Frame(interior)
         mainFrame = Frame(interior)
 
 
         self.listZone = Pmw.Group(mainFrame,tag_pyclass = None)
         self.listZone = Pmw.Group(mainFrame,tag_pyclass = None)
-        self.listZone.pack(expand=0, fill=Tkinter.X,padx=3,pady=3)
+        self.listZone.pack(expand=0, fill=tkinter.X,padx=3,pady=3)
         listFrame = self.listZone.interior()
         listFrame = self.listZone.interior()
 
 
         self.lightEntry = self.createcomponent(
         self.lightEntry = self.createcomponent(
             'Lights List', (), None,
             'Lights List', (), None,
             Pmw.ComboBox, (listFrame,),label_text='Light :',
             Pmw.ComboBox, (listFrame,),label_text='Light :',
-            labelpos = Tkinter.W, entry_width = 25, selectioncommand = self.selectLight,
+            labelpos = tkinter.W, entry_width = 25, selectioncommand = self.selectLight,
             scrolledlist_items = self.lightList)
             scrolledlist_items = self.lightList)
-        self.lightEntry.pack(side=Tkinter.LEFT)
+        self.lightEntry.pack(side=tkinter.LEFT)
 
 
         self.renameButton = self.createcomponent(
         self.renameButton = self.createcomponent(
             'Rename Light', (), None,
             'Rename Light', (), None,
             Button, (listFrame,),
             Button, (listFrame,),
             text = ' Rename ',
             text = ' Rename ',
             command = self.renameLight)
             command = self.renameLight)
-        self.renameButton.pack(side=Tkinter.LEFT)
+        self.renameButton.pack(side=tkinter.LEFT)
 
 
         self.addLighZone = Pmw.Group(listFrame,tag_pyclass = None)
         self.addLighZone = Pmw.Group(listFrame,tag_pyclass = None)
-        self.addLighZone.pack(side=Tkinter.LEFT)
+        self.addLighZone.pack(side=tkinter.LEFT)
         insideFrame = self.addLighZone.interior()
         insideFrame = self.addLighZone.interior()
         self.lightsButton = Menubutton(insideFrame, text = 'Add light',borderwidth = 3,
         self.lightsButton = Menubutton(insideFrame, text = 'Add light',borderwidth = 3,
                                        activebackground = '#909090')
                                        activebackground = '#909090')
@@ -91,13 +98,13 @@ class lightingPanel(AppShell):
             Button, (listFrame,),
             Button, (listFrame,),
             text = '  Delete  ',
             text = '  Delete  ',
             command = self.deleteLight)
             command = self.deleteLight)
-        self.deleteButton.pack(side=Tkinter.LEFT)
+        self.deleteButton.pack(side=tkinter.LEFT)
 
 
         self.lightColor = seColorEntry(
         self.lightColor = seColorEntry(
             mainFrame, text = 'Light Color', value=self.lightColor)
             mainFrame, text = 'Light Color', value=self.lightColor)
         self.lightColor['command'] = self.setLightingColorVec
         self.lightColor['command'] = self.setLightingColorVec
         self.lightColor['resetValue'] = [0.3*255,0.3*255,0.3*255,0]
         self.lightColor['resetValue'] = [0.3*255,0.3*255,0.3*255,0]
-        self.lightColor.pack(fill=Tkinter.X,expand=0)
+        self.lightColor.pack(fill=tkinter.X,expand=0)
         self.bind(self.lightColor, 'Set light color')
         self.bind(self.lightColor, 'Set light color')
 
 
         # Notebook pages for light specific controls
         # Notebook pages for light specific controls
@@ -114,27 +121,27 @@ class lightingPanel(AppShell):
         self.dSpecularColor = seColorEntry(
         self.dSpecularColor = seColorEntry(
             directionalPage, text = 'Specular Color')
             directionalPage, text = 'Specular Color')
         self.dSpecularColor['command'] = self.setSpecularColor
         self.dSpecularColor['command'] = self.setSpecularColor
-        self.dSpecularColor.pack(fill = Tkinter.X, expand = 0)
+        self.dSpecularColor.pack(fill = tkinter.X, expand = 0)
         self.bind(self.dSpecularColor,
         self.bind(self.dSpecularColor,
                   'Set directional light specular color')
                   'Set directional light specular color')
         self.dPosition = Vector3Entry(
         self.dPosition = Vector3Entry(
             directionalPage, text = 'Position')
             directionalPage, text = 'Position')
         self.dPosition['command'] = self.setPosition
         self.dPosition['command'] = self.setPosition
         self.dPosition['resetValue'] = [0,0,0,0]
         self.dPosition['resetValue'] = [0,0,0,0]
-        self.dPosition.pack(fill = Tkinter.X, expand = 0)
+        self.dPosition.pack(fill = tkinter.X, expand = 0)
         self.bind(self.dPosition, 'Set directional light position')
         self.bind(self.dPosition, 'Set directional light position')
         self.dOrientation = Vector3Entry(
         self.dOrientation = Vector3Entry(
             directionalPage, text = 'Orientation')
             directionalPage, text = 'Orientation')
         self.dOrientation['command'] = self.setOrientation
         self.dOrientation['command'] = self.setOrientation
         self.dOrientation['resetValue'] = [0,0,0,0]
         self.dOrientation['resetValue'] = [0,0,0,0]
-        self.dOrientation.pack(fill = Tkinter.X, expand = 0)
+        self.dOrientation.pack(fill = tkinter.X, expand = 0)
         self.bind(self.dOrientation, 'Set directional light orientation')
         self.bind(self.dOrientation, 'Set directional light orientation')
 
 
         # Point light controls
         # Point light controls
         self.pSpecularColor = seColorEntry(
         self.pSpecularColor = seColorEntry(
             pointPage, text = 'Specular Color')
             pointPage, text = 'Specular Color')
         self.pSpecularColor['command'] = self.setSpecularColor
         self.pSpecularColor['command'] = self.setSpecularColor
-        self.pSpecularColor.pack(fill = Tkinter.X, expand = 0)
+        self.pSpecularColor.pack(fill = tkinter.X, expand = 0)
         self.bind(self.pSpecularColor,
         self.bind(self.pSpecularColor,
                   'Set point light specular color')
                   'Set point light specular color')
 
 
@@ -142,7 +149,7 @@ class lightingPanel(AppShell):
             pointPage, text = 'Position')
             pointPage, text = 'Position')
         self.pPosition['command'] = self.setPosition
         self.pPosition['command'] = self.setPosition
         self.pPosition['resetValue'] = [0,0,0,0]
         self.pPosition['resetValue'] = [0,0,0,0]
-        self.pPosition.pack(fill = Tkinter.X, expand = 0)
+        self.pPosition.pack(fill = tkinter.X, expand = 0)
         self.bind(self.pPosition, 'Set point light position')
         self.bind(self.pPosition, 'Set point light position')
 
 
         self.pConstantAttenuation = Slider(
         self.pConstantAttenuation = Slider(
@@ -152,7 +159,7 @@ class lightingPanel(AppShell):
             resolution = 0.01,
             resolution = 0.01,
             value = 1.0)
             value = 1.0)
         self.pConstantAttenuation['command'] = self.setConstantAttenuation
         self.pConstantAttenuation['command'] = self.setConstantAttenuation
-        self.pConstantAttenuation.pack(fill = Tkinter.X, expand = 0)
+        self.pConstantAttenuation.pack(fill = tkinter.X, expand = 0)
         self.bind(self.pConstantAttenuation,
         self.bind(self.pConstantAttenuation,
                   'Set point light constant attenuation')
                   'Set point light constant attenuation')
 
 
@@ -163,7 +170,7 @@ class lightingPanel(AppShell):
             resolution = 0.01,
             resolution = 0.01,
             value = 0.0)
             value = 0.0)
         self.pLinearAttenuation['command'] = self.setLinearAttenuation
         self.pLinearAttenuation['command'] = self.setLinearAttenuation
-        self.pLinearAttenuation.pack(fill = Tkinter.X, expand = 0)
+        self.pLinearAttenuation.pack(fill = tkinter.X, expand = 0)
         self.bind(self.pLinearAttenuation,
         self.bind(self.pLinearAttenuation,
                   'Set point light linear attenuation')
                   'Set point light linear attenuation')
 
 
@@ -174,7 +181,7 @@ class lightingPanel(AppShell):
             resolution = 0.01,
             resolution = 0.01,
             value = 0.0)
             value = 0.0)
         self.pQuadraticAttenuation['command'] = self.setQuadraticAttenuation
         self.pQuadraticAttenuation['command'] = self.setQuadraticAttenuation
-        self.pQuadraticAttenuation.pack(fill = Tkinter.X, expand = 0)
+        self.pQuadraticAttenuation.pack(fill = tkinter.X, expand = 0)
         self.bind(self.pQuadraticAttenuation,
         self.bind(self.pQuadraticAttenuation,
                   'Set point light quadratic attenuation')
                   'Set point light quadratic attenuation')
 
 
@@ -182,7 +189,7 @@ class lightingPanel(AppShell):
         self.sSpecularColor = seColorEntry(
         self.sSpecularColor = seColorEntry(
             spotPage, text = 'Specular Color')
             spotPage, text = 'Specular Color')
         self.sSpecularColor['command'] = self.setSpecularColor
         self.sSpecularColor['command'] = self.setSpecularColor
-        self.sSpecularColor.pack(fill = Tkinter.X, expand = 0)
+        self.sSpecularColor.pack(fill = tkinter.X, expand = 0)
         self.bind(self.sSpecularColor,
         self.bind(self.sSpecularColor,
                   'Set spot light specular color')
                   'Set spot light specular color')
 
 
@@ -193,7 +200,7 @@ class lightingPanel(AppShell):
             resolution = 0.01,
             resolution = 0.01,
             value = 1.0)
             value = 1.0)
         self.sConstantAttenuation['command'] = self.setConstantAttenuation
         self.sConstantAttenuation['command'] = self.setConstantAttenuation
-        self.sConstantAttenuation.pack(fill = Tkinter.X, expand = 0)
+        self.sConstantAttenuation.pack(fill = tkinter.X, expand = 0)
         self.bind(self.sConstantAttenuation,
         self.bind(self.sConstantAttenuation,
                   'Set spot light constant attenuation')
                   'Set spot light constant attenuation')
 
 
@@ -204,7 +211,7 @@ class lightingPanel(AppShell):
             resolution = 0.01,
             resolution = 0.01,
             value = 0.0)
             value = 0.0)
         self.sLinearAttenuation['command'] = self.setLinearAttenuation
         self.sLinearAttenuation['command'] = self.setLinearAttenuation
-        self.sLinearAttenuation.pack(fill = Tkinter.X, expand = 0)
+        self.sLinearAttenuation.pack(fill = tkinter.X, expand = 0)
         self.bind(self.sLinearAttenuation,
         self.bind(self.sLinearAttenuation,
                   'Set spot light linear attenuation')
                   'Set spot light linear attenuation')
 
 
@@ -215,7 +222,7 @@ class lightingPanel(AppShell):
             resolution = 0.01,
             resolution = 0.01,
             value = 0.0)
             value = 0.0)
         self.sQuadraticAttenuation['command'] = self.setQuadraticAttenuation
         self.sQuadraticAttenuation['command'] = self.setQuadraticAttenuation
-        self.sQuadraticAttenuation.pack(fill = Tkinter.X, expand = 0)
+        self.sQuadraticAttenuation.pack(fill = tkinter.X, expand = 0)
         self.bind(self.sQuadraticAttenuation,
         self.bind(self.sQuadraticAttenuation,
                   'Set spot light quadratic attenuation')
                   'Set spot light quadratic attenuation')
 
 
@@ -226,16 +233,16 @@ class lightingPanel(AppShell):
             resolution = 0.01,
             resolution = 0.01,
             value = 0.0)
             value = 0.0)
         self.sExponent['command'] = self.setExponent
         self.sExponent['command'] = self.setExponent
-        self.sExponent.pack(fill = Tkinter.X, expand = 0)
+        self.sExponent.pack(fill = tkinter.X, expand = 0)
         self.bind(self.sExponent,
         self.bind(self.sExponent,
                   'Set spot light exponent')
                   'Set spot light exponent')
 
 
         # MRM: Add frustum controls
         # MRM: Add frustum controls
 
 
         self.lightNotebook.setnaturalsize()
         self.lightNotebook.setnaturalsize()
-        self.lightNotebook.pack(expand = 1, fill = Tkinter.BOTH)
+        self.lightNotebook.pack(expand = 1, fill = tkinter.BOTH)
 
 
-        mainFrame.pack(expand=1, fill = Tkinter.BOTH)
+        mainFrame.pack(expand=1, fill = tkinter.BOTH)
 
 
     def onDestroy(self, event):
     def onDestroy(self, event):
         messenger.send('LP_close')
         messenger.send('LP_close')

+ 4 - 5
contrib/src/sceneeditor/propertyWindow.py

@@ -11,8 +11,7 @@ from direct.tkwidgets import Floater
 from direct.tkwidgets import Dial
 from direct.tkwidgets import Dial
 from direct.tkwidgets import Slider
 from direct.tkwidgets import Slider
 from direct.tkwidgets import VectorWidgets
 from direct.tkwidgets import VectorWidgets
-from pandac.PandaModules import *
-from Tkinter import *
+from panda3d.core import *
 import Pmw
 import Pmw
 
 
 class propertyWindow(AppShell,Pmw.MegaWidget):
 class propertyWindow(AppShell,Pmw.MegaWidget):
@@ -108,7 +107,7 @@ class propertyWindow(AppShell,Pmw.MegaWidget):
 
 
         self.curveFrame = None
         self.curveFrame = None
         #### If nodePath has been binded with any curves
         #### If nodePath has been binded with any curves
-        if self.info.has_key('curveList'):
+        if 'curveList' in self.info:
             self.createCurveFrame(self.contentFrame)
             self.createCurveFrame(self.contentFrame)
 
 
         ## Set all stuff done
         ## Set all stuff done
@@ -271,7 +270,7 @@ class propertyWindow(AppShell,Pmw.MegaWidget):
         # And, it will set the call back function to setNodeColorVec()
         # And, it will set the call back function to setNodeColorVec()
         #################################################################
         #################################################################
         color = self.nodePath.getColor()
         color = self.nodePath.getColor()
-        print color
+        print(color)
         self.nodeColor = VectorWidgets.ColorEntry(
         self.nodeColor = VectorWidgets.ColorEntry(
             contentFrame, text = 'Node Color', value=[color.getX()*255,
             contentFrame, text = 'Node Color', value=[color.getX()*255,
                                                       color.getY()*255,
                                                       color.getY()*255,
@@ -725,7 +724,7 @@ class propertyWindow(AppShell,Pmw.MegaWidget):
         # But, not directly removed be this function.
         # But, not directly removed be this function.
         # This function will send out a message to notice dataHolder to remove this animation
         # This function will send out a message to notice dataHolder to remove this animation
         #################################################################
         #################################################################
-        print anim
+        print(anim)
         widget = self.widgetsDict[anim]
         widget = self.widgetsDict[anim]
         self.accept('animRemovedFromNode',self.redrawAnimProperty)
         self.accept('animRemovedFromNode',self.redrawAnimProperty)
         messenger.send('PW_removeAnimFromNode',[self.name, anim])
         messenger.send('PW_removeAnimFromNode',[self.name, anim])

+ 6 - 8
contrib/src/sceneeditor/quad.py

@@ -9,10 +9,8 @@
 from direct.showbase.ShowBaseGlobal import *
 from direct.showbase.ShowBaseGlobal import *
 from direct.interval.IntervalGlobal import *
 from direct.interval.IntervalGlobal import *
 from direct.showbase.DirectObject import DirectObject
 from direct.showbase.DirectObject import DirectObject
-from pandac.PandaModules import *
+from panda3d.core import *
 import math
 import math
-#Manakel 2/12/2005: replace from pandac import by from pandac.PandaModules import
-from pandac.PandaModules import MouseWatcher
 
 
 
 
 class ViewPort:
 class ViewPort:
@@ -506,7 +504,7 @@ class QuadView(DirectObject):
             ansY=-1.0+y2
             ansY=-1.0+y2
 
 
         self.xy=[ansX,ansY]
         self.xy=[ansX,ansY]
-        print "Sent X:%f Sent Y:%f"%(ansX,ansY)
+        print("Sent X:%f Sent Y:%f"%(ansX,ansY))
         #SEditor.iRay.pick(render,self.xy)
         #SEditor.iRay.pick(render,self.xy)
         SEditor.manipulationControl.manipulationStop(self.xy)
         SEditor.manipulationControl.manipulationStop(self.xy)
         #print "MouseX " + str(base.mouseWatcherNode.getMouseX()) + "MouseY " + str(base.mouseWatcherNode.getMouseY()) + "\n"
         #print "MouseX " + str(base.mouseWatcherNode.getMouseX()) + "MouseY " + str(base.mouseWatcherNode.getMouseY()) + "\n"
@@ -550,28 +548,28 @@ class QuadView(DirectObject):
             dr.setDimensions(0.5,1,0,0.5)
             dr.setDimensions(0.5,1,0,0.5)
 
 
     def setLeft(self):
     def setLeft(self):
-        print "LEFT"
+        print("LEFT")
         self.CurrentQuad=3
         self.CurrentQuad=3
         self.ChangeBaseDR()
         self.ChangeBaseDR()
         self.Left.setCam()
         self.Left.setCam()
         #self.Left.setDR(self.mouseWatcherNode)
         #self.Left.setDR(self.mouseWatcherNode)
 
 
     def setTop(self):
     def setTop(self):
-        print "TOP"
+        print("TOP")
         self.CurrentQuad=2
         self.CurrentQuad=2
         self.ChangeBaseDR()
         self.ChangeBaseDR()
         self.Top.setCam()
         self.Top.setCam()
         #self.Top.setDR(self.mouseWatcherNode)
         #self.Top.setDR(self.mouseWatcherNode)
 
 
     def setPerspective(self):
     def setPerspective(self):
-        print "PERSPECTIVE"
+        print("PERSPECTIVE")
         self.CurrentQuad=4
         self.CurrentQuad=4
         self.ChangeBaseDR()
         self.ChangeBaseDR()
         self.Perspective.setCam()
         self.Perspective.setCam()
         #self.Perspective.setDR(self.mouseWatcherNode)
         #self.Perspective.setDR(self.mouseWatcherNode)
 
 
     def setFront(self):
     def setFront(self):
-        print "FRONT"
+        print("FRONT")
         self.CurrentQuad=1
         self.CurrentQuad=1
         self.ChangeBaseDR()
         self.ChangeBaseDR()
         self.Front.setCam()
         self.Front.setCam()

+ 48 - 37
contrib/src/sceneeditor/sceneEditor.py

@@ -3,11 +3,19 @@ import sys
 try: import _tkinter
 try: import _tkinter
 except: sys.exit("Please install python module 'Tkinter'")
 except: sys.exit("Please install python module 'Tkinter'")
 
 
-import direct
-from direct.directbase.DirectStart import*
+from direct.showbase.ShowBase import ShowBase
+
+ShowBase()
+
 from direct.showbase.TkGlobal import spawnTkLoop
 from direct.showbase.TkGlobal import spawnTkLoop
-from Tkinter import *
-from tkFileDialog import *
+
+if sys.version_info >= (3, 0):
+    from tkinter import *
+    from tkinter.filedialog import *
+else:
+    from Tkinter import *
+    from tkFileDialog import *
+
 from direct.directtools.DirectGlobals import *
 from direct.directtools.DirectGlobals import *
 from direct.tkwidgets.AppShell import*
 from direct.tkwidgets.AppShell import*
 
 
@@ -251,7 +259,10 @@ class myLevelEditor(AppShell):
         for event in self.actionEvents:
         for event in self.actionEvents:
             self.accept(event[0], event[1], extraArgs = event[2:])
             self.accept(event[0], event[1], extraArgs = event[2:])
 
 
-        camera.toggleVis()
+        if camera.is_hidden():
+            camera.show()
+        else:
+            camera.hide()
         self.selectNode(base.camera) ## Initially, we select camera as the first node...
         self.selectNode(base.camera) ## Initially, we select camera as the first node...
 
 
     def appInit(self):
     def appInit(self):
@@ -386,31 +397,31 @@ class myLevelEditor(AppShell):
             self.showAbout()
             self.showAbout()
             return
             return
         elif buttonIndex==12:
         elif buttonIndex==12:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==13:
         elif buttonIndex==13:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==14:
         elif buttonIndex==14:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==15:
         elif buttonIndex==15:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==16:
         elif buttonIndex==16:
-            print "Your scene will be eliminated within five seconds, Save your world!!!, Number %d."%buttonIndex
+            print("Your scene will be eliminated within five seconds, Save your world!!!, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==17:
         elif buttonIndex==17:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==18:
         elif buttonIndex==18:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==19:
         elif buttonIndex==19:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
         elif buttonIndex==20:
         elif buttonIndex==20:
-            print "You haven't defined the function for this Button, Number %d."%buttonIndex
+            print("You haven't defined the function for this Button, Number %d."%buttonIndex)
             return
             return
 
 
         return
         return
@@ -666,17 +677,17 @@ class myLevelEditor(AppShell):
         #################################################################
         #################################################################
         type, info = AllScene.getInfoOfThisNode(nodePath)
         type, info = AllScene.getInfoOfThisNode(nodePath)
         name = nodePath.getName()
         name = nodePath.getName()
-        if not self.propertyWindow.has_key(name):
+        if name not in self.propertyWindow:
             self.propertyWindow[name] = propertyWindow(nodePath, type,info )
             self.propertyWindow[name] = propertyWindow(nodePath, type,info )
         pass
         pass
 
 
     def closePropertyWindow(self, name):
     def closePropertyWindow(self, name):
-        if self.propertyWindow.has_key(name):
+        if name in self.propertyWindow:
             del self.propertyWindow[name]
             del self.propertyWindow[name]
         return
         return
 
 
     def openMetadataPanel(self,nodePath=None):
     def openMetadataPanel(self,nodePath=None):
-        print nodePath
+        print(nodePath)
         self.MetadataPanel=MetadataPanel(nodePath)
         self.MetadataPanel=MetadataPanel(nodePath)
         pass
         pass
 
 
@@ -685,7 +696,7 @@ class myLevelEditor(AppShell):
         # duplicate(self, nodePath = None)
         # duplicate(self, nodePath = None)
         # This function will be called when user try to open the duplication window
         # This function will be called when user try to open the duplication window
         #################################################################
         #################################################################
-        print '----Duplication!!'
+        print('----Duplication!!')
         if nodePath != None:
         if nodePath != None:
             self.duplicateWindow = duplicateWindow(nodePath = nodePath)
             self.duplicateWindow = duplicateWindow(nodePath = nodePath)
         pass
         pass
@@ -791,8 +802,8 @@ class myLevelEditor(AppShell):
         #################################################################
         #################################################################
         name = nodePath.getName()
         name = nodePath.getName()
         if AllScene.isActor(name):
         if AllScene.isActor(name):
-            if self.animPanel.has_key(name):
-                print '---- You already have an animation panel for this Actor!'
+            if name in self.animPanel:
+                print('---- You already have an animation panel for this Actor!')
                 return
                 return
             else:
             else:
                 Actor = AllScene.getActor(name)
                 Actor = AllScene.getActor(name)
@@ -842,9 +853,9 @@ class myLevelEditor(AppShell):
             # Let us actually remove the scene from sys modules... this is done because every scene is loaded as a module
             # Let us actually remove the scene from sys modules... this is done because every scene is loaded as a module
             # And if we reload a scene python wont reload since its already in sys.modules... and hence we delete it
             # And if we reload a scene python wont reload since its already in sys.modules... and hence we delete it
             # If there is ever a garbage colleciton bug..this might be a point to look at
             # If there is ever a garbage colleciton bug..this might be a point to look at
-            if sys.modules.has_key(currentModName):
+            if currentModName in sys.modules:
                 del sys.modules[currentModName]
                 del sys.modules[currentModName]
-                print sys.getrefcount(AllScene.theScene)
+                print(sys.getrefcount(AllScene.theScene))
                 del AllScene.theScene
                 del AllScene.theScene
         else:
         else:
             AllScene.resetAll()
             AllScene.resetAll()
@@ -872,9 +883,9 @@ class myLevelEditor(AppShell):
             # Let us actually remove the scene from sys modules... this is done because every scene is loaded as a module
             # Let us actually remove the scene from sys modules... this is done because every scene is loaded as a module
             # And if we reload a scene python wont reload since its already in sys.modules... and hence we delete it
             # And if we reload a scene python wont reload since its already in sys.modules... and hence we delete it
             # If there is ever a garbage colleciton bug..this might be a point to look at
             # If there is ever a garbage colleciton bug..this might be a point to look at
-            if sys.modules.has_key(currentModName):
+            if currentModName in sys.modules:
                 del sys.modules[currentModName]
                 del sys.modules[currentModName]
-                print sys.getrefcount(AllScene.theScene)
+                print(sys.getrefcount(AllScene.theScene))
                 del AllScene.theScene
                 del AllScene.theScene
         else:
         else:
             AllScene.resetAll()
             AllScene.resetAll()
@@ -886,7 +897,7 @@ class myLevelEditor(AppShell):
 
 
         thefile=Filename(self.CurrentFileName)
         thefile=Filename(self.CurrentFileName)
         thedir=thefile.getFullpathWoExtension()
         thedir=thefile.getFullpathWoExtension()
-        print "SCENE EDITOR::" + thedir
+        print("SCENE EDITOR::" + thedir)
         self.CurrentDirName=thedir
         self.CurrentDirName=thedir
         if self.CurrentFileName != None:
         if self.CurrentFileName != None:
             self.parent.title('Scene Editor - '+ Filename.fromOsSpecific(self.CurrentFileName).getBasenameWoExtension())
             self.parent.title('Scene Editor - '+ Filename.fromOsSpecific(self.CurrentFileName).getBasenameWoExtension())
@@ -934,7 +945,7 @@ class myLevelEditor(AppShell):
             theScene.writeBamFile(fileName)
             theScene.writeBamFile(fileName)
         else:
         else:
             render.writeBamFile(fileName+".bad")
             render.writeBamFile(fileName+".bad")
-        print " Scenegraph saved as :" +str(fileName)
+        print(" Scenegraph saved as :" +str(fileName))
 
 
     def loadFromBam(self):
     def loadFromBam(self):
         fileName = tkFileDialog.askopenfilename(filetypes = [("BAM",".bam")],title = "Load Scenegraph from Bam file")
         fileName = tkFileDialog.askopenfilename(filetypes = [("BAM",".bam")],title = "Load Scenegraph from Bam file")
@@ -959,7 +970,7 @@ class myLevelEditor(AppShell):
         ###############################################################################
         ###############################################################################
         # !!!!! See if a module exists by this name... if it does you cannot use this filename !!!!!
         # !!!!! See if a module exists by this name... if it does you cannot use this filename !!!!!
         ###############################################################################
         ###############################################################################
-        if(sys.modules.has_key(fCheck.getBasenameWoExtension())):
+        if(fCheck.getBasenameWoExtension() in sys.modules):
             tkMessageBox.showwarning(
             tkMessageBox.showwarning(
             "Save file",
             "Save file",
             "Cannot save with this name because there is a system module with the same name. Please resave as something else."
             "Cannot save with this name because there is a system module with the same name. Please resave as something else."
@@ -993,7 +1004,7 @@ class myLevelEditor(AppShell):
         if modelFilename:
         if modelFilename:
             self.makeDirty()
             self.makeDirty()
             if not AllScene.loadModel(modelFilename, Filename.fromOsSpecific(modelFilename)):
             if not AllScene.loadModel(modelFilename, Filename.fromOsSpecific(modelFilename)):
-                print '----Error! No Such Model File!'
+                print('----Error! No Such Model File!')
         pass
         pass
 
 
     def loadActor(self):
     def loadActor(self):
@@ -1016,12 +1027,12 @@ class myLevelEditor(AppShell):
         if ActorFilename:
         if ActorFilename:
             self.makeDirty()
             self.makeDirty()
             if not AllScene.loadActor(ActorFilename, Filename.fromOsSpecific(ActorFilename)):
             if not AllScene.loadActor(ActorFilename, Filename.fromOsSpecific(ActorFilename)):
-                print '----Error! No Such Model File!'
+                print('----Error! No Such Model File!')
         pass
         pass
 
 
     def importScene(self):
     def importScene(self):
         self.makeDirty()
         self.makeDirty()
-        print '----God bless you Please Import!'
+        print('----God bless you Please Import!')
         pass
         pass
 
 
 
 
@@ -1495,7 +1506,7 @@ class myLevelEditor(AppShell):
         return
         return
 
 
     def animPanelClose(self, name):
     def animPanelClose(self, name):
-        if self.animPanel.has_key(name):
+        if name in self.animPanel:
             del self.animPanel[name]
             del self.animPanel[name]
         return
         return
 
 
@@ -1508,8 +1519,8 @@ class myLevelEditor(AppShell):
         ################################################################
         ################################################################
         name = nodePath.getName()
         name = nodePath.getName()
         if AllScene.isActor(name):
         if AllScene.isActor(name):
-            if self.animBlendPanel.has_key(name):
-                print '---- You already have an Blend Animation Panel for this Actor!'
+            if name in self.animBlendPanel:
+                print('---- You already have an Blend Animation Panel for this Actor!')
                 return
                 return
             else:
             else:
                 Actor = AllScene.getActor(name)
                 Actor = AllScene.getActor(name)
@@ -1554,7 +1565,7 @@ class myLevelEditor(AppShell):
         # This function will be called when Blend panel has been closed.
         # This function will be called when Blend panel has been closed.
         # Here we will reset the reference dictionary so it can be open again.
         # Here we will reset the reference dictionary so it can be open again.
         ################################################################
         ################################################################
-        if self.animBlendPanel.has_key(name):
+        if name in self.animBlendPanel:
             del self.animBlendPanel[name]
             del self.animBlendPanel[name]
         return
         return
 
 
@@ -1613,7 +1624,7 @@ class myLevelEditor(AppShell):
 
 
     def openAlignPanel(self, nodePath=None):
     def openAlignPanel(self, nodePath=None):
         name = nodePath.getName()
         name = nodePath.getName()
-        if not self.alignPanelDict.has_key(name):
+        if name not in self.alignPanelDict:
             list = AllScene.getAllObjNameAsList()
             list = AllScene.getAllObjNameAsList()
             if name in list:
             if name in list:
                 list.remove(name)
                 list.remove(name)
@@ -1623,7 +1634,7 @@ class myLevelEditor(AppShell):
         return
         return
 
 
     def closeAlignPanel(self, name=None):
     def closeAlignPanel(self, name=None):
-        if self.alignPanelDict.has_key(name):
+        if name in self.alignPanelDict:
             del self.alignPanelDict[name]
             del self.alignPanelDict[name]
 
 
     def alignObject(self, nodePath, name, list):
     def alignObject(self, nodePath, name, list):
@@ -1705,4 +1716,4 @@ class myLevelEditor(AppShell):
 
 
 editor = myLevelEditor(parent = base.tkRoot)
 editor = myLevelEditor(parent = base.tkRoot)
 
 
-run()
+base.run()

+ 9 - 5
contrib/src/sceneeditor/seAnimPanel.py

@@ -5,12 +5,16 @@
 # Import Tkinter, Pmw, and the floater code from this directory tree.
 # Import Tkinter, Pmw, and the floater code from this directory tree.
 from direct.tkwidgets.AppShell import *
 from direct.tkwidgets.AppShell import *
 from direct.showbase.TkGlobal import *
 from direct.showbase.TkGlobal import *
-from tkSimpleDialog import askfloat
 import string
 import string
 import math
 import math
 import types
 import types
 from direct.task import Task
 from direct.task import Task
 
 
+if sys.version_info >= (3, 0):
+    from tkinter.simpledialog import askfloat
+else:
+    from tkSimpleDialog import askfloat
+
 FRAMES = 0
 FRAMES = 0
 SECONDS = 1
 SECONDS = 1
 
 
@@ -112,7 +116,7 @@ class AnimPanel(AppShell):
         self.playRateEntry.selectitem('1.0')
         self.playRateEntry.selectitem('1.0')
 
 
         ### Loop checkbox
         ### Loop checkbox
-        Label(actorFrame, text= "Loop:", font=('MSSansSerif', 12)).place(x=420,y=05,anchor=NW)
+        Label(actorFrame, text= "Loop:", font=('MSSansSerif', 12)).place(x=420,y=5,anchor=NW)
 
 
         self.loopVar = IntVar()
         self.loopVar = IntVar()
         self.loopVar.set(0)
         self.loopVar.set(0)
@@ -250,7 +254,7 @@ class AnimPanel(AppShell):
         self['animList'] = self['actor'].getAnimNames()
         self['animList'] = self['actor'].getAnimNames()
         animL = self['actor'].getAnimNames()
         animL = self['actor'].getAnimNames()
         self.AnimEntry.setlist(animL)
         self.AnimEntry.setlist(animL)
-        print '-----',animL
+        print('-----',animL)
         return
         return
 
 
     def loadAnimation(self):
     def loadAnimation(self):
@@ -278,7 +282,7 @@ class AnimPanel(AppShell):
             taskMgr.add(self.playTask, self.id + '_UpdateTask')
             taskMgr.add(self.playTask, self.id + '_UpdateTask')
             self.stopButton.config(state=NORMAL)
             self.stopButton.config(state=NORMAL)
         else:
         else:
-            print '----Illegal Animaion name!!', self.animName
+            print('----Illegal Animaion name!!', self.animName)
         return
         return
 
 
     def playTask(self, task):
     def playTask(self, task):
@@ -591,7 +595,7 @@ class LoadAnimPanel(AppShell):
         else:
         else:
             self.animList.append(name)
             self.animList.append(name)
         self.AnimName_1.setlist(self.animList)
         self.AnimName_1.setlist(self.animList)
-        print self.animDic
+        print(self.animDic)
         return
         return
 
 
     def ok_press(self):
     def ok_press(self):

+ 9 - 5
contrib/src/sceneeditor/seBlendAnimPanel.py

@@ -5,12 +5,16 @@
 # Import Tkinter, Pmw, and the floater code from this directory tree.
 # Import Tkinter, Pmw, and the floater code from this directory tree.
 from direct.tkwidgets.AppShell import *
 from direct.tkwidgets.AppShell import *
 from direct.showbase.TkGlobal import *
 from direct.showbase.TkGlobal import *
-from tkSimpleDialog import askfloat
 import string
 import string
 import math
 import math
 import types
 import types
 from direct.task import Task
 from direct.task import Task
 
 
+if sys.version_info >= (3, 0):
+    from tkinter.simpledialog import askfloat
+else:
+    from tkSimpleDialog import askfloat
+
 FRAMES = 0
 FRAMES = 0
 SECONDS = 1
 SECONDS = 1
 
 
@@ -304,7 +308,7 @@ class BlendAnimPanel(AppShell):
             taskMgr.add(self.playTask, self.id + '_UpdateTask')
             taskMgr.add(self.playTask, self.id + '_UpdateTask')
             self.stopButton.config(state=NORMAL)
             self.stopButton.config(state=NORMAL)
         else:
         else:
-            print '----Illegal Animaion name!!', self.animNameA +  ',  '+ self.animNameB
+            print('----Illegal Animaion name!!', self.animNameA +  ',  '+ self.animNameB)
         return
         return
 
 
     def playTask(self, task):
     def playTask(self, task):
@@ -348,7 +352,7 @@ class BlendAnimPanel(AppShell):
         # setAnimation(self, animation, AB = 'a')
         # setAnimation(self, animation, AB = 'a')
         # see play(self)
         # see play(self)
         #################################################################
         #################################################################
-        print 'OK!!!'
+        print('OK!!!')
         if AB == 'a':
         if AB == 'a':
             if self.animNameA != None:
             if self.animNameA != None:
                 self['actor'].setControlEffect(self.animNameA, 1.0, 'modelRoot','lodRoot')
                 self['actor'].setControlEffect(self.animNameA, 1.0, 'modelRoot','lodRoot')
@@ -519,7 +523,7 @@ class BlendAnimPanel(AppShell):
         # then this function will set Animation A to "a" and animation B
         # then this function will set Animation A to "a" and animation B
         # to "b" and set the ratio slider to "c" position.
         # to "b" and set the ratio slider to "c" position.
         #################################################################
         #################################################################
-        if self.blendDict.has_key(name):
+        if name in self.blendDict:
             self.currentBlendName = name
             self.currentBlendName = name
             animA = self.blendDict[name][0]
             animA = self.blendDict[name][0]
             animB = self.blendDict[name][1]
             animB = self.blendDict[name][1]
@@ -544,7 +548,7 @@ class BlendAnimPanel(AppShell):
         self.blendDict.clear()
         self.blendDict.clear()
         del self.blendDict
         del self.blendDict
         self.blendDict = dict.copy()
         self.blendDict = dict.copy()
-        print self.blendDict
+        print(self.blendDict)
         if len(self.blendDict)>0:
         if len(self.blendDict)>0:
             self.blendList = self.blendDict.keys()
             self.blendList = self.blendDict.keys()
         else:
         else:

+ 10 - 11
contrib/src/sceneeditor/seCameraControl.py

@@ -55,14 +55,14 @@ class DirectCameraControl(DirectObject):
             ['n', self.pickNextCOA],
             ['n', self.pickNextCOA],
             ['u', self.orbitUprightCam],
             ['u', self.orbitUprightCam],
             ['shift-u', self.uprightCam],
             ['shift-u', self.uprightCam],
-            [`1`, self.spawnMoveToView, 1],
-            [`2`, self.spawnMoveToView, 2],
-            [`3`, self.spawnMoveToView, 3],
-            [`4`, self.spawnMoveToView, 4],
-            [`5`, self.spawnMoveToView, 5],
-            [`6`, self.spawnMoveToView, 6],
-            [`7`, self.spawnMoveToView, 7],
-            [`8`, self.spawnMoveToView, 8],
+            ['1', self.spawnMoveToView, 1],
+            ['2', self.spawnMoveToView, 2],
+            ['3', self.spawnMoveToView, 3],
+            ['4', self.spawnMoveToView, 4],
+            ['5', self.spawnMoveToView, 5],
+            ['6', self.spawnMoveToView, 6],
+            ['7', self.spawnMoveToView, 7],
+            ['8', self.spawnMoveToView, 8],
             ['9', self.swingCamAboutWidget, -90.0, t],
             ['9', self.swingCamAboutWidget, -90.0, t],
             ['0', self.swingCamAboutWidget,  90.0, t],
             ['0', self.swingCamAboutWidget,  90.0, t],
             ['`', self.removeManipulateCameraTask],
             ['`', self.removeManipulateCameraTask],
@@ -351,7 +351,7 @@ class DirectCameraControl(DirectObject):
             # MRM: Would be nice to be able to control this
             # MRM: Would be nice to be able to control this
             # At least display it
             # At least display it
             dist = pow(10.0, self.nullHitPointCount)
             dist = pow(10.0, self.nullHitPointCount)
-            SEditor.message('COA Distance: ' + `dist`)
+            SEditor.message('COA Distance: ' + repr(dist))
             coa.set(0,dist,0)
             coa.set(0,dist,0)
         # Compute COA Dist
         # Compute COA Dist
         coaDist = Vec3(coa - ZERO_POINT).length()
         coaDist = Vec3(coa - ZERO_POINT).length()
@@ -392,8 +392,7 @@ class DirectCameraControl(DirectObject):
             sf = 0.1
             sf = 0.1
         self.coaMarker.setScale(sf)
         self.coaMarker.setScale(sf)
         # Lerp color to fade out
         # Lerp color to fade out
-        self.coaMarker.lerpColor(VBase4(1,0,0,1), VBase4(1,0,0,0), 3.0,
-                                 task = 'fadeAway')
+        self.coaMarker.colorInterval(3.0, VBase4(1, 0, 0, 0), name='fadeAway').start()
 
 
     def homeCam(self):
     def homeCam(self):
         # Record undo point
         # Record undo point

+ 8 - 2
contrib/src/sceneeditor/seColorEntry.py

@@ -12,9 +12,15 @@
 from direct.tkwidgets import Valuator
 from direct.tkwidgets import Valuator
 from direct.tkwidgets import Floater
 from direct.tkwidgets import Floater
 from direct.tkwidgets import Slider
 from direct.tkwidgets import Slider
-import string, Pmw, Tkinter, tkColorChooser
+import sys, Pmw
 from direct.tkwidgets.VectorWidgets import VectorEntry
 from direct.tkwidgets.VectorWidgets import VectorEntry
 
 
+if sys.version_info >= (3, 0):
+    from tkinter.colorchooser import askcolor
+else:
+    from tkColorChooser import askcolor
+
+
 class seColorEntry(VectorEntry):
 class seColorEntry(VectorEntry):
     def __init__(self, parent = None, **kw):
     def __init__(self, parent = None, **kw):
         # Initialize options for the class (overriding some superclass options)
         # Initialize options for the class (overriding some superclass options)
@@ -41,7 +47,7 @@ class seColorEntry(VectorEntry):
 
 
     def popupColorPicker(self):
     def popupColorPicker(self):
         # Can pass in current color with: color = (255, 0, 0)
         # Can pass in current color with: color = (255, 0, 0)
-        color = tkColorChooser.askcolor(
+        color = askcolor(
             parent = self.interior(),
             parent = self.interior(),
             # Initialize it to current color
             # Initialize it to current color
             initialcolor = tuple(self.get()[:3]))[0]
             initialcolor = tuple(self.get()[:3]))[0]

+ 18 - 18
contrib/src/sceneeditor/seFileSaver.py

@@ -3,7 +3,7 @@
 # This code saves the scene out as python code... the scene is stored in the various dictionaries in "dataHolder.py" ...the class "AllScene"
 # This code saves the scene out as python code... the scene is stored in the various dictionaries in "dataHolder.py" ...the class "AllScene"
 #
 #
 ####################################################################################################################################################
 ####################################################################################################################################################
-from pandac.PandaModules import *
+from panda3d.core import *
 
 
 from direct.showbase.ShowBaseGlobal import *
 from direct.showbase.ShowBaseGlobal import *
 import os
 import os
@@ -42,7 +42,7 @@ class FileSaver:
         i1="    " # indentation
         i1="    " # indentation
         i2=i1+i1  # double indentation
         i2=i1+i1  # double indentation
         out_file = open(filename,"w")
         out_file = open(filename,"w")
-        print "dirname:" + dirname
+        print("dirname:" + dirname)
         if( not os.path.isdir(dirname)):
         if( not os.path.isdir(dirname)):
             os.mkdir(dirname)
             os.mkdir(dirname)
         savepathname=Filename(filename)
         savepathname=Filename(filename)
@@ -176,7 +176,7 @@ class FileSaver:
                     newtexpathF=Filename(newtexpath)
                     newtexpathF=Filename(newtexpath)
                     newtexpathSpecific=newtexpathF.toOsSpecific()
                     newtexpathSpecific=newtexpathF.toOsSpecific()
 
 
-                    print "TEXTURE SAVER:: copying" + oldtexpath + " to " + newtexpathSpecific
+                    print("TEXTURE SAVER:: copying" + oldtexpath + " to " + newtexpathSpecific)
                     if(oldtexpath != newtexpathSpecific):
                     if(oldtexpath != newtexpathSpecific):
                         shutil.copyfile(oldtexpath,newtexpathSpecific)
                         shutil.copyfile(oldtexpath,newtexpathSpecific)
 
 
@@ -187,7 +187,7 @@ class FileSaver:
 
 
                 # Copy the file over to the relative directory
                 # Copy the file over to the relative directory
                 oldModelpath=AllScene.ModelRefDic[model].toOsSpecific()
                 oldModelpath=AllScene.ModelRefDic[model].toOsSpecific()
-                print "FILESAVER:: copying from " + AllScene.ModelRefDic[model].toOsSpecific() + "to" + newpathSpecific
+                print("FILESAVER:: copying from " + AllScene.ModelRefDic[model].toOsSpecific() + "to" + newpathSpecific)
                 if(oldModelpath!=newpathSpecific):
                 if(oldModelpath!=newpathSpecific):
                     shutil.copyfile(oldModelpath,newpathSpecific)
                     shutil.copyfile(oldModelpath,newpathSpecific)
 
 
@@ -197,7 +197,7 @@ class FileSaver:
                 etc=EggTextureCollection()
                 etc=EggTextureCollection()
                 etc.extractTextures(e)
                 etc.extractTextures(e)
                 for index in range(len(fnamelist)):
                 for index in range(len(fnamelist)):
-                    print fnamelist[index]
+                    print(fnamelist[index])
                     tex=etc.findFilename(Filename(fnamelist[index]))
                     tex=etc.findFilename(Filename(fnamelist[index]))
                     fn=Filename(tex.getFilename())
                     fn=Filename(tex.getFilename())
                     fn.setDirname("")
                     fn.setDirname("")
@@ -305,14 +305,14 @@ class FileSaver:
                     newtexpath=dirname + "/" + texfilename.getBasename()
                     newtexpath=dirname + "/" + texfilename.getBasename()
                     newtexpathF=Filename(newtexpath)
                     newtexpathF=Filename(newtexpath)
                     newtexpathSpecific=newtexpathF.toOsSpecific()
                     newtexpathSpecific=newtexpathF.toOsSpecific()
-                    print "TEXTURE SAVER:: copying" + oldtexpath + " to " + newtexpathSpecific
+                    print("TEXTURE SAVER:: copying" + oldtexpath + " to " + newtexpathSpecific)
                     if(oldtexpath != newtexpathSpecific):
                     if(oldtexpath != newtexpathSpecific):
                         shutil.copyfile(oldtexpath,newtexpathSpecific)
                         shutil.copyfile(oldtexpath,newtexpathSpecific)
 
 
 
 
                 # Copy the file over to the relative directory
                 # Copy the file over to the relative directory
                 oldActorpath=AllScene.ActorRefDic[actor].toOsSpecific()
                 oldActorpath=AllScene.ActorRefDic[actor].toOsSpecific()
-                print "FILESAVER:: copying from " + AllScene.ActorRefDic[actor].toOsSpecific() + "to" + newpathSpecific
+                print("FILESAVER:: copying from " + AllScene.ActorRefDic[actor].toOsSpecific() + "to" + newpathSpecific)
                 if(oldActorpath!=newpathSpecific):
                 if(oldActorpath!=newpathSpecific):
                     shutil.copyfile(oldActorpath,newpathSpecific)
                     shutil.copyfile(oldActorpath,newpathSpecific)
 
 
@@ -322,7 +322,7 @@ class FileSaver:
                 etc=EggTextureCollection()
                 etc=EggTextureCollection()
                 etc.extractTextures(e)
                 etc.extractTextures(e)
                 for index in range(len(actorfnamelist)):
                 for index in range(len(actorfnamelist)):
-                    print actorfnamelist[index]
+                    print(actorfnamelist[index])
                     tex=etc.findFilename(Filename(actorfnamelist[index]))
                     tex=etc.findFilename(Filename(actorfnamelist[index]))
                     fn=Filename(tex.getFilename())
                     fn=Filename(tex.getFilename())
                     fn.setDirname("")
                     fn.setDirname("")
@@ -362,12 +362,12 @@ class FileSaver:
                         #out_file.write(i2+ "self."+ actorS + ".loadAnims(" + str(ActorAnimations) +")\n") # Old way with absolute paths
                         #out_file.write(i2+ "self."+ actorS + ".loadAnims(" + str(ActorAnimations) +")\n") # Old way with absolute paths
                         #Manakel 2/12/2004: solve the not empty but not defined animation case
                         #Manakel 2/12/2004: solve the not empty but not defined animation case
                         if not animation is None:
                         if not animation is None:
-                            print "ACTOR ANIMATIONS:" + ActorAnimations[animation]
+                            print("ACTOR ANIMATIONS:" + ActorAnimations[animation])
                             oldAnimPath=Filename(ActorAnimations[animation])
                             oldAnimPath=Filename(ActorAnimations[animation])
                             oldAnim=oldAnimPath.toOsSpecific()
                             oldAnim=oldAnimPath.toOsSpecific()
                             dirOS=Filename(dirname)
                             dirOS=Filename(dirname)
                             newAnim=dirOS.toOsSpecific() + "\\" + oldAnimPath.getBasename()
                             newAnim=dirOS.toOsSpecific() + "\\" + oldAnimPath.getBasename()
-                            print "ACTOR ANIM SAVER:: Comparing" + oldAnim +"and" + newAnim
+                            print("ACTOR ANIM SAVER:: Comparing" + oldAnim +"and" + newAnim)
                             if(oldAnim!=newAnim):
                             if(oldAnim!=newAnim):
                                 shutil.copyfile(oldAnim,newAnim)
                                 shutil.copyfile(oldAnim,newAnim)
                             newAnimF=Filename.fromOsSpecific(newAnim)
                             newAnimF=Filename.fromOsSpecific(newAnim)
@@ -379,16 +379,16 @@ class FileSaver:
                 out_file.write(i2+ i1+"self."+ actorS + ".loadAnims(" + str(ActorAnimations) +")\n") # Now with new relative paths
                 out_file.write(i2+ i1+"self."+ actorS + ".loadAnims(" + str(ActorAnimations) +")\n") # Now with new relative paths
                 out_file.write(i2+"else:\n")
                 out_file.write(i2+"else:\n")
                 theloadAnimString=str(ActorAnimationsInvoke)# We hack the "self.executionpath" part into the dictionary as a variable using string replace
                 theloadAnimString=str(ActorAnimationsInvoke)# We hack the "self.executionpath" part into the dictionary as a variable using string replace
-                print "LOAD ANIM STRING BEFORE" + theloadAnimString
+                print("LOAD ANIM STRING BEFORE" + theloadAnimString)
                 theloadAnimString=theloadAnimString.replace('\'self.executionpath +','self.executionpath + \'')
                 theloadAnimString=theloadAnimString.replace('\'self.executionpath +','self.executionpath + \'')
-                print "LOAD ANIM STRING AFTER" + theloadAnimString
+                print("LOAD ANIM STRING AFTER" + theloadAnimString)
                 out_file.write(i2+ i1+"self."+ actorS + ".loadAnims(" + theloadAnimString +")\n") # Now with new relative paths based on editor invocation
                 out_file.write(i2+ i1+"self."+ actorS + ".loadAnims(" + theloadAnimString +")\n") # Now with new relative paths based on editor invocation
 
 
                 out_file.write(i2+ "self.ActorDic[\'" + actorS + "\']=self." + AllScene.ActorDic[actor].getName()+"\n")
                 out_file.write(i2+ "self.ActorDic[\'" + actorS + "\']=self." + AllScene.ActorDic[actor].getName()+"\n")
                 #out_file.write(i2+ "self.ActorRefDic[\'" + actorS + "\']=Filename(\'"+AllScene.ActorRefDic[actor].getFullpath() +"\')\n") # Old way with absolute paths
                 #out_file.write(i2+ "self.ActorRefDic[\'" + actorS + "\']=Filename(\'"+AllScene.ActorRefDic[actor].getFullpath() +"\')\n") # Old way with absolute paths
                 out_file.write(i2+ "self.ActorRefDic[\'" + actorS + "\']=\'"+ AllScene.ActorRefDic[actor].getBasename() +"\'\n")# Relative paths
                 out_file.write(i2+ "self.ActorRefDic[\'" + actorS + "\']=\'"+ AllScene.ActorRefDic[actor].getBasename() +"\'\n")# Relative paths
                 out_file.write(i2+ "self.ActorDic[\'"+ actorS + "\'].setName(\'"+ actorS +"\')\n")
                 out_file.write(i2+ "self.ActorDic[\'"+ actorS + "\'].setName(\'"+ actorS +"\')\n")
-                if(AllScene.blendAnimDict.has_key(actor)): # Check if a dictionary of blended animations exists
+                if(actor in AllScene.blendAnimDict): # Check if a dictionary of blended animations exists
                     out_file.write(i2+ "self.blendAnimDict[\"" + actorS +"\"]=" + str(AllScene.blendAnimDict[actor]) + "\n")
                     out_file.write(i2+ "self.blendAnimDict[\"" + actorS +"\"]=" + str(AllScene.blendAnimDict[actor]) + "\n")
 
 
 
 
@@ -458,7 +458,7 @@ class FileSaver:
 
 
                 pass
                 pass
             else:
             else:
-                 print "Invalid Collision Node: " + nodetype
+                 print("Invalid Collision Node: " + nodetype)
             out_file.write("\n")
             out_file.write("\n")
 
 
 
 
@@ -653,7 +653,7 @@ class FileSaver:
             if(parent=="render" or parent=="camera"):
             if(parent=="render" or parent=="camera"):
                 out_file.write(i2+ "self."+ modelS + ".reparentTo(" + parent + ")\n")
                 out_file.write(i2+ "self."+ modelS + ".reparentTo(" + parent + ")\n")
             else:
             else:
-                if(AllScene.particleDict.has_key(parent)):
+                if(parent in AllScene.particleDict):
                     out_file.write(i2+ "self."+ modelS + ".reparentTo(self." + parent + ".getEffect())\n")
                     out_file.write(i2+ "self."+ modelS + ".reparentTo(self." + parent + ".getEffect())\n")
                 else:
                 else:
                     out_file.write(i2+ "self."+ modelS + ".reparentTo(self." + parent + ")\n")
                     out_file.write(i2+ "self."+ modelS + ".reparentTo(self." + parent + ")\n")
@@ -666,7 +666,7 @@ class FileSaver:
             if(parent=="render" or parent=="camera"):
             if(parent=="render" or parent=="camera"):
                 out_file.write(i2+ "self."+ dummyS + ".reparentTo(" + parent + ")\n")
                 out_file.write(i2+ "self."+ dummyS + ".reparentTo(" + parent + ")\n")
             else:
             else:
-                if(AllScene.particleDict.has_key(parent)):
+                if(parent in AllScene.particleDict):
                     out_file.write(i2+ "self."+ dummyS + ".reparentTo(self." + parent + ".getEffect())\n")
                     out_file.write(i2+ "self."+ dummyS + ".reparentTo(self." + parent + ".getEffect())\n")
                 else:
                 else:
                     out_file.write(i2+ "self."+ dummyS + ".reparentTo(self." + parent + ")\n")
                     out_file.write(i2+ "self."+ dummyS + ".reparentTo(self." + parent + ")\n")
@@ -680,7 +680,7 @@ class FileSaver:
             if(parent=="render" or parent=="camera"):
             if(parent=="render" or parent=="camera"):
                 out_file.write(i2+ "self."+ actorS + ".reparentTo(" + parent + ")\n")
                 out_file.write(i2+ "self."+ actorS + ".reparentTo(" + parent + ")\n")
             else:
             else:
-                if(AllScene.particleDict.has_key(parent)):
+                if(parent in AllScene.particleDict):
                     out_file.write(i2+ "self."+ actorS + ".reparentTo(self." + parent + ".getEffect())\n")
                     out_file.write(i2+ "self."+ actorS + ".reparentTo(self." + parent + ".getEffect())\n")
                 else:
                 else:
                     out_file.write(i2+ "self."+ actorS + ".reparentTo(self." + parent + ")\n")
                     out_file.write(i2+ "self."+ actorS + ".reparentTo(self." + parent + ")\n")
@@ -698,7 +698,7 @@ class FileSaver:
                 out_file.write(i2+"self.collisionDict[\"" + collnodeS + "\"]="+ parentname + ".attachNewNode(self." + collnodeS + "_Node)\n")
                 out_file.write(i2+"self.collisionDict[\"" + collnodeS + "\"]="+ parentname + ".attachNewNode(self." + collnodeS + "_Node)\n")
             else:
             else:
                 #Manakel 2/12/2005: parent replaced by parent Name but why Parent name in partice and parent for other objects?
                 #Manakel 2/12/2005: parent replaced by parent Name but why Parent name in partice and parent for other objects?
-                if(AllScene.particleDict.has_key(parentname)):
+                if(parentname in AllScene.particleDict):
                     out_file.write(i2+"self.collisionDict[\"" + collnodeS + "\"]=self."+ parentname + "getEffect().attachNewNode(self." + collnodeS + "_Node)\n")
                     out_file.write(i2+"self.collisionDict[\"" + collnodeS + "\"]=self."+ parentname + "getEffect().attachNewNode(self." + collnodeS + "_Node)\n")
                 else:
                 else:
                     out_file.write(i2+"self.collisionDict[\"" + collnodeS + "\"]=self."+ parentname + ".attachNewNode(self." + collnodeS + "_Node)\n")
                     out_file.write(i2+"self.collisionDict[\"" + collnodeS + "\"]=self."+ parentname + ".attachNewNode(self." + collnodeS + "_Node)\n")

+ 1 - 3
contrib/src/sceneeditor/seForceGroup.py

@@ -1,8 +1,6 @@
-from pandac.PandaModules import *
+from panda3d.core import *
 from direct.showbase.DirectObject import DirectObject
 from direct.showbase.DirectObject import DirectObject
 from direct.showbase.PhysicsManagerGlobal import *
 from direct.showbase.PhysicsManagerGlobal import *
-#Manakel 2/12/2005: replace from pandac import by from pandac.PandaModules import
-from pandac.PandaModules import ForceNode
 from direct.directnotify import DirectNotifyGlobal
 from direct.directnotify import DirectNotifyGlobal
 import sys
 import sys
 
 

+ 8 - 8
contrib/src/sceneeditor/seGeometry.py

@@ -12,7 +12,7 @@
 #
 #
 #################################################################
 #################################################################
 
 
-from pandac.PandaModules import *
+from panda3d.core import *
 from direct.directtools.DirectGlobals import *
 from direct.directtools.DirectGlobals import *
 from direct.directtools.DirectUtil import *
 from direct.directtools.DirectUtil import *
 import math
 import math
@@ -41,10 +41,10 @@ class LineNodePath(NodePath):
         ls.setColor(colorVec)
         ls.setColor(colorVec)
 
 
     def moveTo( self, *_args ):
     def moveTo( self, *_args ):
-        apply( self.lineSegs.moveTo, _args )
+        self.lineSegs.moveTo(*_args)
 
 
     def drawTo( self, *_args ):
     def drawTo( self, *_args ):
-        apply( self.lineSegs.drawTo, _args )
+        self.lineSegs.drawTo(*_args)
 
 
     def create( self, frameAccurate = 0 ):
     def create( self, frameAccurate = 0 ):
         self.lineSegs.create( self.lineNode, frameAccurate )
         self.lineSegs.create( self.lineNode, frameAccurate )
@@ -60,13 +60,13 @@ class LineNodePath(NodePath):
         self.lineSegs.setThickness( thickness )
         self.lineSegs.setThickness( thickness )
 
 
     def setColor( self, *_args ):
     def setColor( self, *_args ):
-        apply( self.lineSegs.setColor, _args )
+        self.lineSegs.setColor(*_args)
 
 
     def setVertex( self, *_args):
     def setVertex( self, *_args):
-        apply( self.lineSegs.setVertex, _args )
+        self.lineSegs.setVertex(*_args)
 
 
     def setVertexColor( self, vertex, *_args ):
     def setVertexColor( self, vertex, *_args ):
-        apply( self.lineSegs.setVertexColor, (vertex,) + _args )
+        self.lineSegs.setVertexColor(*(vertex,) + _args)
 
 
     def getCurrentPosition( self ):
     def getCurrentPosition( self ):
         return self.lineSegs.getCurrentPosition()
         return self.lineSegs.getCurrentPosition()
@@ -132,9 +132,9 @@ class LineNodePath(NodePath):
         Given a list of lists of points, draw a separate line for each list
         Given a list of lists of points, draw a separate line for each list
         """
         """
         for pointList in lineList:
         for pointList in lineList:
-            apply(self.moveTo, pointList[0])
+            self.moveTo(*pointList[0])
             for point in pointList[1:]:
             for point in pointList[1:]:
-                apply(self.drawTo, point)
+                self.drawTo(*point)
 
 
 ##
 ##
 ## Given a point in space, and a direction, find the point of intersection
 ## Given a point in space, and a direction, find the point of intersection

+ 10 - 11
contrib/src/sceneeditor/seLights.py

@@ -3,9 +3,8 @@
 # Written by Yi-Hong Lin, [email protected], 2004
 # Written by Yi-Hong Lin, [email protected], 2004
 #################################################################
 #################################################################
 from direct.showbase.DirectObject import *
 from direct.showbase.DirectObject import *
-from string import lower
 from direct.directtools import DirectUtil
 from direct.directtools import DirectUtil
-from pandac.PandaModules import *
+from panda3d.core import *
 import string
 import string
 
 
 
 
@@ -341,7 +340,7 @@ class seLightManager(NodePath):
         if type == 'ambient':
         if type == 'ambient':
             self.ambientCount += 1
             self.ambientCount += 1
             if(name=='DEFAULT_NAME'):
             if(name=='DEFAULT_NAME'):
-                light = AmbientLight('ambient_' + `self.ambientCount`)
+                light = AmbientLight('ambient_' + repr(self.ambientCount))
             else:
             else:
                 light = AmbientLight(name)
                 light = AmbientLight(name)
 
 
@@ -350,7 +349,7 @@ class seLightManager(NodePath):
         elif type == 'directional':
         elif type == 'directional':
             self.directionalCount += 1
             self.directionalCount += 1
             if(name=='DEFAULT_NAME'):
             if(name=='DEFAULT_NAME'):
-                light = DirectionalLight('directional_' + `self.directionalCount`)
+                light = DirectionalLight('directional_' + repr(self.directionalCount))
             else:
             else:
                 light = DirectionalLight(name)
                 light = DirectionalLight(name)
 
 
@@ -360,7 +359,7 @@ class seLightManager(NodePath):
         elif type == 'point':
         elif type == 'point':
             self.pointCount += 1
             self.pointCount += 1
             if(name=='DEFAULT_NAME'):
             if(name=='DEFAULT_NAME'):
-                light = PointLight('point_' + `self.pointCount`)
+                light = PointLight('point_' + repr(self.pointCount))
             else:
             else:
                 light = PointLight(name)
                 light = PointLight(name)
 
 
@@ -371,7 +370,7 @@ class seLightManager(NodePath):
         elif type == 'spot':
         elif type == 'spot':
             self.spotCount += 1
             self.spotCount += 1
             if(name=='DEFAULT_NAME'):
             if(name=='DEFAULT_NAME'):
-                light = Spotlight('spot_' + `self.spotCount`)
+                light = Spotlight('spot_' + repr(self.spotCount))
             else:
             else:
                 light = Spotlight(name)
                 light = Spotlight(name)
 
 
@@ -382,7 +381,7 @@ class seLightManager(NodePath):
             light.setAttenuation(Vec3(constant, linear, quadratic))
             light.setAttenuation(Vec3(constant, linear, quadratic))
             light.setExponent(exponent)
             light.setExponent(exponent)
         else:
         else:
-            print 'Invalid light type'
+            print('Invalid light type')
             return None
             return None
 
 
         # Create the seLight objects and put the light object we just created into it.
         # Create the seLight objects and put the light object we just created into it.
@@ -411,7 +410,7 @@ class seLightManager(NodePath):
         # Attention!!
         # Attention!!
         # only Spotlight obj nneds to be specified a lens node first. i.e. setLens() first!
         # only Spotlight obj nneds to be specified a lens node first. i.e. setLens() first!
         #################################################################
         #################################################################
-        type = lower(light.getType().getName())
+        type = light.getType().getName().lower()
 
 
         specularColor = VBase4(1)
         specularColor = VBase4(1)
         position = Point3(0,0,0)
         position = Point3(0,0,0)
@@ -451,7 +450,7 @@ class seLightManager(NodePath):
             quadratic = Attenuation.getZ()
             quadratic = Attenuation.getZ()
             exponent = light.getExponent()
             exponent = light.getExponent()
         else:
         else:
-            print 'Invalid light type'
+            print('Invalid light type')
             return None
             return None
 
 
         lightNode = seLight(light,self,type,
         lightNode = seLight(light,self,type,
@@ -508,7 +507,7 @@ class seLightManager(NodePath):
         # isLight(self.name)
         # isLight(self.name)
         # Use a string as a index to check if there existing a light named "name"
         # Use a string as a index to check if there existing a light named "name"
         #################################################################
         #################################################################
-        return self.lightDict.has_key(name)
+        return name in self.lightDict
 
 
     def rename(self,oName,nName):
     def rename(self,oName,nName):
         #################################################################
         #################################################################
@@ -523,7 +522,7 @@ class seLightManager(NodePath):
             del self.lightDict[oName]
             del self.lightDict[oName]
             return self.lightDict.keys(),lightNode
             return self.lightDict.keys(),lightNode
         else:
         else:
-            print '----Light Mnager: No such Light!'
+            print('----Light Mnager: No such Light!')
 
 
     def getLightNodeList(self):
     def getLightNodeList(self):
         #################################################################
         #################################################################

+ 1 - 1
contrib/src/sceneeditor/seManipulation.py

@@ -520,7 +520,7 @@ class ObjectHandles(NodePath,DirectObject):
         # To avoid recreating a vec every frame
         # To avoid recreating a vec every frame
         self.hitPt = Vec3(0)
         self.hitPt = Vec3(0)
         # Get a handle on the components
         # Get a handle on the components
-        self.xHandles = self.find('**/X')
+        self.xHandles = self.find('**/ohScalingNode')
         self.xPostGroup = self.xHandles.find('**/x-post-group')
         self.xPostGroup = self.xHandles.find('**/x-post-group')
         self.xPostCollision = self.xHandles.find('**/x-post')
         self.xPostCollision = self.xHandles.find('**/x-post')
         self.xRingGroup = self.xHandles.find('**/x-ring-group')
         self.xRingGroup = self.xHandles.find('**/x-ring-group')

+ 153 - 146
contrib/src/sceneeditor/seMopathRecorder.py

@@ -25,10 +25,17 @@ from direct.tkwidgets.Slider import Slider
 from direct.tkwidgets.EntryScale import EntryScale
 from direct.tkwidgets.EntryScale import EntryScale
 from direct.tkwidgets.VectorWidgets import Vector2Entry, Vector3Entry
 from direct.tkwidgets.VectorWidgets import Vector2Entry, Vector3Entry
 from direct.tkwidgets.VectorWidgets import ColorEntry
 from direct.tkwidgets.VectorWidgets import ColorEntry
-from Tkinter import Button, Frame, Radiobutton, Checkbutton, Label
-from Tkinter import StringVar, BooleanVar, Entry, Scale
-import os, string, Tkinter, Pmw
-import __builtin__
+import os, string, sys, Pmw
+
+if sys.version_info >= (3, 0):
+    from tkinter import Button, Frame, Radiobutton, Checkbutton, Label
+    from tkinter import StringVar, BooleanVar, Entry, Scale
+    import tkinter
+else:
+    from Tkinter import Button, Frame, Radiobutton, Checkbutton, Label
+    from Tkinter import StringVar, BooleanVar, Entry, Scale
+    import Tkinter as tkinter
+
 
 
 PRF_UTILITIES = [
 PRF_UTILITIES = [
     'lambda: camera.lookAt(render)',
     'lambda: camera.lookAt(render)',
@@ -123,7 +130,7 @@ class MopathRecorder(AppShell, DirectObject):
         self.postPoints = []
         self.postPoints = []
         self.pointSetDict = {}
         self.pointSetDict = {}
         self.pointSetCount = 0
         self.pointSetCount = 0
-        self.pointSetName = self.name + '-ps-' + `self.pointSetCount`
+        self.pointSetName = self.name + '-ps-' + repr(self.pointSetCount)
         # User callback to call before recording point
         # User callback to call before recording point
         self.samplingMode = 'Continuous'
         self.samplingMode = 'Continuous'
         self.preRecordFunc = None
         self.preRecordFunc = None
@@ -233,7 +240,7 @@ class MopathRecorder(AppShell, DirectObject):
             self.undoButton['state'] = 'normal'
             self.undoButton['state'] = 'normal'
         else:
         else:
             self.undoButton['state'] = 'disabled'
             self.undoButton['state'] = 'disabled'
-        self.undoButton.pack(side = Tkinter.LEFT, expand = 0)
+        self.undoButton.pack(side = tkinter.LEFT, expand = 0)
         self.bind(self.undoButton, 'Undo last operation')
         self.bind(self.undoButton, 'Undo last operation')
 
 
         self.redoButton = Button(self.menuFrame, text = 'Redo',
         self.redoButton = Button(self.menuFrame, text = 'Redo',
@@ -242,19 +249,19 @@ class MopathRecorder(AppShell, DirectObject):
             self.redoButton['state'] = 'normal'
             self.redoButton['state'] = 'normal'
         else:
         else:
             self.redoButton['state'] = 'disabled'
             self.redoButton['state'] = 'disabled'
-        self.redoButton.pack(side = Tkinter.LEFT, expand = 0)
+        self.redoButton.pack(side = tkinter.LEFT, expand = 0)
         self.bind(self.redoButton, 'Redo last operation')
         self.bind(self.redoButton, 'Redo last operation')
 
 
         # Record button
         # Record button
-        mainFrame = Frame(interior, relief = Tkinter.SUNKEN, borderwidth = 2)
+        mainFrame = Frame(interior, relief = tkinter.SUNKEN, borderwidth = 2)
         frame = Frame(mainFrame)
         frame = Frame(mainFrame)
         # Active node path
         # Active node path
         # Button to select active node path
         # Button to select active node path
         widget = self.createButton(frame, 'Recording', 'Node Path:',
         widget = self.createButton(frame, 'Recording', 'Node Path:',
                                    'Select Active Mopath Node Path',
                                    'Select Active Mopath Node Path',
                                    lambda s = self: SEditor.select(s.nodePath),
                                    lambda s = self: SEditor.select(s.nodePath),
-                                   side = Tkinter.LEFT, expand = 0)
-        widget['relief'] = Tkinter.FLAT
+                                   side = tkinter.LEFT, expand = 0)
+        widget['relief'] = tkinter.FLAT
         self.nodePathMenu = Pmw.ComboBox(
         self.nodePathMenu = Pmw.ComboBox(
             frame, entry_width = 20,
             frame, entry_width = 20,
             selectioncommand = self.selectNodePathNamed,
             selectioncommand = self.selectNodePathNamed,
@@ -264,7 +271,7 @@ class MopathRecorder(AppShell, DirectObject):
             self.nodePathMenu.component('entryfield_entry'))
             self.nodePathMenu.component('entryfield_entry'))
         self.nodePathMenuBG = (
         self.nodePathMenuBG = (
             self.nodePathMenuEntry.configure('background')[3])
             self.nodePathMenuEntry.configure('background')[3])
-        self.nodePathMenu.pack(side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+        self.nodePathMenu.pack(side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         self.bind(self.nodePathMenu,
         self.bind(self.nodePathMenu,
                   'Select active node path used for recording and playback')
                   'Select active node path used for recording and playback')
         # Recording type
         # Recording type
@@ -285,81 +292,81 @@ class MopathRecorder(AppShell, DirectObject):
             'Recording', 'Extend',
             'Recording', 'Extend',
             ('Next record session extends existing path'),
             ('Next record session extends existing path'),
             self.recordingType, 'Extend', expand = 0)
             self.recordingType, 'Extend', expand = 0)
-        frame.pack(fill = Tkinter.X, expand = 1)
+        frame.pack(fill = tkinter.X, expand = 1)
 
 
         frame = Frame(mainFrame)
         frame = Frame(mainFrame)
         widget = self.createCheckbutton(
         widget = self.createCheckbutton(
             frame, 'Recording', 'Record',
             frame, 'Recording', 'Record',
             'On: path is being recorded', self.toggleRecord, 0,
             'On: path is being recorded', self.toggleRecord, 0,
-            side = Tkinter.LEFT, fill = Tkinter.BOTH, expand = 1)
-        widget.configure(foreground = 'Red', relief = Tkinter.RAISED, borderwidth = 2,
-                         anchor = Tkinter.CENTER, width = 16)
+            side = tkinter.LEFT, fill = tkinter.BOTH, expand = 1)
+        widget.configure(foreground = 'Red', relief = tkinter.RAISED, borderwidth = 2,
+                         anchor = tkinter.CENTER, width = 16)
         widget = self.createButton(frame, 'Recording', 'Add Keyframe',
         widget = self.createButton(frame, 'Recording', 'Add Keyframe',
                                    'Add Keyframe To Current Path',
                                    'Add Keyframe To Current Path',
                                    self.addKeyframe,
                                    self.addKeyframe,
-                                   side = Tkinter.LEFT, expand = 1)
+                                   side = tkinter.LEFT, expand = 1)
 
 
         widget = self.createButton(frame, 'Recording', 'Bind Path to Node',
         widget = self.createButton(frame, 'Recording', 'Bind Path to Node',
                                    'Bind Motion Path to selected Object',
                                    'Bind Motion Path to selected Object',
                                    self.bindMotionPathToNode,
                                    self.bindMotionPathToNode,
-                                   side = Tkinter.LEFT, expand = 1)
+                                   side = tkinter.LEFT, expand = 1)
 
 
 
 
-        frame.pack(fill = Tkinter.X, expand = 1)
+        frame.pack(fill = tkinter.X, expand = 1)
 
 
-        mainFrame.pack(expand = 1, fill = Tkinter.X, pady = 3)
+        mainFrame.pack(expand = 1, fill = tkinter.X, pady = 3)
 
 
         # Playback controls
         # Playback controls
-        playbackFrame = Frame(interior, relief = Tkinter.SUNKEN,
+        playbackFrame = Frame(interior, relief = tkinter.SUNKEN,
                               borderwidth = 2)
                               borderwidth = 2)
         Label(playbackFrame, text = 'PLAYBACK CONTROLS',
         Label(playbackFrame, text = 'PLAYBACK CONTROLS',
-              font=('MSSansSerif', 12, 'bold')).pack(fill = Tkinter.X)
+              font=('MSSansSerif', 12, 'bold')).pack(fill = tkinter.X)
         # Main playback control slider
         # Main playback control slider
         widget = self.createEntryScale(
         widget = self.createEntryScale(
             playbackFrame, 'Playback', 'Time', 'Set current playback time',
             playbackFrame, 'Playback', 'Time', 'Set current playback time',
-            resolution = 0.01, command = self.playbackGoTo, side = Tkinter.TOP)
-        widget.component('hull')['relief'] = Tkinter.RIDGE
+            resolution = 0.01, command = self.playbackGoTo, side = tkinter.TOP)
+        widget.component('hull')['relief'] = tkinter.RIDGE
         # Kill playback task if drag slider
         # Kill playback task if drag slider
         widget['preCallback'] = self.stopPlayback
         widget['preCallback'] = self.stopPlayback
         # Jam duration entry into entry scale
         # Jam duration entry into entry scale
         self.createLabeledEntry(widget.labelFrame, 'Resample', 'Path Duration',
         self.createLabeledEntry(widget.labelFrame, 'Resample', 'Path Duration',
                                 'Set total curve duration',
                                 'Set total curve duration',
                                 command = self.setPathDuration,
                                 command = self.setPathDuration,
-                                side = Tkinter.LEFT, expand = 0)
+                                side = tkinter.LEFT, expand = 0)
         # Start stop buttons
         # Start stop buttons
         frame = Frame(playbackFrame)
         frame = Frame(playbackFrame)
         widget = self.createButton(frame, 'Playback', '<<',
         widget = self.createButton(frame, 'Playback', '<<',
                                    'Jump to start of playback',
                                    'Jump to start of playback',
                                    self.jumpToStartOfPlayback,
                                    self.jumpToStartOfPlayback,
-                                   side = Tkinter.LEFT, expand = 1)
+                                   side = tkinter.LEFT, expand = 1)
         widget['font'] = (('MSSansSerif', 12, 'bold'))
         widget['font'] = (('MSSansSerif', 12, 'bold'))
         widget = self.createCheckbutton(frame, 'Playback', 'Play',
         widget = self.createCheckbutton(frame, 'Playback', 'Play',
                                         'Start/Stop playback',
                                         'Start/Stop playback',
                                         self.startStopPlayback, 0,
                                         self.startStopPlayback, 0,
-                                        side = Tkinter.LEFT, fill = Tkinter.BOTH, expand = 1)
+                                        side = tkinter.LEFT, fill = tkinter.BOTH, expand = 1)
         widget.configure(anchor = 'center', justify = 'center',
         widget.configure(anchor = 'center', justify = 'center',
-                         relief = Tkinter.RAISED, font = ('MSSansSerif', 12, 'bold'))
+                         relief = tkinter.RAISED, font = ('MSSansSerif', 12, 'bold'))
         widget = self.createButton(frame, 'Playback', '>>',
         widget = self.createButton(frame, 'Playback', '>>',
                                    'Jump to end of playback',
                                    'Jump to end of playback',
                                    self.jumpToEndOfPlayback,
                                    self.jumpToEndOfPlayback,
-                                   side = Tkinter.LEFT, expand = 1)
+                                   side = tkinter.LEFT, expand = 1)
         widget['font'] = (('MSSansSerif', 12, 'bold'))
         widget['font'] = (('MSSansSerif', 12, 'bold'))
         self.createCheckbutton(frame, 'Playback', 'Loop',
         self.createCheckbutton(frame, 'Playback', 'Loop',
                                'On: loop playback',
                                'On: loop playback',
                                self.setLoopPlayback, self.loopPlayback,
                                self.setLoopPlayback, self.loopPlayback,
-                               side = Tkinter.LEFT, fill = Tkinter.BOTH, expand = 0)
-        frame.pack(fill = Tkinter.X, expand = 1)
+                               side = tkinter.LEFT, fill = tkinter.BOTH, expand = 0)
+        frame.pack(fill = tkinter.X, expand = 1)
 
 
         # Speed control
         # Speed control
         frame = Frame(playbackFrame)
         frame = Frame(playbackFrame)
-        widget = Button(frame, text = 'PB Speed Vernier', relief = Tkinter.FLAT,
+        widget = Button(frame, text = 'PB Speed Vernier', relief = tkinter.FLAT,
                         command = lambda s = self: s.setSpeedScale(1.0))
                         command = lambda s = self: s.setSpeedScale(1.0))
-        widget.pack(side = Tkinter.LEFT, expand = 0)
+        widget.pack(side = tkinter.LEFT, expand = 0)
         self.speedScale = Scale(frame, from_ = -1, to = 1,
         self.speedScale = Scale(frame, from_ = -1, to = 1,
                                 resolution = 0.01, showvalue = 0,
                                 resolution = 0.01, showvalue = 0,
                                 width = 10, orient = 'horizontal',
                                 width = 10, orient = 'horizontal',
                                 command = self.setPlaybackSF)
                                 command = self.setPlaybackSF)
-        self.speedScale.pack(side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+        self.speedScale.pack(side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         self.speedVar = StringVar()
         self.speedVar = StringVar()
         self.speedVar.set("0.00")
         self.speedVar.set("0.00")
         self.speedEntry = Entry(frame, textvariable = self.speedVar,
         self.speedEntry = Entry(frame, textvariable = self.speedVar,
@@ -368,14 +375,14 @@ class MopathRecorder(AppShell, DirectObject):
             '<Return>',
             '<Return>',
             lambda e = None, s = self: s.setSpeedScale(
             lambda e = None, s = self: s.setSpeedScale(
             string.atof(s.speedVar.get())))
             string.atof(s.speedVar.get())))
-        self.speedEntry.pack(side = Tkinter.LEFT, expand = 0)
-        frame.pack(fill = Tkinter.X, expand = 1)
+        self.speedEntry.pack(side = tkinter.LEFT, expand = 0)
+        frame.pack(fill = tkinter.X, expand = 1)
 
 
-        playbackFrame.pack(fill = Tkinter.X, pady = 2)
+        playbackFrame.pack(fill = tkinter.X, pady = 2)
 
 
         # Create notebook pages
         # Create notebook pages
         self.mainNotebook = Pmw.NoteBook(interior)
         self.mainNotebook = Pmw.NoteBook(interior)
-        self.mainNotebook.pack(fill = Tkinter.BOTH, expand = 1)
+        self.mainNotebook.pack(fill = tkinter.BOTH, expand = 1)
         self.resamplePage = self.mainNotebook.add('Resample')
         self.resamplePage = self.mainNotebook.add('Resample')
         self.refinePage = self.mainNotebook.add('Refine')
         self.refinePage = self.mainNotebook.add('Refine')
         self.extendPage = self.mainNotebook.add('Extend')
         self.extendPage = self.mainNotebook.add('Extend')
@@ -386,35 +393,35 @@ class MopathRecorder(AppShell, DirectObject):
         ## RESAMPLE PAGE
         ## RESAMPLE PAGE
         label = Label(self.resamplePage, text = 'RESAMPLE CURVE',
         label = Label(self.resamplePage, text = 'RESAMPLE CURVE',
                       font=('MSSansSerif', 12, 'bold'))
                       font=('MSSansSerif', 12, 'bold'))
-        label.pack(fill = Tkinter.X)
+        label.pack(fill = tkinter.X)
 
 
         # Resample
         # Resample
         resampleFrame = Frame(
         resampleFrame = Frame(
-            self.resamplePage, relief = Tkinter.SUNKEN, borderwidth = 2)
+            self.resamplePage, relief = tkinter.SUNKEN, borderwidth = 2)
         label = Label(resampleFrame, text = 'RESAMPLE CURVE',
         label = Label(resampleFrame, text = 'RESAMPLE CURVE',
                       font=('MSSansSerif', 12, 'bold')).pack()
                       font=('MSSansSerif', 12, 'bold')).pack()
         widget = self.createSlider(
         widget = self.createSlider(
             resampleFrame, 'Resample', 'Num. Samples',
             resampleFrame, 'Resample', 'Num. Samples',
             'Number of samples in resampled curve',
             'Number of samples in resampled curve',
             resolution = 1, min = 2, max = 1000, command = self.setNumSamples)
             resolution = 1, min = 2, max = 1000, command = self.setNumSamples)
-        widget.component('hull')['relief'] = Tkinter.RIDGE
+        widget.component('hull')['relief'] = tkinter.RIDGE
         widget['postCallback'] = self.sampleCurve
         widget['postCallback'] = self.sampleCurve
 
 
         frame = Frame(resampleFrame)
         frame = Frame(resampleFrame)
         self.createButton(
         self.createButton(
             frame, 'Resample', 'Make Even',
             frame, 'Resample', 'Make Even',
             'Apply timewarp so resulting path has constant velocity',
             'Apply timewarp so resulting path has constant velocity',
-            self.makeEven, side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+            self.makeEven, side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         self.createButton(
         self.createButton(
             frame, 'Resample', 'Face Forward',
             frame, 'Resample', 'Face Forward',
             'Compute HPR so resulting hpr curve faces along xyz tangent',
             'Compute HPR so resulting hpr curve faces along xyz tangent',
-            self.faceForward, side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
-        frame.pack(fill = Tkinter.X, expand = 0)
-        resampleFrame.pack(fill = Tkinter.X, expand = 0, pady = 2)
+            self.faceForward, side = tkinter.LEFT, fill = tkinter.X, expand = 1)
+        frame.pack(fill = tkinter.X, expand = 0)
+        resampleFrame.pack(fill = tkinter.X, expand = 0, pady = 2)
 
 
         # Desample
         # Desample
         desampleFrame = Frame(
         desampleFrame = Frame(
-            self.resamplePage, relief = Tkinter.SUNKEN, borderwidth = 2)
+            self.resamplePage, relief = tkinter.SUNKEN, borderwidth = 2)
         Label(desampleFrame, text = 'DESAMPLE CURVE',
         Label(desampleFrame, text = 'DESAMPLE CURVE',
               font=('MSSansSerif', 12, 'bold')).pack()
               font=('MSSansSerif', 12, 'bold')).pack()
         widget = self.createSlider(
         widget = self.createSlider(
@@ -422,16 +429,16 @@ class MopathRecorder(AppShell, DirectObject):
             'Specify number of points to skip between samples',
             'Specify number of points to skip between samples',
             min = 1, max = 100, resolution = 1,
             min = 1, max = 100, resolution = 1,
             command = self.setDesampleFrequency)
             command = self.setDesampleFrequency)
-        widget.component('hull')['relief'] = Tkinter.RIDGE
+        widget.component('hull')['relief'] = tkinter.RIDGE
         widget['postCallback'] = self.desampleCurve
         widget['postCallback'] = self.desampleCurve
-        desampleFrame.pack(fill = Tkinter.X, expand = 0, pady = 2)
+        desampleFrame.pack(fill = tkinter.X, expand = 0, pady = 2)
 
 
         ## REFINE PAGE ##
         ## REFINE PAGE ##
-        refineFrame = Frame(self.refinePage, relief = Tkinter.SUNKEN,
+        refineFrame = Frame(self.refinePage, relief = tkinter.SUNKEN,
                             borderwidth = 2)
                             borderwidth = 2)
         label = Label(refineFrame, text = 'REFINE CURVE',
         label = Label(refineFrame, text = 'REFINE CURVE',
                       font=('MSSansSerif', 12, 'bold'))
                       font=('MSSansSerif', 12, 'bold'))
-        label.pack(fill = Tkinter.X)
+        label.pack(fill = tkinter.X)
 
 
         widget = self.createSlider(refineFrame,
         widget = self.createSlider(refineFrame,
                                        'Refine Page', 'Refine From',
                                        'Refine Page', 'Refine From',
@@ -460,14 +467,14 @@ class MopathRecorder(AppShell, DirectObject):
                                        command = self.setRefineStop)
                                        command = self.setRefineStop)
         widget['preCallback'] = self.setRefineMode
         widget['preCallback'] = self.setRefineMode
         widget['postCallback'] = self.getPostPoints
         widget['postCallback'] = self.getPostPoints
-        refineFrame.pack(fill = Tkinter.X)
+        refineFrame.pack(fill = tkinter.X)
 
 
         ## EXTEND PAGE ##
         ## EXTEND PAGE ##
-        extendFrame = Frame(self.extendPage, relief = Tkinter.SUNKEN,
+        extendFrame = Frame(self.extendPage, relief = tkinter.SUNKEN,
                             borderwidth = 2)
                             borderwidth = 2)
         label = Label(extendFrame, text = 'EXTEND CURVE',
         label = Label(extendFrame, text = 'EXTEND CURVE',
                       font=('MSSansSerif', 12, 'bold'))
                       font=('MSSansSerif', 12, 'bold'))
-        label.pack(fill = Tkinter.X)
+        label.pack(fill = tkinter.X)
 
 
         widget = self.createSlider(extendFrame,
         widget = self.createSlider(extendFrame,
                                        'Extend Page', 'Extend From',
                                        'Extend Page', 'Extend From',
@@ -483,14 +490,14 @@ class MopathRecorder(AppShell, DirectObject):
             resolution = 0.01,
             resolution = 0.01,
             command = self.setControlStart)
             command = self.setControlStart)
         widget['preCallback'] = self.setExtendMode
         widget['preCallback'] = self.setExtendMode
-        extendFrame.pack(fill = Tkinter.X)
+        extendFrame.pack(fill = tkinter.X)
 
 
         ## CROP PAGE ##
         ## CROP PAGE ##
-        cropFrame = Frame(self.cropPage, relief = Tkinter.SUNKEN,
+        cropFrame = Frame(self.cropPage, relief = tkinter.SUNKEN,
                             borderwidth = 2)
                             borderwidth = 2)
         label = Label(cropFrame, text = 'CROP CURVE',
         label = Label(cropFrame, text = 'CROP CURVE',
                       font=('MSSansSerif', 12, 'bold'))
                       font=('MSSansSerif', 12, 'bold'))
-        label.pack(fill = Tkinter.X)
+        label.pack(fill = tkinter.X)
 
 
         widget = self.createSlider(
         widget = self.createSlider(
             cropFrame,
             cropFrame,
@@ -508,11 +515,11 @@ class MopathRecorder(AppShell, DirectObject):
 
 
         self.createButton(cropFrame, 'Crop Page', 'Crop Curve',
         self.createButton(cropFrame, 'Crop Page', 'Crop Curve',
                           'Crop curve to specified from to times',
                           'Crop curve to specified from to times',
-                          self.cropCurve, fill = Tkinter.NONE)
-        cropFrame.pack(fill = Tkinter.X)
+                          self.cropCurve, fill = tkinter.NONE)
+        cropFrame.pack(fill = tkinter.X)
 
 
         ## DRAW PAGE ##
         ## DRAW PAGE ##
-        drawFrame = Frame(self.drawPage, relief = Tkinter.SUNKEN,
+        drawFrame = Frame(self.drawPage, relief = tkinter.SUNKEN,
                            borderwidth = 2)
                            borderwidth = 2)
 
 
         self.sf = Pmw.ScrolledFrame(self.drawPage, horizflex = 'elastic')
         self.sf = Pmw.ScrolledFrame(self.drawPage, horizflex = 'elastic')
@@ -521,57 +528,57 @@ class MopathRecorder(AppShell, DirectObject):
 
 
         label = Label(sfFrame, text = 'CURVE RENDERING STYLE',
         label = Label(sfFrame, text = 'CURVE RENDERING STYLE',
                       font=('MSSansSerif', 12, 'bold'))
                       font=('MSSansSerif', 12, 'bold'))
-        label.pack(fill = Tkinter.X)
+        label.pack(fill = tkinter.X)
 
 
         frame = Frame(sfFrame)
         frame = Frame(sfFrame)
-        Label(frame, text = 'SHOW:').pack(side = Tkinter.LEFT, expand = 0)
+        Label(frame, text = 'SHOW:').pack(side = tkinter.LEFT, expand = 0)
         widget = self.createCheckbutton(
         widget = self.createCheckbutton(
             frame, 'Style', 'Path',
             frame, 'Style', 'Path',
             'On: path is visible', self.setPathVis, 1,
             'On: path is visible', self.setPathVis, 1,
-            side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+            side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         widget = self.createCheckbutton(
         widget = self.createCheckbutton(
             frame, 'Style', 'Knots',
             frame, 'Style', 'Knots',
             'On: path knots are visible', self.setKnotVis, 1,
             'On: path knots are visible', self.setKnotVis, 1,
-            side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+            side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         widget = self.createCheckbutton(
         widget = self.createCheckbutton(
             frame, 'Style', 'CVs',
             frame, 'Style', 'CVs',
             'On: path CVs are visible', self.setCvVis, 0,
             'On: path CVs are visible', self.setCvVis, 0,
-            side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+            side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         widget = self.createCheckbutton(
         widget = self.createCheckbutton(
             frame, 'Style', 'Hull',
             frame, 'Style', 'Hull',
             'On: path hull is visible', self.setHullVis, 0,
             'On: path hull is visible', self.setHullVis, 0,
-            side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+            side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         widget = self.createCheckbutton(
         widget = self.createCheckbutton(
             frame, 'Style', 'Trace',
             frame, 'Style', 'Trace',
             'On: record is visible', self.setTraceVis, 0,
             'On: record is visible', self.setTraceVis, 0,
-            side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
+            side = tkinter.LEFT, fill = tkinter.X, expand = 1)
         widget = self.createCheckbutton(
         widget = self.createCheckbutton(
             frame, 'Style', 'Marker',
             frame, 'Style', 'Marker',
             'On: playback marker is visible', self.setMarkerVis, 0,
             'On: playback marker is visible', self.setMarkerVis, 0,
-            side = Tkinter.LEFT, fill = Tkinter.X, expand = 1)
-        frame.pack(fill = Tkinter.X, expand = 1)
+            side = tkinter.LEFT, fill = tkinter.X, expand = 1)
+        frame.pack(fill = tkinter.X, expand = 1)
         # Sliders
         # Sliders
         widget = self.createSlider(
         widget = self.createSlider(
             sfFrame, 'Style', 'Num Segs',
             sfFrame, 'Style', 'Num Segs',
             'Set number of segments used to approximate each parametric unit',
             'Set number of segments used to approximate each parametric unit',
             min = 1.0, max = 400, resolution = 1.0,
             min = 1.0, max = 400, resolution = 1.0,
             value = 40,
             value = 40,
-            command = self.setNumSegs, side = Tkinter.TOP)
-        widget.component('hull')['relief'] = Tkinter.RIDGE
+            command = self.setNumSegs, side = tkinter.TOP)
+        widget.component('hull')['relief'] = tkinter.RIDGE
         widget = self.createSlider(
         widget = self.createSlider(
             sfFrame, 'Style', 'Num Ticks',
             sfFrame, 'Style', 'Num Ticks',
             'Set number of tick marks drawn for each unit of time',
             'Set number of tick marks drawn for each unit of time',
             min = 0.0, max = 10.0, resolution = 1.0,
             min = 0.0, max = 10.0, resolution = 1.0,
             value = 0.0,
             value = 0.0,
-            command = self.setNumTicks, side = Tkinter.TOP)
-        widget.component('hull')['relief'] = Tkinter.RIDGE
+            command = self.setNumTicks, side = tkinter.TOP)
+        widget.component('hull')['relief'] = tkinter.RIDGE
         widget = self.createSlider(
         widget = self.createSlider(
             sfFrame, 'Style', 'Tick Scale',
             sfFrame, 'Style', 'Tick Scale',
             'Set visible size of time tick marks',
             'Set visible size of time tick marks',
             min = 0.01, max = 100.0, resolution = 0.01,
             min = 0.01, max = 100.0, resolution = 0.01,
             value = 5.0,
             value = 5.0,
-            command = self.setTickScale, side = Tkinter.TOP)
-        widget.component('hull')['relief'] = Tkinter.RIDGE
+            command = self.setTickScale, side = tkinter.TOP)
+        widget.component('hull')['relief'] = tkinter.RIDGE
         self.createColorEntry(
         self.createColorEntry(
             sfFrame, 'Style', 'Path Color',
             sfFrame, 'Style', 'Path Color',
             'Color of curve',
             'Color of curve',
@@ -598,14 +605,14 @@ class MopathRecorder(AppShell, DirectObject):
             command = self.setHullColor,
             command = self.setHullColor,
             value = [255.0,128.0,128.0,255.0])
             value = [255.0,128.0,128.0,255.0])
 
 
-        #drawFrame.pack(fill = Tkinter.X)
+        #drawFrame.pack(fill = tkinter.X)
 
 
         ## OPTIONS PAGE ##
         ## OPTIONS PAGE ##
-        optionsFrame = Frame(self.optionsPage, relief = Tkinter.SUNKEN,
+        optionsFrame = Frame(self.optionsPage, relief = tkinter.SUNKEN,
                             borderwidth = 2)
                             borderwidth = 2)
         label = Label(optionsFrame, text = 'RECORDING OPTIONS',
         label = Label(optionsFrame, text = 'RECORDING OPTIONS',
                       font=('MSSansSerif', 12, 'bold'))
                       font=('MSSansSerif', 12, 'bold'))
-        label.pack(fill = Tkinter.X)
+        label.pack(fill = tkinter.X)
         # Hooks
         # Hooks
         frame = Frame(optionsFrame)
         frame = Frame(optionsFrame)
         widget = self.createLabeledEntry(
         widget = self.createLabeledEntry(
@@ -614,7 +621,7 @@ class MopathRecorder(AppShell, DirectObject):
             value = self.startStopHook,
             value = self.startStopHook,
             command = self.setStartStopHook)[0]
             command = self.setStartStopHook)[0]
         label = self.getWidget('Recording', 'Record Hook-Label')
         label = self.getWidget('Recording', 'Record Hook-Label')
-        label.configure(width = 16, anchor = Tkinter.W)
+        label.configure(width = 16, anchor = tkinter.W)
         self.setStartStopHook()
         self.setStartStopHook()
         widget = self.createLabeledEntry(
         widget = self.createLabeledEntry(
             frame, 'Recording', 'Keyframe Hook',
             frame, 'Recording', 'Keyframe Hook',
@@ -622,9 +629,9 @@ class MopathRecorder(AppShell, DirectObject):
             value = self.keyframeHook,
             value = self.keyframeHook,
             command = self.setKeyframeHook)[0]
             command = self.setKeyframeHook)[0]
         label = self.getWidget('Recording', 'Keyframe Hook-Label')
         label = self.getWidget('Recording', 'Keyframe Hook-Label')
-        label.configure(width = 16, anchor = Tkinter.W)
+        label.configure(width = 16, anchor = tkinter.W)
         self.setKeyframeHook()
         self.setKeyframeHook()
-        frame.pack(expand = 1, fill = Tkinter.X)
+        frame.pack(expand = 1, fill = tkinter.X)
         # PreRecordFunc
         # PreRecordFunc
         frame = Frame(optionsFrame)
         frame = Frame(optionsFrame)
         widget = self.createComboBox(
         widget = self.createComboBox(
@@ -632,17 +639,17 @@ class MopathRecorder(AppShell, DirectObject):
             'Function called before sampling each point',
             'Function called before sampling each point',
             PRF_UTILITIES, self.setPreRecordFunc,
             PRF_UTILITIES, self.setPreRecordFunc,
             history = 1, expand = 1)
             history = 1, expand = 1)
-        widget.configure(label_width = 16, label_anchor = Tkinter.W)
+        widget.configure(label_width = 16, label_anchor = tkinter.W)
         widget.configure(entryfield_entry_state = 'normal')
         widget.configure(entryfield_entry_state = 'normal')
         # Initialize preRecordFunc
         # Initialize preRecordFunc
         self.preRecordFunc = eval(PRF_UTILITIES[0])
         self.preRecordFunc = eval(PRF_UTILITIES[0])
         self.createCheckbutton(frame, 'Recording', 'PRF Active',
         self.createCheckbutton(frame, 'Recording', 'PRF Active',
                                'On: Pre Record Func enabled',
                                'On: Pre Record Func enabled',
                                None, 0,
                                None, 0,
-                               side = Tkinter.LEFT, fill = Tkinter.BOTH, expand = 0)
-        frame.pack(expand = 1, fill = Tkinter.X)
+                               side = tkinter.LEFT, fill = tkinter.BOTH, expand = 0)
+        frame.pack(expand = 1, fill = tkinter.X)
         # Pack record frame
         # Pack record frame
-        optionsFrame.pack(fill = Tkinter.X, pady = 2)
+        optionsFrame.pack(fill = tkinter.X, pady = 2)
 
 
         self.mainNotebook.setnaturalsize()
         self.mainNotebook.setnaturalsize()
 
 
@@ -682,16 +689,16 @@ class MopathRecorder(AppShell, DirectObject):
         marker if subnode selected
         marker if subnode selected
         """
         """
         taskMgr.remove(self.name + '-curveEditTask')
         taskMgr.remove(self.name + '-curveEditTask')
-        print nodePath.id()
-        if nodePath.id() in self.playbackMarkerIds:
+        print(nodePath.get_key())
+        if nodePath.get_key() in self.playbackMarkerIds:
             SEditor.select(self.playbackMarker)
             SEditor.select(self.playbackMarker)
-        elif nodePath.id() in self.tangentMarkerIds:
+        elif nodePath.get_key() in self.tangentMarkerIds:
             SEditor.select(self.tangentMarker)
             SEditor.select(self.tangentMarker)
-        elif nodePath.id() == self.playbackMarker.id():
+        elif nodePath.get_key() == self.playbackMarker.get_key():
             self.tangentGroup.show()
             self.tangentGroup.show()
             taskMgr.add(self.curveEditTask,
             taskMgr.add(self.curveEditTask,
                                      self.name + '-curveEditTask')
                                      self.name + '-curveEditTask')
-        elif nodePath.id() == self.tangentMarker.id():
+        elif nodePath.get_key() == self.tangentMarker.get_key():
             self.tangentGroup.show()
             self.tangentGroup.show()
             taskMgr.add(self.curveEditTask,
             taskMgr.add(self.curveEditTask,
                                      self.name + '-curveEditTask')
                                      self.name + '-curveEditTask')
@@ -699,7 +706,7 @@ class MopathRecorder(AppShell, DirectObject):
             self.tangentGroup.hide()
             self.tangentGroup.hide()
 
 
     def getChildIds(self, nodePath):
     def getChildIds(self, nodePath):
-        ids = [nodePath.id()]
+        ids = [nodePath.get_key()]
         kids = nodePath.getChildren()
         kids = nodePath.getChildren()
         for kid in kids:
         for kid in kids:
             ids += self.getChildIds(kid)
             ids += self.getChildIds(kid)
@@ -710,14 +717,14 @@ class MopathRecorder(AppShell, DirectObject):
         Hook called upon deselection of a node path used to select playback
         Hook called upon deselection of a node path used to select playback
         marker if subnode selected
         marker if subnode selected
         """
         """
-        if ((nodePath.id() == self.playbackMarker.id()) or
-            (nodePath.id() == self.tangentMarker.id())):
+        if ((nodePath.get_key() == self.playbackMarker.get_key()) or
+            (nodePath.get_key() == self.tangentMarker.get_key())):
             self.tangentGroup.hide()
             self.tangentGroup.hide()
 
 
     def curveEditTask(self,state):
     def curveEditTask(self,state):
         if self.curveCollection != None:
         if self.curveCollection != None:
             # Update curve position
             # Update curve position
-            if self.manipulandumId == self.playbackMarker.id():
+            if self.manipulandumId == self.playbackMarker.get_key():
                 # Show playback marker
                 # Show playback marker
                 self.playbackMarker.getChild(0).show()
                 self.playbackMarker.getChild(0).show()
                 pos = Point3(0)
                 pos = Point3(0)
@@ -731,7 +738,7 @@ class MopathRecorder(AppShell, DirectObject):
                 # Note: this calls recompute on the curves
                 # Note: this calls recompute on the curves
                 self.nurbsCurveDrawer.draw()
                 self.nurbsCurveDrawer.draw()
             # Update tangent
             # Update tangent
-            if self.manipulandumId == self.tangentMarker.id():
+            if self.manipulandumId == self.tangentMarker.get_key():
                 # If manipulating marker, update tangent
                 # If manipulating marker, update tangent
                 # Hide playback marker
                 # Hide playback marker
                 self.playbackMarker.getChild(0).hide()
                 self.playbackMarker.getChild(0).hide()
@@ -766,10 +773,10 @@ class MopathRecorder(AppShell, DirectObject):
     def manipulateObjectStartHook(self):
     def manipulateObjectStartHook(self):
         self.manipulandumId = None
         self.manipulandumId = None
         if SEditor.selected.last:
         if SEditor.selected.last:
-            if SEditor.selected.last.id() == self.playbackMarker.id():
-                self.manipulandumId = self.playbackMarker.id()
-            elif SEditor.selected.last.id() == self.tangentMarker.id():
-                self.manipulandumId = self.tangentMarker.id()
+            if SEditor.selected.last.get_key() == self.playbackMarker.get_key():
+                self.manipulandumId = self.playbackMarker.get_key()
+            elif SEditor.selected.last.get_key() == self.tangentMarker.get_key():
+                self.manipulandumId = self.tangentMarker.get_key()
 
 
     def manipulateObjectCleanupHook(self):
     def manipulateObjectCleanupHook(self):
         # Clear flag
         # Clear flag
@@ -799,7 +806,7 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def createNewPointSet(self, curveName = None):
     def createNewPointSet(self, curveName = None):
         if curveName == None:
         if curveName == None:
-            self.pointSetName = self.name + '-ps-' + `self.pointSetCount`
+            self.pointSetName = self.name + '-ps-' + repr(self.pointSetCount)
         else:
         else:
             self.pointSetName = curveName
             self.pointSetName = curveName
         # Update dictionary and record pointer to new point set
         # Update dictionary and record pointer to new point set
@@ -1137,7 +1144,7 @@ class MopathRecorder(AppShell, DirectObject):
     def computeCurves(self):
     def computeCurves(self):
         # Check to make sure curve fitters have points
         # Check to make sure curve fitters have points
         if (self.curveFitter.getNumSamples() == 0):
         if (self.curveFitter.getNumSamples() == 0):
-            print 'MopathRecorder.computeCurves: Must define curve first'
+            print('MopathRecorder.computeCurves: Must define curve first')
             return
             return
         # Create curves
         # Create curves
         # XYZ
         # XYZ
@@ -1282,8 +1289,8 @@ class MopathRecorder(AppShell, DirectObject):
             dictName = name
             dictName = name
         else:
         else:
             # Generate a unique name for the dict
             # Generate a unique name for the dict
-            dictName = name # + '-' + `nodePath.id()`
-        if not dict.has_key(dictName):
+            dictName = name # + '-' + repr(nodePath.get_key())
+        if dictName not in dict:
             # Update combo box to include new item
             # Update combo box to include new item
             names.append(dictName)
             names.append(dictName)
             listbox = menu.component('scrolledlist')
             listbox = menu.component('scrolledlist')
@@ -1386,7 +1393,7 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def desampleCurve(self):
     def desampleCurve(self):
         if (self.curveFitter.getNumSamples() == 0):
         if (self.curveFitter.getNumSamples() == 0):
-            print 'MopathRecorder.desampleCurve: Must define curve first'
+            print('MopathRecorder.desampleCurve: Must define curve first')
             return
             return
         # NOTE: This is destructive, points will be deleted from curve fitter
         # NOTE: This is destructive, points will be deleted from curve fitter
         self.curveFitter.desample(self.desampleFrequency)
         self.curveFitter.desample(self.desampleFrequency)
@@ -1400,7 +1407,7 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def sampleCurve(self, fCompute = 1, curveName = None):
     def sampleCurve(self, fCompute = 1, curveName = None):
         if self.curveCollection == None:
         if self.curveCollection == None:
-            print 'MopathRecorder.sampleCurve: Must define curve first'
+            print('MopathRecorder.sampleCurve: Must define curve first')
             return
             return
         # Reset curve fitters
         # Reset curve fitters
         self.curveFitter.reset()
         self.curveFitter.reset()
@@ -1617,7 +1624,7 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def cropCurve(self):
     def cropCurve(self):
         if self.pointSet == None:
         if self.pointSet == None:
-            print 'Empty Point Set'
+            print('Empty Point Set')
             return
             return
         # Keep handle on old points
         # Keep handle on old points
         oldPoints = self.pointSet
         oldPoints = self.pointSet
@@ -1653,15 +1660,15 @@ class MopathRecorder(AppShell, DirectObject):
         # Use first directory in model path
         # Use first directory in model path
         mPath = getModelPath()
         mPath = getModelPath()
         if mPath.getNumDirectories() > 0:
         if mPath.getNumDirectories() > 0:
-            if `mPath.getDirectory(0)` == '.':
+            if repr(mPath.getDirectory(0)) == '.':
                 path = '.'
                 path = '.'
             else:
             else:
                 path = mPath.getDirectory(0).toOsSpecific()
                 path = mPath.getDirectory(0).toOsSpecific()
         else:
         else:
             path = '.'
             path = '.'
         if not os.path.isdir(path):
         if not os.path.isdir(path):
-            print 'MopathRecorder Info: Empty Model Path!'
-            print 'Using current directory'
+            print('MopathRecorder Info: Empty Model Path!')
+            print('Using current directory')
             path = '.'
             path = '.'
         mopathFilename = askopenfilename(
         mopathFilename = askopenfilename(
             defaultextension = '.egg',
             defaultextension = '.egg',
@@ -1692,15 +1699,15 @@ class MopathRecorder(AppShell, DirectObject):
         # Use first directory in model path
         # Use first directory in model path
         mPath = getModelPath()
         mPath = getModelPath()
         if mPath.getNumDirectories() > 0:
         if mPath.getNumDirectories() > 0:
-            if `mPath.getDirectory(0)` == '.':
+            if repr(mPath.getDirectory(0)) == '.':
                 path = '.'
                 path = '.'
             else:
             else:
                 path = mPath.getDirectory(0).toOsSpecific()
                 path = mPath.getDirectory(0).toOsSpecific()
         else:
         else:
             path = '.'
             path = '.'
         if not os.path.isdir(path):
         if not os.path.isdir(path):
-            print 'MopathRecorder Info: Empty Model Path!'
-            print 'Using current directory'
+            print('MopathRecorder Info: Empty Model Path!')
+            print('Using current directory')
             path = '.'
             path = '.'
         mopathFilename = asksaveasfilename(
         mopathFilename = asksaveasfilename(
             defaultextension = '.egg',
             defaultextension = '.egg',
@@ -1734,28 +1741,28 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def createLabeledEntry(self, parent, category, text, balloonHelp,
     def createLabeledEntry(self, parent, category, text, balloonHelp,
                            value = '', command = None,
                            value = '', command = None,
-                           relief = 'sunken', side = Tkinter.LEFT,
+                           relief = 'sunken', side = tkinter.LEFT,
                            expand = 1, width = 12):
                            expand = 1, width = 12):
         frame = Frame(parent)
         frame = Frame(parent)
         variable = StringVar()
         variable = StringVar()
         variable.set(value)
         variable.set(value)
         label = Label(frame, text = text)
         label = Label(frame, text = text)
-        label.pack(side = Tkinter.LEFT, fill = Tkinter.X)
+        label.pack(side = tkinter.LEFT, fill = tkinter.X)
         self.bind(label, balloonHelp)
         self.bind(label, balloonHelp)
         self.widgetDict[category + '-' + text + '-Label'] = label
         self.widgetDict[category + '-' + text + '-Label'] = label
         entry = Entry(frame, width = width, relief = relief,
         entry = Entry(frame, width = width, relief = relief,
                       textvariable = variable)
                       textvariable = variable)
-        entry.pack(side = Tkinter.LEFT, fill = Tkinter.X, expand = expand)
+        entry.pack(side = tkinter.LEFT, fill = tkinter.X, expand = expand)
         self.bind(entry, balloonHelp)
         self.bind(entry, balloonHelp)
         self.widgetDict[category + '-' + text] = entry
         self.widgetDict[category + '-' + text] = entry
         self.variableDict[category + '-' + text] = variable
         self.variableDict[category + '-' + text] = variable
         if command:
         if command:
             entry.bind('<Return>', command)
             entry.bind('<Return>', command)
-        frame.pack(side = side, fill = Tkinter.X, expand = expand)
+        frame.pack(side = side, fill = tkinter.X, expand = expand)
         return (frame, label, entry)
         return (frame, label, entry)
 
 
     def createButton(self, parent, category, text, balloonHelp, command,
     def createButton(self, parent, category, text, balloonHelp, command,
-                     side = 'top', expand = 0, fill = Tkinter.X):
+                     side = 'top', expand = 0, fill = tkinter.X):
         widget = Button(parent, text = text)
         widget = Button(parent, text = text)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
@@ -1766,10 +1773,10 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def createCheckbutton(self, parent, category, text,
     def createCheckbutton(self, parent, category, text,
                           balloonHelp, command, initialState,
                           balloonHelp, command, initialState,
-                          side = 'top', fill = Tkinter.X, expand = 0):
+                          side = 'top', fill = tkinter.X, expand = 0):
         bool = BooleanVar()
         bool = BooleanVar()
         bool.set(initialState)
         bool.set(initialState)
-        widget = Checkbutton(parent, text = text, anchor = Tkinter.W,
+        widget = Checkbutton(parent, text = text, anchor = tkinter.W,
                          variable = bool)
                          variable = bool)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
@@ -1781,8 +1788,8 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def createRadiobutton(self, parent, side, category, text,
     def createRadiobutton(self, parent, side, category, text,
                           balloonHelp, variable, value,
                           balloonHelp, variable, value,
-                          command = None, fill = Tkinter.X, expand = 0):
-        widget = Radiobutton(parent, text = text, anchor = Tkinter.W,
+                          command = None, fill = tkinter.X, expand = 0):
+        widget = Radiobutton(parent, text = text, anchor = tkinter.W,
                              variable = variable, value = value)
                              variable = variable, value = value)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
@@ -1798,10 +1805,10 @@ class MopathRecorder(AppShell, DirectObject):
         kw['min'] = min
         kw['min'] = min
         kw['maxVelocity'] = maxVelocity
         kw['maxVelocity'] = maxVelocity
         kw['resolution'] = resolution
         kw['resolution'] = resolution
-        widget = apply(Floater, (parent,), kw)
+        widget = Floater(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
-        widget.pack(fill = Tkinter.X)
+        widget.pack(fill = tkinter.X)
         self.bind(widget, balloonHelp)
         self.bind(widget, balloonHelp)
         self.widgetDict[category + '-' + text] = widget
         self.widgetDict[category + '-' + text] = widget
         return widget
         return widget
@@ -1809,10 +1816,10 @@ class MopathRecorder(AppShell, DirectObject):
     def createAngleDial(self, parent, category, text, balloonHelp,
     def createAngleDial(self, parent, category, text, balloonHelp,
                         command = None, **kw):
                         command = None, **kw):
         kw['text'] = text
         kw['text'] = text
-        widget = apply(AngleDial,(parent,), kw)
+        widget = AngleDial(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
-        widget.pack(fill = Tkinter.X)
+        widget.pack(fill = tkinter.X)
         self.bind(widget, balloonHelp)
         self.bind(widget, balloonHelp)
         self.widgetDict[category + '-' + text] = widget
         self.widgetDict[category + '-' + text] = widget
         return widget
         return widget
@@ -1820,13 +1827,13 @@ class MopathRecorder(AppShell, DirectObject):
     def createSlider(self, parent, category, text, balloonHelp,
     def createSlider(self, parent, category, text, balloonHelp,
                          command = None, min = 0.0, max = 1.0,
                          command = None, min = 0.0, max = 1.0,
                          resolution = None,
                          resolution = None,
-                         side = Tkinter.TOP, fill = Tkinter.X, expand = 1, **kw):
+                         side = tkinter.TOP, fill = tkinter.X, expand = 1, **kw):
         kw['text'] = text
         kw['text'] = text
         kw['min'] = min
         kw['min'] = min
         kw['max'] = max
         kw['max'] = max
         kw['resolution'] = resolution
         kw['resolution'] = resolution
         #widget = apply(EntryScale, (parent,), kw)
         #widget = apply(EntryScale, (parent,), kw)
-        widget = apply(Slider, (parent,), kw)
+        widget = Slider(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(side = side, fill = fill, expand = expand)
         widget.pack(side = side, fill = fill, expand = expand)
@@ -1837,12 +1844,12 @@ class MopathRecorder(AppShell, DirectObject):
     def createEntryScale(self, parent, category, text, balloonHelp,
     def createEntryScale(self, parent, category, text, balloonHelp,
                          command = None, min = 0.0, max = 1.0,
                          command = None, min = 0.0, max = 1.0,
                          resolution = None,
                          resolution = None,
-                         side = Tkinter.TOP, fill = Tkinter.X, expand = 1, **kw):
+                         side = tkinter.TOP, fill = tkinter.X, expand = 1, **kw):
         kw['text'] = text
         kw['text'] = text
         kw['min'] = min
         kw['min'] = min
         kw['max'] = max
         kw['max'] = max
         kw['resolution'] = resolution
         kw['resolution'] = resolution
-        widget = apply(EntryScale, (parent,), kw)
+        widget = EntryScale(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(side = side, fill = fill, expand = expand)
         widget.pack(side = side, fill = fill, expand = expand)
@@ -1854,10 +1861,10 @@ class MopathRecorder(AppShell, DirectObject):
                            command = None, **kw):
                            command = None, **kw):
         # Set label's text
         # Set label's text
         kw['text'] = text
         kw['text'] = text
-        widget = apply(Vector2Entry, (parent,), kw)
+        widget = Vector2Entry(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
-        widget.pack(fill = Tkinter.X)
+        widget.pack(fill = tkinter.X)
         self.bind(widget, balloonHelp)
         self.bind(widget, balloonHelp)
         self.widgetDict[category + '-' + text] = widget
         self.widgetDict[category + '-' + text] = widget
         return widget
         return widget
@@ -1866,10 +1873,10 @@ class MopathRecorder(AppShell, DirectObject):
                            command = None, **kw):
                            command = None, **kw):
         # Set label's text
         # Set label's text
         kw['text'] = text
         kw['text'] = text
-        widget = apply(Vector3Entry, (parent,), kw)
+        widget = Vector3Entry(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
-        widget.pack(fill = Tkinter.X)
+        widget.pack(fill = tkinter.X)
         self.bind(widget, balloonHelp)
         self.bind(widget, balloonHelp)
         self.widgetDict[category + '-' + text] = widget
         self.widgetDict[category + '-' + text] = widget
         return widget
         return widget
@@ -1878,10 +1885,10 @@ class MopathRecorder(AppShell, DirectObject):
                          command = None, **kw):
                          command = None, **kw):
         # Set label's text
         # Set label's text
         kw['text'] = text
         kw['text'] = text
-        widget = apply(ColorEntry, (parent,) ,kw)
+        widget = ColorEntry(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
-        widget.pack(fill = Tkinter.X)
+        widget.pack(fill = tkinter.X)
         self.bind(widget, balloonHelp)
         self.bind(widget, balloonHelp)
         self.widgetDict[category + '-' + text] = widget
         self.widgetDict[category + '-' + text] = widget
         return widget
         return widget
@@ -1891,13 +1898,13 @@ class MopathRecorder(AppShell, DirectObject):
         optionVar = StringVar()
         optionVar = StringVar()
         if len(items) > 0:
         if len(items) > 0:
             optionVar.set(items[0])
             optionVar.set(items[0])
-        widget = Pmw.OptionMenu(parent, labelpos = Tkinter.W, label_text = text,
+        widget = Pmw.OptionMenu(parent, labelpos = tkinter.W, label_text = text,
                                 label_width = 12, menu_tearoff = 1,
                                 label_width = 12, menu_tearoff = 1,
                                 menubutton_textvariable = optionVar,
                                 menubutton_textvariable = optionVar,
                                 items = items)
                                 items = items)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
-        widget.pack(fill = Tkinter.X)
+        widget.pack(fill = tkinter.X)
         self.bind(widget.component('menubutton'), balloonHelp)
         self.bind(widget.component('menubutton'), balloonHelp)
         self.widgetDict[category + '-' + text] = widget
         self.widgetDict[category + '-' + text] = widget
         self.variableDict[category + '-' + text] = optionVar
         self.variableDict[category + '-' + text] = optionVar
@@ -1905,9 +1912,9 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def createComboBox(self, parent, category, text, balloonHelp,
     def createComboBox(self, parent, category, text, balloonHelp,
                        items, command, history = 0,
                        items, command, history = 0,
-                       side = Tkinter.LEFT, expand = 0, fill = Tkinter.X):
+                       side = tkinter.LEFT, expand = 0, fill = tkinter.X):
         widget = Pmw.ComboBox(parent,
         widget = Pmw.ComboBox(parent,
-                              labelpos = Tkinter.W,
+                              labelpos = tkinter.W,
                               label_text = text,
                               label_text = text,
                               label_anchor = 'e',
                               label_anchor = 'e',
                               label_width = 12,
                               label_width = 12,
@@ -1959,14 +1966,14 @@ class MopathRecorder(AppShell, DirectObject):
 
 
     def bindMotionPathToNode(self):
     def bindMotionPathToNode(self):
         if self.curveCollection == None:
         if self.curveCollection == None:
-            print '----Error: you need to select or create a curve first!'
+            print('----Error: you need to select or create a curve first!')
             return
             return
         self.accept('MP_checkName', self.bindMotionPath)
         self.accept('MP_checkName', self.bindMotionPath)
         self.askName = namePathPanel(MopathRecorder.count)
         self.askName = namePathPanel(MopathRecorder.count)
         return
         return
 
 
     def bindMotionPath(self,name=None,test=None):
     def bindMotionPath(self,name=None,test=None):
-        print test
+        print(test)
         self.ignore('MP_checkName')
         self.ignore('MP_checkName')
         del self.askName
         del self.askName
         self.curveCollection.getCurve(0).setName(name)
         self.curveCollection.getCurve(0).setName(name)
@@ -1993,7 +2000,7 @@ class MopathRecorder(AppShell, DirectObject):
         If the list is not None, it will put the vurve back into the curve list.
         If the list is not None, it will put the vurve back into the curve list.
         else, do nothing.
         else, do nothing.
         '''
         '''
-        print curveList
+        print(curveList)
         self.ignore('curveListFor'+self.name)
         self.ignore('curveListFor'+self.name)
         if curveList != None:
         if curveList != None:
             for collection in curveList:
             for collection in curveList:
@@ -2037,8 +2044,8 @@ class namePathPanel(AppShell):
 
 
         dataFrame = Frame(mainFrame)
         dataFrame = Frame(mainFrame)
         label = Label(dataFrame, text='This name will be used as a reference for this Path.',font=('MSSansSerif', 10))
         label = Label(dataFrame, text='This name will be used as a reference for this Path.',font=('MSSansSerif', 10))
-        label.pack(side = Tkinter.TOP, expand = 0, fill = Tkinter.X)
-        dataFrame.pack(side = Tkinter.TOP, expand = 0, fill = Tkinter.X, padx=5, pady=10)
+        label.pack(side = tkinter.TOP, expand = 0, fill = tkinter.X)
+        dataFrame.pack(side = tkinter.TOP, expand = 0, fill = tkinter.X, padx=5, pady=10)
 
 
         dataFrame = Frame(mainFrame)
         dataFrame = Frame(mainFrame)
         self.inputZone = Pmw.EntryField(dataFrame, labelpos='w', label_text = 'Name Selected Path: ',
         self.inputZone = Pmw.EntryField(dataFrame, labelpos='w', label_text = 'Name Selected Path: ',
@@ -2046,14 +2053,14 @@ class namePathPanel(AppShell):
                                         label_font=('MSSansSerif', 10),
                                         label_font=('MSSansSerif', 10),
                                         validate = None,
                                         validate = None,
                                         entry_width = 20)
                                         entry_width = 20)
-        self.inputZone.pack(side = Tkinter.LEFT, fill=Tkinter.X,expand=0)
+        self.inputZone.pack(side = tkinter.LEFT, fill=tkinter.X,expand=0)
 
 
         self.button_ok = Button(dataFrame, text="OK", command=self.ok_press,width=10)
         self.button_ok = Button(dataFrame, text="OK", command=self.ok_press,width=10)
-        self.button_ok.pack(fill=Tkinter.X,expand=0,side=Tkinter.LEFT, padx = 3)
+        self.button_ok.pack(fill=tkinter.X,expand=0,side=tkinter.LEFT, padx = 3)
 
 
-        dataFrame.pack(side = Tkinter.TOP, expand = 0, fill = Tkinter.X, padx=10, pady=10)
+        dataFrame.pack(side = tkinter.TOP, expand = 0, fill = tkinter.X, padx=10, pady=10)
 
 
-        mainFrame.pack(expand = 1, fill = Tkinter.BOTH)
+        mainFrame.pack(expand = 1, fill = tkinter.BOTH)
 
 
 
 
 
 

+ 4 - 4
contrib/src/sceneeditor/seParticleEffect.py

@@ -1,4 +1,4 @@
-from pandac.PandaModules import *
+from panda3d.core import *
 import seParticles
 import seParticles
 import seForceGroup
 import seForceGroup
 from direct.directnotify import DirectNotifyGlobal
 from direct.directnotify import DirectNotifyGlobal
@@ -209,9 +209,9 @@ class ParticleEffect(NodePath):
         """loadConfig(filename)"""
         """loadConfig(filename)"""
         #try:
         #try:
         #    if vfs:
         #    if vfs:
-        print vfs.readFile(filename)
-        exec vfs.readFile(filename)
-        print "Particle Effect Reading using VFS"
+        print(vfs.readFile(filename))
+        exec(vfs.readFile(filename))
+        print("Particle Effect Reading using VFS")
         #    else:
         #    else:
         #       execfile(filename.toOsSpecific())
         #       execfile(filename.toOsSpecific())
         #       print "Shouldnt be wrong"
         #       print "Shouldnt be wrong"

+ 29 - 22
contrib/src/sceneeditor/seParticlePanel.py

@@ -2,9 +2,7 @@
 
 
 # Import Tkinter, Pmw, and the floater code from this directory tree.
 # Import Tkinter, Pmw, and the floater code from this directory tree.
 from direct.tkwidgets.AppShell import AppShell
 from direct.tkwidgets.AppShell import AppShell
-from tkFileDialog import *
-from tkSimpleDialog import askstring
-import os, Pmw, Tkinter
+import os, Pmw, sys
 from direct.tkwidgets.Dial import AngleDial
 from direct.tkwidgets.Dial import AngleDial
 from direct.tkwidgets.Floater import Floater
 from direct.tkwidgets.Floater import Floater
 from direct.tkwidgets.Slider import Slider
 from direct.tkwidgets.Slider import Slider
@@ -15,6 +13,15 @@ import seForceGroup
 import seParticles
 import seParticles
 import seParticleEffect
 import seParticleEffect
 
 
+
+if sys.version_info >= (3, 0):
+    from tkinter.filedialog import *
+    from tkinter.simpledialog import askstring
+else:
+    from tkFileDialog import *
+    from tkSimpleDialog import askstring
+
+
 class ParticlePanel(AppShell):
 class ParticlePanel(AppShell):
     # Override class variables
     # Override class variables
     appname = 'Particle Panel'
     appname = 'Particle Panel'
@@ -774,7 +781,7 @@ class ParticlePanel(AppShell):
         kw['min'] = min
         kw['min'] = min
         kw['resolution'] = resolution
         kw['resolution'] = resolution
         kw['numDigits'] = numDigits
         kw['numDigits'] = numDigits
-        widget = apply(Floater, (parent,), kw)
+        widget = Floater(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(fill = X)
         widget.pack(fill = X)
@@ -786,7 +793,7 @@ class ParticlePanel(AppShell):
                         command = None, **kw):
                         command = None, **kw):
         kw['text'] = text
         kw['text'] = text
         kw['style'] = 'mini'
         kw['style'] = 'mini'
-        widget = apply(AngleDial,(parent,), kw)
+        widget = AngleDial(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(fill = X)
         widget.pack(fill = X)
@@ -801,7 +808,7 @@ class ParticlePanel(AppShell):
         kw['min'] = min
         kw['min'] = min
         kw['max'] = max
         kw['max'] = max
         kw['resolution'] = resolution
         kw['resolution'] = resolution
-        widget = apply(Slider, (parent,), kw)
+        widget = Slider(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(fill = X)
         widget.pack(fill = X)
@@ -813,7 +820,7 @@ class ParticlePanel(AppShell):
                            command = None, **kw):
                            command = None, **kw):
         # Set label's text
         # Set label's text
         kw['text'] = text
         kw['text'] = text
-        widget = apply(Vector2Entry, (parent,), kw)
+        widget = Vector2Entry(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(fill = X)
         widget.pack(fill = X)
@@ -825,7 +832,7 @@ class ParticlePanel(AppShell):
                            command = None, **kw):
                            command = None, **kw):
         # Set label's text
         # Set label's text
         kw['text'] = text
         kw['text'] = text
-        widget = apply(Vector3Entry, (parent,), kw)
+        widget = Vector3Entry(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(fill = X)
         widget.pack(fill = X)
@@ -837,7 +844,7 @@ class ParticlePanel(AppShell):
                          command = None, **kw):
                          command = None, **kw):
         # Set label's text
         # Set label's text
         kw['text'] = text
         kw['text'] = text
-        widget = apply(ColorEntry, (parent,) ,kw)
+        widget = ColorEntry(parent, **kw)
         # Do this after the widget so command isn't called on creation
         # Do this after the widget so command isn't called on creation
         widget['command'] = command
         widget['command'] = command
         widget.pack(fill = X)
         widget.pack(fill = X)
@@ -992,7 +999,7 @@ class ParticlePanel(AppShell):
             self.mainNotebook.selectpage('System')
             self.mainNotebook.selectpage('System')
             self.updateInfo('System')
             self.updateInfo('System')
         else:
         else:
-            print 'ParticlePanel: No effect named ' + name
+            print('ParticlePanel: No effect named ' + name)
 
 
     def toggleEffect(self, effect, var):
     def toggleEffect(self, effect, var):
         if var.get():
         if var.get():
@@ -1041,15 +1048,15 @@ class ParticlePanel(AppShell):
         # Find path to particle directory
         # Find path to particle directory
         pPath = getParticlePath()
         pPath = getParticlePath()
         if pPath.getNumDirectories() > 0:
         if pPath.getNumDirectories() > 0:
-            if `pPath.getDirectory(0)` == '.':
+            if repr(pPath.getDirectory(0)) == '.':
                 path = '.'
                 path = '.'
             else:
             else:
                 path = pPath.getDirectory(0).toOsSpecific()
                 path = pPath.getDirectory(0).toOsSpecific()
         else:
         else:
             path = '.'
             path = '.'
         if not os.path.isdir(path):
         if not os.path.isdir(path):
-            print 'ParticlePanel Warning: Invalid default DNA directory!'
-            print 'Using current directory'
+            print('ParticlePanel Warning: Invalid default DNA directory!')
+            print('Using current directory')
             path = '.'
             path = '.'
         particleFilename = askopenfilename(
         particleFilename = askopenfilename(
             defaultextension = '.ptf',
             defaultextension = '.ptf',
@@ -1070,15 +1077,15 @@ class ParticlePanel(AppShell):
         # Find path to particle directory
         # Find path to particle directory
         pPath = getParticlePath()
         pPath = getParticlePath()
         if pPath.getNumDirectories() > 0:
         if pPath.getNumDirectories() > 0:
-            if `pPath.getDirectory(0)` == '.':
+            if repr(pPath.getDirectory(0)) == '.':
                 path = '.'
                 path = '.'
             else:
             else:
                 path = pPath.getDirectory(0).toOsSpecific()
                 path = pPath.getDirectory(0).toOsSpecific()
         else:
         else:
             path = '.'
             path = '.'
         if not os.path.isdir(path):
         if not os.path.isdir(path):
-            print 'ParticlePanel Warning: Invalid default DNA directory!'
-            print 'Using current directory'
+            print('ParticlePanel Warning: Invalid default DNA directory!')
+            print('Using current directory')
             path = '.'
             path = '.'
         particleFilename = asksaveasfilename(
         particleFilename = asksaveasfilename(
             defaultextension = '.ptf',
             defaultextension = '.ptf',
@@ -1654,7 +1661,7 @@ class ParticlePanel(AppShell):
     def setRendererSpriteNonAnimatedTheta(self, theta):
     def setRendererSpriteNonAnimatedTheta(self, theta):
         self.particles.renderer.setNonanimatedTheta(theta)
         self.particles.renderer.setNonanimatedTheta(theta)
     def setRendererSpriteBlendMethod(self, blendMethod):
     def setRendererSpriteBlendMethod(self, blendMethod):
-        print blendMethod
+        print(blendMethod)
         if blendMethod == 'PP_NO_BLEND':
         if blendMethod == 'PP_NO_BLEND':
             bMethod = BaseParticleRenderer.PPNOBLEND
             bMethod = BaseParticleRenderer.PPNOBLEND
         elif blendMethod == 'PP_BLEND_LINEAR':
         elif blendMethod == 'PP_BLEND_LINEAR':
@@ -1863,7 +1870,7 @@ class ParticlePanel(AppShell):
                                       count, force):
                                       count, force):
         def setVec(vec, f = force):
         def setVec(vec, f = force):
             f.setVector(vec[0], vec[1], vec[2])
             f.setVector(vec[0], vec[1], vec[2])
-        forceName = 'Vector Force-' + `count`
+        forceName = 'Vector Force-' + repr(count)
         frame = self.createForceFrame(forcePage, forceName, force)
         frame = self.createForceFrame(forcePage, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         vec = force.getLocalVector()
         vec = force.getLocalVector()
@@ -1875,7 +1882,7 @@ class ParticlePanel(AppShell):
 
 
     def createLinearRandomForceWidget(self, forcePage, pageName, count,
     def createLinearRandomForceWidget(self, forcePage, pageName, count,
                                 force, type):
                                 force, type):
-        forceName = type + ' Force-' + `count`
+        forceName = type + ' Force-' + repr(count)
         frame = self.createForceFrame(forcePage, forceName, force)
         frame = self.createForceFrame(forcePage, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         self.createForceActiveWidget(frame, pageName, forceName, force)
         self.createForceActiveWidget(frame, pageName, forceName, force)
@@ -1884,7 +1891,7 @@ class ParticlePanel(AppShell):
                                         count, force):
                                         count, force):
         def setCoef(coef, f = force):
         def setCoef(coef, f = force):
             f.setCoef(coef)
             f.setCoef(coef)
-        forceName = 'Friction Force-' + `count`
+        forceName = 'Friction Force-' + repr(count)
         frame = self.createForceFrame(forcePage, forceName, force)
         frame = self.createForceFrame(forcePage, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         self.createFloater(frame, pageName, forceName + ' Coef',
         self.createFloater(frame, pageName, forceName + ' Coef',
@@ -1895,7 +1902,7 @@ class ParticlePanel(AppShell):
 
 
     def createLinearCylinderVortexForceWidget(self, forcePage, pageName,
     def createLinearCylinderVortexForceWidget(self, forcePage, pageName,
                                               count, force):
                                               count, force):
-        forceName = 'Vortex Force-' + `count`
+        forceName = 'Vortex Force-' + repr(count)
         def setCoef(coef, f = force):
         def setCoef(coef, f = force):
             f.setCoef(coef)
             f.setCoef(coef)
         def setLength(length, f = force):
         def setLength(length, f = force):
@@ -1934,7 +1941,7 @@ class ParticlePanel(AppShell):
             f.setForceCenter(Point3(vec[0], vec[1], vec[2]))
             f.setForceCenter(Point3(vec[0], vec[1], vec[2]))
         def setRadius(radius, f = force):
         def setRadius(radius, f = force):
             f.setRadius(radius)
             f.setRadius(radius)
-        forceName = type + ' Force-' + `count`
+        forceName = type + ' Force-' + repr(count)
         frame = self.createForceFrame(forcePage, forceName, force)
         frame = self.createForceFrame(forcePage, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         self.createLinearForceWidgets(frame, pageName, forceName, force)
         var = self.createOptionMenu(
         var = self.createOptionMenu(

+ 5 - 25
contrib/src/sceneeditor/seParticles.py

@@ -1,28 +1,8 @@
-from pandac.PandaModules import *
+from panda3d.core import *
+from panda3d.physics import *
 from direct.particles.ParticleManagerGlobal import *
 from direct.particles.ParticleManagerGlobal import *
 from direct.showbase.PhysicsManagerGlobal import *
 from direct.showbase.PhysicsManagerGlobal import *
-#Manakel 2/12/2005: replace from pandac import by from pandac.PandaModules import
-from pandac.PandaModules import ParticleSystem
-from pandac.PandaModules import BaseParticleFactory
-from pandac.PandaModules import PointParticleFactory
-from pandac.PandaModules import ZSpinParticleFactory
 #import OrientedParticleFactory
 #import OrientedParticleFactory
-from pandac.PandaModules import BaseParticleRenderer
-from pandac.PandaModules import PointParticleRenderer
-from pandac.PandaModules import LineParticleRenderer
-from pandac.PandaModules import GeomParticleRenderer
-from pandac.PandaModules import SparkleParticleRenderer
-from pandac.PandaModules import SpriteParticleRenderer
-from pandac.PandaModules import BaseParticleEmitter
-from pandac.PandaModules import BoxEmitter
-from pandac.PandaModules import DiscEmitter
-from pandac.PandaModules import LineEmitter
-from pandac.PandaModules import PointEmitter
-from pandac.PandaModules import RectangleEmitter
-from pandac.PandaModules import RingEmitter
-from pandac.PandaModules import SphereSurfaceEmitter
-from pandac.PandaModules import SphereVolumeEmitter
-from pandac.PandaModules import TangentRingEmitter
 import string
 import string
 import os
 import os
 from direct.directnotify import DirectNotifyGlobal
 from direct.directnotify import DirectNotifyGlobal
@@ -113,7 +93,7 @@ class Particles(ParticleSystem):
         elif (type == "OrientedParticleFactory"):
         elif (type == "OrientedParticleFactory"):
             self.factory = OrientedParticleFactory.OrientedParticleFactory()
             self.factory = OrientedParticleFactory.OrientedParticleFactory()
         else:
         else:
-            print "unknown factory type: %s" % type
+            print("unknown factory type: %s" % type)
             return None
             return None
         self.factory.setLifespanBase(0.5)
         self.factory.setLifespanBase(0.5)
         ParticleSystem.ParticleSystem.setFactory(self, self.factory)
         ParticleSystem.ParticleSystem.setFactory(self, self.factory)
@@ -152,7 +132,7 @@ class Particles(ParticleSystem):
                 # See sourceFileName and sourceNodeName in SpriteParticleRenderer-extensions.py
                 # See sourceFileName and sourceNodeName in SpriteParticleRenderer-extensions.py
                 self.renderer.setTextureFromNode()
                 self.renderer.setTextureFromNode()
         else:
         else:
-            print "unknown renderer type: %s" % type
+            print("unknown renderer type: %s" % type)
             return None
             return None
         ParticleSystem.ParticleSystem.setRenderer(self, self.renderer)
         ParticleSystem.ParticleSystem.setRenderer(self, self.renderer)
 
 
@@ -183,7 +163,7 @@ class Particles(ParticleSystem):
         elif (type == "TangentRingEmitter"):
         elif (type == "TangentRingEmitter"):
             self.emitter = TangentRingEmitter.TangentRingEmitter()
             self.emitter = TangentRingEmitter.TangentRingEmitter()
         else:
         else:
-            print "unknown emitter type: %s" % type
+            print("unknown emitter type: %s" % type)
             return None
             return None
         ParticleSystem.ParticleSystem.setEmitter(self, self.emitter)
         ParticleSystem.ParticleSystem.setEmitter(self, self.emitter)
 
 

+ 34 - 27
contrib/src/sceneeditor/sePlacer.py

@@ -5,9 +5,16 @@ from direct.directtools.DirectGlobals import *
 from direct.tkwidgets.AppShell import AppShell
 from direct.tkwidgets.AppShell import AppShell
 from direct.tkwidgets.Dial import AngleDial
 from direct.tkwidgets.Dial import AngleDial
 from direct.tkwidgets.Floater import Floater
 from direct.tkwidgets.Floater import Floater
-from Tkinter import Button, Menubutton, Menu, StringVar
-from pandac.PandaModules import *
-import Tkinter, Pmw
+from panda3d.core import *
+import sys, Pmw
+
+if sys.version_info >= (3, 0):
+    from tkinter import Button, Menubutton, Menu, StringVar
+    import tkinter
+else:
+    from Tkinter import Button, Menubutton, Menu, StringVar
+    import Tkinter as tkinter
+
 """
 """
 TODO:
 TODO:
 Task to monitor pose
 Task to monitor pose
@@ -84,7 +91,7 @@ class Placer(AppShell):
     def createInterface(self):
     def createInterface(self):
         # The interior of the toplevel panel
         # The interior of the toplevel panel
         interior = self.interior()
         interior = self.interior()
-        interior['relief'] = Tkinter.FLAT
+        interior['relief'] = tkinter.FLAT
         # Add placer commands to menubar
         # Add placer commands to menubar
         self.menuBar.addmenu('Placer', 'Placer Panel Operations')
         self.menuBar.addmenu('Placer', 'Placer Panel Operations')
         self.menuBar.addmenuitem('Placer', 'command',
         self.menuBar.addmenuitem('Placer', 'command',
@@ -113,7 +120,7 @@ class Placer(AppShell):
         # Get a handle to the menu frame
         # Get a handle to the menu frame
         menuFrame = self.menuFrame
         menuFrame = self.menuFrame
         self.nodePathMenu = Pmw.ComboBox(
         self.nodePathMenu = Pmw.ComboBox(
-            menuFrame, labelpos = Tkinter.W, label_text = 'Node Path:',
+            menuFrame, labelpos = tkinter.W, label_text = 'Node Path:',
             entry_width = 20,
             entry_width = 20,
             selectioncommand = self.selectNodePathNamed,
             selectioncommand = self.selectNodePathNamed,
             scrolledlist_items = self.nodePathNames)
             scrolledlist_items = self.nodePathNames)
@@ -168,7 +175,7 @@ class Placer(AppShell):
                              tag_text = 'Position',
                              tag_text = 'Position',
                              tag_font=('MSSansSerif', 14),
                              tag_font=('MSSansSerif', 14),
                              tag_activebackground = '#909090',
                              tag_activebackground = '#909090',
-                             ring_relief = Tkinter.RIDGE)
+                             ring_relief = tkinter.RIDGE)
         posMenubutton = posGroup.component('tag')
         posMenubutton = posGroup.component('tag')
         self.bind(posMenubutton, 'Position menu operations')
         self.bind(posMenubutton, 'Position menu operations')
         posMenu = Menu(posMenubutton, tearoff = 0)
         posMenu = Menu(posMenubutton, tearoff = 0)
@@ -182,7 +189,7 @@ class Placer(AppShell):
         # Create the dials
         # Create the dials
         self.posX = self.createcomponent('posX', (), None,
         self.posX = self.createcomponent('posX', (), None,
                                          Floater, (posInterior,),
                                          Floater, (posInterior,),
-                                         text = 'X', relief = Tkinter.FLAT,
+                                         text = 'X', relief = tkinter.FLAT,
                                          value = 0.0,
                                          value = 0.0,
                                          label_foreground = 'Red')
                                          label_foreground = 'Red')
         self.posX['commandData'] = ['x']
         self.posX['commandData'] = ['x']
@@ -193,7 +200,7 @@ class Placer(AppShell):
 
 
         self.posY = self.createcomponent('posY', (), None,
         self.posY = self.createcomponent('posY', (), None,
                                          Floater, (posInterior,),
                                          Floater, (posInterior,),
-                                         text = 'Y', relief = Tkinter.FLAT,
+                                         text = 'Y', relief = tkinter.FLAT,
                                          value = 0.0,
                                          value = 0.0,
                                          label_foreground = '#00A000')
                                          label_foreground = '#00A000')
         self.posY['commandData'] = ['y']
         self.posY['commandData'] = ['y']
@@ -204,7 +211,7 @@ class Placer(AppShell):
 
 
         self.posZ = self.createcomponent('posZ', (), None,
         self.posZ = self.createcomponent('posZ', (), None,
                                          Floater, (posInterior,),
                                          Floater, (posInterior,),
-                                         text = 'Z', relief = Tkinter.FLAT,
+                                         text = 'Z', relief = tkinter.FLAT,
                                          value = 0.0,
                                          value = 0.0,
                                          label_foreground = 'Blue')
                                          label_foreground = 'Blue')
         self.posZ['commandData'] = ['z']
         self.posZ['commandData'] = ['z']
@@ -219,7 +226,7 @@ class Placer(AppShell):
                              tag_text = 'Orientation',
                              tag_text = 'Orientation',
                              tag_font=('MSSansSerif', 14),
                              tag_font=('MSSansSerif', 14),
                              tag_activebackground = '#909090',
                              tag_activebackground = '#909090',
-                             ring_relief = Tkinter.RIDGE)
+                             ring_relief = tkinter.RIDGE)
         hprMenubutton = hprGroup.component('tag')
         hprMenubutton = hprGroup.component('tag')
         self.bind(hprMenubutton, 'Orientation menu operations')
         self.bind(hprMenubutton, 'Orientation menu operations')
         hprMenu = Menu(hprMenubutton, tearoff = 0)
         hprMenu = Menu(hprMenubutton, tearoff = 0)
@@ -234,7 +241,7 @@ class Placer(AppShell):
                                          AngleDial, (hprInterior,),
                                          AngleDial, (hprInterior,),
                                          style = 'mini',
                                          style = 'mini',
                                          text = 'H', value = 0.0,
                                          text = 'H', value = 0.0,
-                                         relief = Tkinter.FLAT,
+                                         relief = tkinter.FLAT,
                                          label_foreground = 'blue')
                                          label_foreground = 'blue')
         self.hprH['commandData'] = ['h']
         self.hprH['commandData'] = ['h']
         self.hprH['preCallback'] = self.xformStart
         self.hprH['preCallback'] = self.xformStart
@@ -246,7 +253,7 @@ class Placer(AppShell):
                                          AngleDial, (hprInterior,),
                                          AngleDial, (hprInterior,),
                                          style = 'mini',
                                          style = 'mini',
                                          text = 'P', value = 0.0,
                                          text = 'P', value = 0.0,
-                                         relief = Tkinter.FLAT,
+                                         relief = tkinter.FLAT,
                                          label_foreground = 'red')
                                          label_foreground = 'red')
         self.hprP['commandData'] = ['p']
         self.hprP['commandData'] = ['p']
         self.hprP['preCallback'] = self.xformStart
         self.hprP['preCallback'] = self.xformStart
@@ -258,7 +265,7 @@ class Placer(AppShell):
                                          AngleDial, (hprInterior,),
                                          AngleDial, (hprInterior,),
                                          style = 'mini',
                                          style = 'mini',
                                          text = 'R', value = 0.0,
                                          text = 'R', value = 0.0,
-                                         relief = Tkinter.FLAT,
+                                         relief = tkinter.FLAT,
                                          label_foreground = '#00A000')
                                          label_foreground = '#00A000')
         self.hprR['commandData'] = ['r']
         self.hprR['commandData'] = ['r']
         self.hprR['preCallback'] = self.xformStart
         self.hprR['preCallback'] = self.xformStart
@@ -276,7 +283,7 @@ class Placer(AppShell):
                                tag_pyclass = Menubutton,
                                tag_pyclass = Menubutton,
                                tag_font=('MSSansSerif', 14),
                                tag_font=('MSSansSerif', 14),
                                tag_activebackground = '#909090',
                                tag_activebackground = '#909090',
-                               ring_relief = Tkinter.RIDGE)
+                               ring_relief = tkinter.RIDGE)
         self.scaleMenubutton = scaleGroup.component('tag')
         self.scaleMenubutton = scaleGroup.component('tag')
         self.bind(self.scaleMenubutton, 'Scale menu operations')
         self.bind(self.scaleMenubutton, 'Scale menu operations')
         self.scaleMenubutton['textvariable'] = self.scalingMode
         self.scaleMenubutton['textvariable'] = self.scalingMode
@@ -302,7 +309,7 @@ class Placer(AppShell):
         self.scaleX = self.createcomponent('scaleX', (), None,
         self.scaleX = self.createcomponent('scaleX', (), None,
                                            Floater, (scaleInterior,),
                                            Floater, (scaleInterior,),
                                            text = 'X Scale',
                                            text = 'X Scale',
-                                           relief = Tkinter.FLAT,
+                                           relief = tkinter.FLAT,
                                            min = 0.0001, value = 1.0,
                                            min = 0.0001, value = 1.0,
                                            resetValue = 1.0,
                                            resetValue = 1.0,
                                            label_foreground = 'Red')
                                            label_foreground = 'Red')
@@ -315,7 +322,7 @@ class Placer(AppShell):
         self.scaleY = self.createcomponent('scaleY', (), None,
         self.scaleY = self.createcomponent('scaleY', (), None,
                                            Floater, (scaleInterior,),
                                            Floater, (scaleInterior,),
                                            text = 'Y Scale',
                                            text = 'Y Scale',
-                                           relief = Tkinter.FLAT,
+                                           relief = tkinter.FLAT,
                                            min = 0.0001, value = 1.0,
                                            min = 0.0001, value = 1.0,
                                            resetValue = 1.0,
                                            resetValue = 1.0,
                                            label_foreground = '#00A000')
                                            label_foreground = '#00A000')
@@ -328,7 +335,7 @@ class Placer(AppShell):
         self.scaleZ = self.createcomponent('scaleZ', (), None,
         self.scaleZ = self.createcomponent('scaleZ', (), None,
                                            Floater, (scaleInterior,),
                                            Floater, (scaleInterior,),
                                            text = 'Z Scale',
                                            text = 'Z Scale',
-                                           relief = Tkinter.FLAT,
+                                           relief = tkinter.FLAT,
                                            min = 0.0001, value = 1.0,
                                            min = 0.0001, value = 1.0,
                                            resetValue = 1.0,
                                            resetValue = 1.0,
                                            label_foreground = 'Blue')
                                            label_foreground = 'Blue')
@@ -428,7 +435,7 @@ class Placer(AppShell):
                 background = self.nodePathMenuBG)
                 background = self.nodePathMenuBG)
             # Check to see if node path and ref node path are the same
             # Check to see if node path and ref node path are the same
             if ((self.refCS != None) and
             if ((self.refCS != None) and
-                (self.refCS.id() == self['nodePath'].id())):
+                (self.refCS.get_key() == self['nodePath'].get_key())):
                 # Yes they are, use temp CS as ref
                 # Yes they are, use temp CS as ref
                 # This calls updatePlacer
                 # This calls updatePlacer
                 self.setReferenceNodePath(self.tempCS)
                 self.setReferenceNodePath(self.tempCS)
@@ -473,7 +480,7 @@ class Placer(AppShell):
                     listbox = self.refNodePathMenu.component('scrolledlist')
                     listbox = self.refNodePathMenu.component('scrolledlist')
                     listbox.setlist(self.refNodePathNames)
                     listbox.setlist(self.refNodePathNames)
         # Check to see if node path and ref node path are the same
         # Check to see if node path and ref node path are the same
-        if (nodePath != None) and (nodePath.id() == self['nodePath'].id()):
+        if (nodePath != None) and (nodePath.get_key() == self['nodePath'].get_key()):
             # Yes they are, use temp CS and update listbox accordingly
             # Yes they are, use temp CS and update listbox accordingly
             nodePath = self.tempCS
             nodePath = self.tempCS
             self.refNodePathMenu.selectitem('parent')
             self.refNodePathMenu.selectitem('parent')
@@ -508,8 +515,8 @@ class Placer(AppShell):
             dictName = name
             dictName = name
         else:
         else:
             # Generate a unique name for the dict
             # Generate a unique name for the dict
-            dictName = name + '-' + `nodePath.id()`
-        if not dict.has_key(dictName):
+            dictName = name + '-' + repr(nodePath.get_key())
+        if dictName not in dict:
             # Update combo box to include new item
             # Update combo box to include new item
             names.append(dictName)
             names.append(dictName)
             listbox = menu.component('scrolledlist')
             listbox = menu.component('scrolledlist')
@@ -769,12 +776,12 @@ class Placer(AppShell):
             posString = '%.2f, %.2f, %.2f' % (pos[0], pos[1], pos[2])
             posString = '%.2f, %.2f, %.2f' % (pos[0], pos[1], pos[2])
             hprString = '%.2f, %.2f, %.2f' % (hpr[0], hpr[1], hpr[2])
             hprString = '%.2f, %.2f, %.2f' % (hpr[0], hpr[1], hpr[2])
             scaleString = '%.2f, %.2f, %.2f' % (scale[0], scale[1], scale[2])
             scaleString = '%.2f, %.2f, %.2f' % (scale[0], scale[1], scale[2])
-            print 'NodePath: %s' % name
-            print 'Pos: %s' % posString
-            print 'Hpr: %s' % hprString
-            print 'Scale: %s' % scaleString
-            print ('%s.setPosHprScale(%s, %s, %s)' %
-                   (name, posString, hprString, scaleString))
+            print('NodePath: %s' % name)
+            print('Pos: %s' % posString)
+            print('Hpr: %s' % hprString)
+            print('Scale: %s' % scaleString)
+            print(('%s.setPosHprScale(%s, %s, %s)' %
+                   (name, posString, hprString, scaleString)))
 
 
     def onDestroy(self, event):
     def onDestroy(self, event):
         # Remove hooks
         # Remove hooks

+ 16 - 9
contrib/src/sceneeditor/seSceneGraphExplorer.py

@@ -9,9 +9,16 @@
 #
 #
 #################################################################
 #################################################################
 from direct.showbase.DirectObject import DirectObject
 from direct.showbase.DirectObject import DirectObject
-from Tkinter import IntVar, Frame, Label
 from seTree import TreeNode, TreeItem
 from seTree import TreeNode, TreeItem
-import Pmw, Tkinter
+
+import Pmw, sys
+
+if sys.version_info >= (3, 0):
+    from tkinter import IntVar, Frame, Label
+    import tkinter
+else:
+    from Tkinter import IntVar, Frame, Label
+    import Tkinter as tkinter
 
 
 # changing these strings requires changing sceneEditor.py SGE_ strs too!
 # changing these strings requires changing sceneEditor.py SGE_ strs too!
 # This list of items will be showed on the pop out window when user right click on
 # This list of items will be showed on the pop out window when user right click on
@@ -57,7 +64,7 @@ class seSceneGraphExplorer(Pmw.MegaWidget, DirectObject):
 
 
         # Setup up container
         # Setup up container
         interior = self.interior()
         interior = self.interior()
-        interior.configure(relief = Tkinter.GROOVE, borderwidth = 2)
+        interior.configure(relief = tkinter.GROOVE, borderwidth = 2)
 
 
         # Create a label and an entry
         # Create a label and an entry
         self._scrolledCanvas = self.createcomponent(
         self._scrolledCanvas = self.createcomponent(
@@ -69,7 +76,7 @@ class seSceneGraphExplorer(Pmw.MegaWidget, DirectObject):
         self._canvas = self._scrolledCanvas.component('canvas')
         self._canvas = self._scrolledCanvas.component('canvas')
         self._canvas['scrollregion'] = ('0i', '0i', '2i', '4i')
         self._canvas['scrollregion'] = ('0i', '0i', '2i', '4i')
         self._scrolledCanvas.resizescrollregion()
         self._scrolledCanvas.resizescrollregion()
-        self._scrolledCanvas.pack(padx = 3, pady = 3, expand=1, fill = Tkinter.BOTH)
+        self._scrolledCanvas.pack(padx = 3, pady = 3, expand=1, fill = tkinter.BOTH)
 
 
         self._canvas.bind('<ButtonPress-2>', self.mouse2Down)
         self._canvas.bind('<ButtonPress-2>', self.mouse2Down)
         self._canvas.bind('<B2-Motion>', self.mouse2Motion)
         self._canvas.bind('<B2-Motion>', self.mouse2Motion)
@@ -91,8 +98,8 @@ class seSceneGraphExplorer(Pmw.MegaWidget, DirectObject):
             (), None,
             (), None,
             Label, (interior,),
             Label, (interior,),
             text = 'Active Reparent Target: ',
             text = 'Active Reparent Target: ',
-            anchor = Tkinter.W, justify = Tkinter.LEFT)
-        self._label.pack(fill = Tkinter.X)
+            anchor = tkinter.W, justify = tkinter.LEFT)
+        self._label.pack(fill = tkinter.X)
 
 
         # Add update parent label
         # Add update parent label
         def updateLabel(nodePath = None, s = self):
         def updateLabel(nodePath = None, s = self):
@@ -141,11 +148,11 @@ class seSceneGraphExplorer(Pmw.MegaWidget, DirectObject):
         self._node.deselecttree()
         self._node.deselecttree()
 
 
     def selectNodePath(self,nodePath, callBack=True):
     def selectNodePath(self,nodePath, callBack=True):
-        item = self._node.find(nodePath.id())
+        item = self._node.find(nodePath.get_key())
         if item!= None:
         if item!= None:
             item.select(callBack)
             item.select(callBack)
         else:
         else:
-            print '----SGE: Error Selection'
+            print('----SGE: Error Selection')
 
 
 class SceneGraphExplorerItem(TreeItem):
 class SceneGraphExplorerItem(TreeItem):
 
 
@@ -164,7 +171,7 @@ class SceneGraphExplorerItem(TreeItem):
         return name
         return name
 
 
     def GetKey(self):
     def GetKey(self):
-        return self.nodePath.id()
+        return self.nodePath.get_key()
 
 
     def IsEditable(self):
     def IsEditable(self):
         # All nodes' names can be edited nowadays.
         # All nodes' names can be edited nowadays.

+ 20 - 11
contrib/src/sceneeditor/seSelection.py

@@ -11,7 +11,7 @@
 # (If we do change original directools, it will force user has to install the latest version of OUR Panda)
 # (If we do change original directools, it will force user has to install the latest version of OUR Panda)
 #
 #
 #################################################################
 #################################################################
-from pandac.PandaModules import GeomNode
+from panda3d.core import GeomNode
 from direct.directtools.DirectGlobals import *
 from direct.directtools.DirectGlobals import *
 from direct.directtools.DirectUtil import *
 from direct.directtools.DirectUtil import *
 from seGeometry import *
 from seGeometry import *
@@ -70,7 +70,7 @@ class SelectedNodePaths(DirectObject):
         """ Select the specified node path.  Multiselect as required """
         """ Select the specified node path.  Multiselect as required """
         # Do nothing if nothing selected
         # Do nothing if nothing selected
         if not nodePath:
         if not nodePath:
-            print 'Nothing selected!!'
+            print('Nothing selected!!')
             return None
             return None
 
 
         # Reset selected objects and highlight if multiSelect is false
         # Reset selected objects and highlight if multiSelect is false
@@ -78,7 +78,7 @@ class SelectedNodePaths(DirectObject):
             self.deselectAll()
             self.deselectAll()
 
 
         # Get this pointer
         # Get this pointer
-        id = nodePath.id()
+        id = nodePath.get_key()
         # First see if its already in the selected dictionary
         # First see if its already in the selected dictionary
         dnp = self.getSelectedDict(id)
         dnp = self.getSelectedDict(id)
         # If so, we're done
         # If so, we're done
@@ -96,7 +96,7 @@ class SelectedNodePaths(DirectObject):
                 # Show its bounding box
                 # Show its bounding box
                 dnp.highlight()
                 dnp.highlight()
             # Add it to the selected dictionary
             # Add it to the selected dictionary
-            self.selectedDict[dnp.id()] = dnp
+            self.selectedDict[dnp.get_key()] = dnp
         # And update last
         # And update last
         __builtins__["last"] = self.last = dnp
         __builtins__["last"] = self.last = dnp
         return dnp
         return dnp
@@ -104,7 +104,7 @@ class SelectedNodePaths(DirectObject):
     def deselect(self, nodePath):
     def deselect(self, nodePath):
         """ Deselect the specified node path """
         """ Deselect the specified node path """
         # Get this pointer
         # Get this pointer
-        id = nodePath.id()
+        id = nodePath.get_key()
         # See if it is in the selected dictionary
         # See if it is in the selected dictionary
         dnp = self.getSelectedDict(id)
         dnp = self.getSelectedDict(id)
         if dnp:
         if dnp:
@@ -124,7 +124,7 @@ class SelectedNodePaths(DirectObject):
         Return a list of all selected node paths.  No verification of
         Return a list of all selected node paths.  No verification of
         connectivity is performed on the members of the list
         connectivity is performed on the members of the list
         """
         """
-        return self.selectedDict.values()[:]
+        return list(self.selectedDict.values())
 
 
     def __getitem__(self,index):
     def __getitem__(self,index):
         return self.getSelectedAsList()[index]
         return self.getSelectedAsList()[index]
@@ -141,7 +141,7 @@ class SelectedNodePaths(DirectObject):
             return None
             return None
 
 
     def getDeselectedAsList(self):
     def getDeselectedAsList(self):
-        return self.deselectedDict.values()[:]
+        return list(self.deselectedDict.values())
 
 
     def getDeselectedDict(self, id):
     def getDeselectedDict(self, id):
         """
         """
@@ -204,15 +204,24 @@ class SelectedNodePaths(DirectObject):
         # Remove all selected nodePaths from the Scene Graph
         # Remove all selected nodePaths from the Scene Graph
         self.forEachSelectedNodePathDo(NodePath.remove)
         self.forEachSelectedNodePathDo(NodePath.remove)
 
 
+    def toggleVis(self, nodePath):
+        if nodePath.is_hidden():
+            nodePath.show()
+        else:
+            nodePath.hide()
+
     def toggleVisSelected(self):
     def toggleVisSelected(self):
         selected = self.last
         selected = self.last
         # Toggle visibility of selected node paths
         # Toggle visibility of selected node paths
         if selected:
         if selected:
-            selected.toggleVis()
+            if selected.is_hidden():
+                selected.show()
+            else:
+                selected.hide()
 
 
     def toggleVisAll(self):
     def toggleVisAll(self):
         # Toggle viz for all selected node paths
         # Toggle viz for all selected node paths
-        self.forEachSelectedNodePathDo(NodePath.toggleVis)
+        self.forEachSelectedNodePathDo(self.toggleVis)
 
 
     def isolateSelected(self):
     def isolateSelected(self):
         selected = self.last
         selected = self.last
@@ -221,7 +230,7 @@ class SelectedNodePaths(DirectObject):
 
 
     def getDirectNodePath(self, nodePath):
     def getDirectNodePath(self, nodePath):
         # Get this pointer
         # Get this pointer
-        id = nodePath.id()
+        id = nodePath.get_key()
         # First check selected dict
         # First check selected dict
         dnp = self.getSelectedDict(id)
         dnp = self.getSelectedDict(id)
         if dnp:
         if dnp:
@@ -376,7 +385,7 @@ class DirectBoundingBox:
         return '%.2f %.2f %.2f' % (vec[0], vec[1], vec[2])
         return '%.2f %.2f %.2f' % (vec[0], vec[1], vec[2])
 
 
     def __repr__(self):
     def __repr__(self):
-        return (`self.__class__` +
+        return (repr(self.__class__) +
                 '\nNodePath:\t%s\n' % self.nodePath.getName() +
                 '\nNodePath:\t%s\n' % self.nodePath.getName() +
                 'Min:\t\t%s\n' % self.vecAsString(self.min) +
                 'Min:\t\t%s\n' % self.vecAsString(self.min) +
                 'Max:\t\t%s\n' % self.vecAsString(self.max) +
                 'Max:\t\t%s\n' % self.vecAsString(self.max) +

+ 9 - 6
contrib/src/sceneeditor/seSession.py

@@ -388,7 +388,7 @@ class SeSession(DirectObject):  ### Customized DirectSession
             messenger.send('DIRECT_preSelectNodePath', [dnp])
             messenger.send('DIRECT_preSelectNodePath', [dnp])
             if fResetAncestry:
             if fResetAncestry:
                 # Update ancestry
                 # Update ancestry
-                self.ancestry = dnp.getAncestors()
+                self.ancestry = list(dnp.getAncestors())
                 self.ancestry.reverse()
                 self.ancestry.reverse()
                 self.ancestryIndex = 0
                 self.ancestryIndex = 0
             # Update the selectedNPReadout
             # Update the selectedNPReadout
@@ -479,8 +479,8 @@ class SeSession(DirectObject):  ### Customized DirectSession
 
 
 
 
     def isNotCycle(self, nodePath, parent):
     def isNotCycle(self, nodePath, parent):
-        if nodePath.id() == parent.id():
-            print 'DIRECT.reparent: Invalid parent'
+        if nodePath.get_key() == parent.get_key():
+            print('DIRECT.reparent: Invalid parent')
             return 0
             return 0
         elif parent.hasParent():
         elif parent.hasParent():
             return self.isNotCycle(nodePath, parent.getParent())
             return self.isNotCycle(nodePath, parent.getParent())
@@ -520,7 +520,10 @@ class SeSession(DirectObject):  ### Customized DirectSession
             nodePath = self.selected.last
             nodePath = self.selected.last
         if nodePath:
         if nodePath:
             # Now toggle node path's visibility state
             # Now toggle node path's visibility state
-            nodePath.toggleVis()
+            if nodePath.is_hidden():
+                nodePath.show()
+            else:
+                nodePath.hide()
 
 
     def removeNodePath(self, nodePath = 'None Given'):
     def removeNodePath(self, nodePath = 'None Given'):
         if nodePath == 'None Given':
         if nodePath == 'None Given':
@@ -732,8 +735,8 @@ class SeSession(DirectObject):  ### Customized DirectSession
         hprB = base.camera.getHpr()
         hprB = base.camera.getHpr()
         posE = Point3((radius*-1.41)+center.getX(), (radius*-1.41)+center.getY(), (radius*1.41)+center.getZ())
         posE = Point3((radius*-1.41)+center.getX(), (radius*-1.41)+center.getY(), (radius*1.41)+center.getZ())
         hprE = Point3(-45, -38, 0)
         hprE = Point3(-45, -38, 0)
-        print posB, hprB
-        print posE, hprE
+        print(posB, hprB)
+        print(posE, hprE)
         posInterval1 = base.camera.posInterval(time, posE, bakeInStart = 1)
         posInterval1 = base.camera.posInterval(time, posE, bakeInStart = 1)
         posInterval2 = base.camera.posInterval(time, posB, bakeInStart = 1)
         posInterval2 = base.camera.posInterval(time, posB, bakeInStart = 1)
 
 

+ 15 - 9
contrib/src/sceneeditor/seTree.py

@@ -12,15 +12,21 @@
 #
 #
 #################################################################
 #################################################################
 
 
-import os, sys, string, Pmw, Tkinter
+import os, sys, string, Pmw
 from direct.showbase.DirectObject import DirectObject
 from direct.showbase.DirectObject import DirectObject
-from Tkinter import IntVar, Menu, PhotoImage, Label, Frame, Entry
-from pandac.PandaModules import *
+from panda3d.core import *
+
+if sys.version_info >= (3, 0):
+    import tkinter
+    from tkinter import IntVar, Menu, PhotoImage, Label, Frame, Entry
+else:
+    import Tkinter as tkinter
+    from Tkinter import IntVar, Menu, PhotoImage, Label, Frame, Entry
 
 
 # Initialize icon directory
 # Initialize icon directory
 ICONDIR = getModelPath().findFile(Filename('icons')).toOsSpecific()
 ICONDIR = getModelPath().findFile(Filename('icons')).toOsSpecific()
 if not os.path.isdir(ICONDIR):
 if not os.path.isdir(ICONDIR):
-    raise RuntimeError, "can't find DIRECT icon directory (%s)" % `ICONDIR`
+    raise RuntimeError("can't find DIRECT icon directory (%r)" % ICONDIR)
 
 
 class TreeNode:
 class TreeNode:
 
 
@@ -187,9 +193,9 @@ class TreeNode:
             oldcursor = self.canvas['cursor']
             oldcursor = self.canvas['cursor']
             self.canvas['cursor'] = "watch"
             self.canvas['cursor'] = "watch"
             self.canvas.update()
             self.canvas.update()
-            self.canvas.delete(Tkinter.ALL)     # XXX could be more subtle
+            self.canvas.delete(tkinter.ALL)     # XXX could be more subtle
             self.draw(7, 2)
             self.draw(7, 2)
-            x0, y0, x1, y1 = self.canvas.bbox(Tkinter.ALL)
+            x0, y0, x1, y1 = self.canvas.bbox(tkinter.ALL)
             self.canvas.configure(scrollregion=(0, 0, x1, y1))
             self.canvas.configure(scrollregion=(0, 0, x1, y1))
             self.canvas['cursor'] = oldcursor
             self.canvas['cursor'] = oldcursor
 
 
@@ -208,7 +214,7 @@ class TreeNode:
         self.kidKeys = []
         self.kidKeys = []
         for item in sublist:
         for item in sublist:
             key = item.GetKey()
             key = item.GetKey()
-            if self.children.has_key(key):
+            if key in self.children:
                 child = self.children[key]
                 child = self.children[key]
             else:
             else:
                 child = TreeNode(self.canvas, self, item, self.menuList)
                 child = TreeNode(self.canvas, self, item, self.menuList)
@@ -309,7 +315,7 @@ class TreeNode:
     def edit(self, event=None):
     def edit(self, event=None):
         self.entry = Entry(self.label, bd=0, highlightthickness=1, width=0)
         self.entry = Entry(self.label, bd=0, highlightthickness=1, width=0)
         self.entry.insert(0, self.label['text'])
         self.entry.insert(0, self.label['text'])
-        self.entry.selection_range(0, Tkinter.END)
+        self.entry.selection_range(0, tkinter.END)
         self.entry.pack(ipadx=5)
         self.entry.pack(ipadx=5)
         self.entry.focus_set()
         self.entry.focus_set()
         self.entry.bind("<Return>", self.edit_finish)
         self.entry.bind("<Return>", self.edit_finish)
@@ -344,7 +350,7 @@ class TreeNode:
         for item in sublist:
         for item in sublist:
             key = item.GetKey()
             key = item.GetKey()
             # Use existing child or create new TreeNode if none exists
             # Use existing child or create new TreeNode if none exists
-            if self.children.has_key(key):
+            if key in self.children:
                 child = self.children[key]
                 child = self.children[key]
             else:
             else:
                 child = TreeNode(self.canvas, self, item, self.menuList)
                 child = TreeNode(self.canvas, self, item, self.menuList)

+ 3 - 0
direct/src/dcparse/dcparse.cxx

@@ -19,6 +19,9 @@
 #include "indent.h"
 #include "indent.h"
 #include "panda_getopt.h"
 #include "panda_getopt.h"
 
 
+using std::cerr;
+using std::cout;
+
 void
 void
 usage() {
 usage() {
   cerr <<
   cerr <<

+ 4 - 2
direct/src/dcparser/dcArrayParameter.cxx

@@ -16,6 +16,8 @@
 #include "dcClassParameter.h"
 #include "dcClassParameter.h"
 #include "hashGenerator.h"
 #include "hashGenerator.h"
 
 
+using std::string;
+
 /**
 /**
  *
  *
  */
  */
@@ -201,13 +203,13 @@ validate_num_nested_fields(int num_nested_fields) const {
  * identifier.
  * identifier.
  */
  */
 void DCArrayParameter::
 void DCArrayParameter::
-output_instance(ostream &out, bool brief, const string &prename,
+output_instance(std::ostream &out, bool brief, const string &prename,
                 const string &name, const string &postname) const {
                 const string &name, const string &postname) const {
   if (get_typedef() != nullptr) {
   if (get_typedef() != nullptr) {
     output_typedef_name(out, brief, prename, name, postname);
     output_typedef_name(out, brief, prename, name, postname);
 
 
   } else {
   } else {
-    ostringstream strm;
+    std::ostringstream strm;
 
 
     strm << "[";
     strm << "[";
     _array_size_range.output(strm);
     _array_size_range.output(strm);

+ 5 - 3
direct/src/dcparser/dcAtomicField.cxx

@@ -19,6 +19,8 @@
 
 
 #include <math.h>
 #include <math.h>
 
 
+using std::string;
+
 /**
 /**
  *
  *
  */
  */
@@ -151,7 +153,7 @@ get_element_divisor(int n) const {
  *
  *
  */
  */
 void DCAtomicField::
 void DCAtomicField::
-output(ostream &out, bool brief) const {
+output(std::ostream &out, bool brief) const {
   out << _name << "(";
   out << _name << "(";
 
 
   if (!_elements.empty()) {
   if (!_elements.empty()) {
@@ -174,7 +176,7 @@ output(ostream &out, bool brief) const {
  * stream.
  * stream.
  */
  */
 void DCAtomicField::
 void DCAtomicField::
-write(ostream &out, bool brief, int indent_level) const {
+write(std::ostream &out, bool brief, int indent_level) const {
   indent(out, indent_level);
   indent(out, indent_level);
   output(out, brief);
   output(out, brief);
   out << ";";
   out << ";";
@@ -270,7 +272,7 @@ do_check_match_atomic_field(const DCAtomicField *other) const {
  *
  *
  */
  */
 void DCAtomicField::
 void DCAtomicField::
-output_element(ostream &out, bool brief, DCParameter *element) const {
+output_element(std::ostream &out, bool brief, DCParameter *element) const {
   element->output(out, brief);
   element->output(out, brief);
 
 
   if (!brief && element->has_default_value()) {
   if (!brief && element->has_default_value()) {

+ 7 - 3
direct/src/dcparser/dcClass.cxx

@@ -25,6 +25,10 @@
 #include "py_panda.h"
 #include "py_panda.h"
 #endif
 #endif
 
 
+using std::ostream;
+using std::ostringstream;
+using std::string;
+
 #ifdef WITHIN_PANDA
 #ifdef WITHIN_PANDA
 #include "pStatTimer.h"
 #include "pStatTimer.h"
 
 
@@ -177,9 +181,9 @@ DCField *DCClass::
 get_field(int n) const {
 get_field(int n) const {
   #ifndef NDEBUG //[
   #ifndef NDEBUG //[
   if (n < 0 || n >= (int)_fields.size()) {
   if (n < 0 || n >= (int)_fields.size()) {
-    cerr << *this << " "
+    std::cerr << *this << " "
          << "n:" << n << " _fields.size():"
          << "n:" << n << " _fields.size():"
-         << (int)_fields.size() << endl;
+         << (int)_fields.size() << std::endl;
     // __asm { int 3 }
     // __asm { int 3 }
   }
   }
   #endif //]
   #endif //]
@@ -749,7 +753,7 @@ pack_required_field(DCPacker &packer, PyObject *distobj,
   if (result == nullptr) {
   if (result == nullptr) {
     // We don't set this as an exception, since presumably the Python method
     // We don't set this as an exception, since presumably the Python method
     // itself has already triggered a Python exception.
     // itself has already triggered a Python exception.
-    cerr << "Error when calling " << getter_name << "\n";
+    std::cerr << "Error when calling " << getter_name << "\n";
     return false;
     return false;
   }
   }
 
 

+ 2 - 2
direct/src/dcparser/dcClassParameter.cxx

@@ -128,8 +128,8 @@ get_nested_field(int n) const {
  * identifier.
  * identifier.
  */
  */
 void DCClassParameter::
 void DCClassParameter::
-output_instance(ostream &out, bool brief, const string &prename,
-                const string &name, const string &postname) const {
+output_instance(std::ostream &out, bool brief, const std::string &prename,
+                const std::string &name, const std::string &postname) const {
   if (get_typedef() != nullptr) {
   if (get_typedef() != nullptr) {
     output_typedef_name(out, brief, prename, name, postname);
     output_typedef_name(out, brief, prename, name, postname);
 
 

+ 2 - 2
direct/src/dcparser/dcDeclaration.cxx

@@ -57,7 +57,7 @@ as_switch() const {
  * Write a string representation of this instance to <out>.
  * Write a string representation of this instance to <out>.
  */
  */
 void DCDeclaration::
 void DCDeclaration::
-output(ostream &out) const {
+output(std::ostream &out) const {
   output(out, true);
   output(out, true);
 }
 }
 
 
@@ -65,6 +65,6 @@ output(ostream &out) const {
  * Write a string representation of this instance to <out>.
  * Write a string representation of this instance to <out>.
  */
  */
 void DCDeclaration::
 void DCDeclaration::
-write(ostream &out, int indent_level) const {
+write(std::ostream &out, int indent_level) const {
   write(out, false, indent_level);
   write(out, false, indent_level);
 }
 }

+ 6 - 4
direct/src/dcparser/dcField.cxx

@@ -26,6 +26,8 @@
 #include "pStatTimer.h"
 #include "pStatTimer.h"
 #endif
 #endif
 
 
+using std::string;
+
 /**
 /**
  *
  *
  */
  */
@@ -232,7 +234,7 @@ pack_args(DCPacker &packer, PyObject *sequence) const {
   }
   }
 
 
   if (!Notify::ptr()->has_assert_failed()) {
   if (!Notify::ptr()->has_assert_failed()) {
-    ostringstream strm;
+    std::ostringstream strm;
     PyObject *exc_type = PyExc_Exception;
     PyObject *exc_type = PyExc_Exception;
 
 
     if (as_parameter() != nullptr) {
     if (as_parameter() != nullptr) {
@@ -303,7 +305,7 @@ unpack_args(DCPacker &packer) const {
   }
   }
 
 
   if (!Notify::ptr()->has_assert_failed()) {
   if (!Notify::ptr()->has_assert_failed()) {
-    ostringstream strm;
+    std::ostringstream strm;
     PyObject *exc_type = PyExc_Exception;
     PyObject *exc_type = PyExc_Exception;
 
 
     if (packer.had_pack_error()) {
     if (packer.had_pack_error()) {
@@ -315,7 +317,7 @@ unpack_args(DCPacker &packer) const {
       dg.dump_hex(strm);
       dg.dump_hex(strm);
       size_t error_byte = packer.get_num_unpacked_bytes() - start_byte;
       size_t error_byte = packer.get_num_unpacked_bytes() - start_byte;
       strm << "Error detected on byte " << error_byte
       strm << "Error detected on byte " << error_byte
-           << " (" << hex << error_byte << dec << " hex)";
+           << " (" << std::hex << error_byte << std::dec << " hex)";
 
 
       exc_type = PyExc_RuntimeError;
       exc_type = PyExc_RuntimeError;
     } else {
     } else {
@@ -562,7 +564,7 @@ refresh_default_value() {
   packer.begin_pack(this);
   packer.begin_pack(this);
   packer.pack_default_value();
   packer.pack_default_value();
   if (!packer.end_pack()) {
   if (!packer.end_pack()) {
-    cerr << "Error while packing default value for " << get_name() << "\n";
+    std::cerr << "Error while packing default value for " << get_name() << "\n";
   } else {
   } else {
     _default_value.assign(packer.get_data(), packer.get_length());
     _default_value.assign(packer.get_data(), packer.get_length());
   }
   }

+ 6 - 3
direct/src/dcparser/dcFile.cxx

@@ -28,6 +28,9 @@
 #include "configVariableList.h"
 #include "configVariableList.h"
 #endif
 #endif
 
 
+using std::cerr;
+using std::string;
+
 
 
 /**
 /**
  *
  *
@@ -122,7 +125,7 @@ read(Filename filename) {
 #ifdef WITHIN_PANDA
 #ifdef WITHIN_PANDA
   filename.set_text();
   filename.set_text();
   VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr();
   VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr();
-  istream *in = vfs->open_read_file(filename, true);
+  std::istream *in = vfs->open_read_file(filename, true);
   if (in == nullptr) {
   if (in == nullptr) {
     cerr << "Cannot open " << filename << " for reading.\n";
     cerr << "Cannot open " << filename << " for reading.\n";
     return false;
     return false;
@@ -163,7 +166,7 @@ read(Filename filename) {
  * (in which case the file might have been partially read).
  * (in which case the file might have been partially read).
  */
  */
 bool DCFile::
 bool DCFile::
-read(istream &in, const string &filename) {
+read(std::istream &in, const string &filename) {
   cerr << "DCFile::read of " << filename << "\n";
   cerr << "DCFile::read of " << filename << "\n";
   dc_init_parser(in, filename, *this);
   dc_init_parser(in, filename, *this);
   dcyyparse();
   dcyyparse();
@@ -203,7 +206,7 @@ write(Filename filename, bool brief) const {
  * Returns true if the description is successfully written, false otherwise.
  * Returns true if the description is successfully written, false otherwise.
  */
  */
 bool DCFile::
 bool DCFile::
-write(ostream &out, bool brief) const {
+write(std::ostream &out, bool brief) const {
   if (!_imports.empty()) {
   if (!_imports.empty()) {
     Imports::const_iterator ii;
     Imports::const_iterator ii;
     for (ii = _imports.begin(); ii != _imports.end(); ++ii) {
     for (ii = _imports.begin(); ii != _imports.end(); ++ii) {

+ 4 - 4
direct/src/dcparser/dcKeyword.cxx

@@ -19,7 +19,7 @@
  *
  *
  */
  */
 DCKeyword::
 DCKeyword::
-DCKeyword(const string &name, int historical_flag) :
+DCKeyword(const std::string &name, int historical_flag) :
   _name(name),
   _name(name),
   _historical_flag(historical_flag)
   _historical_flag(historical_flag)
 {
 {
@@ -35,7 +35,7 @@ DCKeyword::
 /**
 /**
  * Returns the name of this keyword.
  * Returns the name of this keyword.
  */
  */
-const string &DCKeyword::
+const std::string &DCKeyword::
 get_name() const {
 get_name() const {
   return _name;
   return _name;
 }
 }
@@ -64,7 +64,7 @@ clear_historical_flag() {
  * Write a string representation of this instance to <out>.
  * Write a string representation of this instance to <out>.
  */
  */
 void DCKeyword::
 void DCKeyword::
-output(ostream &out, bool brief) const {
+output(std::ostream &out, bool brief) const {
   out << "keyword " << _name;
   out << "keyword " << _name;
 }
 }
 
 
@@ -72,7 +72,7 @@ output(ostream &out, bool brief) const {
  *
  *
  */
  */
 void DCKeyword::
 void DCKeyword::
-write(ostream &out, bool, int indent_level) const {
+write(std::ostream &out, bool, int indent_level) const {
   indent(out, indent_level)
   indent(out, indent_level)
     << "keyword " << _name << ";\n";
     << "keyword " << _name << ";\n";
 }
 }

+ 3 - 3
direct/src/dcparser/dcKeywordList.cxx

@@ -57,7 +57,7 @@ DCKeywordList::
  * Returns true if this list includes the indicated keyword, false otherwise.
  * Returns true if this list includes the indicated keyword, false otherwise.
  */
  */
 bool DCKeywordList::
 bool DCKeywordList::
-has_keyword(const string &name) const {
+has_keyword(const std::string &name) const {
   return (_keywords_by_name.find(name) != _keywords_by_name.end());
   return (_keywords_by_name.find(name) != _keywords_by_name.end());
 }
 }
 
 
@@ -92,7 +92,7 @@ get_keyword(int n) const {
  * is no keyword in the list with that name.
  * is no keyword in the list with that name.
  */
  */
 const DCKeyword *DCKeywordList::
 const DCKeyword *DCKeywordList::
-get_keyword_by_name(const string &name) const {
+get_keyword_by_name(const std::string &name) const {
   KeywordsByName::const_iterator ni;
   KeywordsByName::const_iterator ni;
   ni = _keywords_by_name.find(name);
   ni = _keywords_by_name.find(name);
   if (ni != _keywords_by_name.end()) {
   if (ni != _keywords_by_name.end()) {
@@ -148,7 +148,7 @@ clear_keywords() {
  *
  *
  */
  */
 void DCKeywordList::
 void DCKeywordList::
-output_keywords(ostream &out) const {
+output_keywords(std::ostream &out) const {
   Keywords::const_iterator ki;
   Keywords::const_iterator ki;
   for (ki = _keywords.begin(); ki != _keywords.end(); ++ki) {
   for (ki = _keywords.begin(); ki != _keywords.end(); ++ki) {
     out << " " << (*ki)->get_name();
     out << " " << (*ki)->get_name();

+ 17 - 13
direct/src/dcparser/dcLexer.cxx.prebuilt

@@ -610,11 +610,11 @@ static int error_count = 0;
 static int warning_count = 0;
 static int warning_count = 0;
 
 
 // This is the pointer to the current input stream.
 // This is the pointer to the current input stream.
-static istream *input_p = NULL;
+static std::istream *input_p = nullptr;
 
 
 // This is the name of the dc file we're parsing.  We keep it so we
 // This is the name of the dc file we're parsing.  We keep it so we
 // can print it out for error messages.
 // can print it out for error messages.
-static string dc_filename;
+static std::string dc_filename;
 
 
 // This is the initial token state returned by the lexer.  It allows
 // This is the initial token state returned by the lexer.  It allows
 // the yacc grammar to start from initial points.
 // the yacc grammar to start from initial points.
@@ -626,7 +626,7 @@ static int initial_token;
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 
 
 void
 void
-dc_init_lexer(istream &in, const string &filename) {
+dc_init_lexer(std::istream &in, const std::string &filename) {
   input_p = &in;
   input_p = &in;
   dc_filename = filename;
   dc_filename = filename;
   line_number = 0;
   line_number = 0;
@@ -671,7 +671,9 @@ dcyywrap(void) {
 }
 }
 
 
 void
 void
-dcyyerror(const string &msg) {
+dcyyerror(const std::string &msg) {
+  using std::cerr;
+
   cerr << "\nError";
   cerr << "\nError";
   if (!dc_filename.empty()) {
   if (!dc_filename.empty()) {
     cerr << " in " << dc_filename;
     cerr << " in " << dc_filename;
@@ -686,7 +688,9 @@ dcyyerror(const string &msg) {
 }
 }
 
 
 void
 void
-dcyywarning(const string &msg) {
+dcyywarning(const std::string &msg) {
+  using std::cerr;
+
   cerr << "\nWarning";
   cerr << "\nWarning";
   if (!dc_filename.empty()) {
   if (!dc_filename.empty()) {
     cerr << " in " << dc_filename;
     cerr << " in " << dc_filename;
@@ -740,7 +744,7 @@ input_chars(char *buffer, int &result, int max_size) {
 // Define this macro carefully, since different flex versions call it
 // Define this macro carefully, since different flex versions call it
 // with a different type for result.
 // with a different type for result.
 #define YY_INPUT(buffer, result, max_size) { \
 #define YY_INPUT(buffer, result, max_size) { \
-  int int_result; \
+  int int_result = 0; \
   input_chars((buffer), int_result, (max_size)); \
   input_chars((buffer), int_result, (max_size)); \
   (result) = int_result; \
   (result) = int_result; \
 }
 }
@@ -762,9 +766,9 @@ read_char(int &line, int &col) {
 
 
 // scan_quoted_string reads a string delimited by quotation marks and
 // scan_quoted_string reads a string delimited by quotation marks and
 // returns it.
 // returns it.
-static string
+static std::string
 scan_quoted_string(char quote_mark) {
 scan_quoted_string(char quote_mark) {
-  string result;
+  std::string result;
 
 
   // We don't touch the current line number and column number during
   // We don't touch the current line number and column number during
   // scanning, so that if we detect an error while scanning the string
   // scanning, so that if we detect an error while scanning the string
@@ -884,9 +888,9 @@ scan_quoted_string(char quote_mark) {
 
 
 // scan_hex_string reads a string of hexadecimal digits delimited by
 // scan_hex_string reads a string of hexadecimal digits delimited by
 // angle brackets and returns the representative string.
 // angle brackets and returns the representative string.
-static string
+static std::string
 scan_hex_string() {
 scan_hex_string() {
-  string result;
+  std::string result;
 
 
   // We don't touch the current line number and column number during
   // We don't touch the current line number and column number during
   // scanning, so that if we detect an error while scanning the string
   // scanning, so that if we detect an error while scanning the string
@@ -916,7 +920,7 @@ scan_hex_string() {
       line_number = line;
       line_number = line;
       col_number = col;
       col_number = col;
       dcyyerror("Invalid hex digit.");
       dcyyerror("Invalid hex digit.");
-      return string();
+      return std::string();
     }
     }
 
 
     odd = !odd;
     odd = !odd;
@@ -930,10 +934,10 @@ scan_hex_string() {
 
 
   if (c == EOF) {
   if (c == EOF) {
     dcyyerror("This hex string is unterminated.");
     dcyyerror("This hex string is unterminated.");
-    return string();
+    return std::string();
   } else if (odd) {
   } else if (odd) {
     dcyyerror("Odd number of hex digits.");
     dcyyerror("Odd number of hex digits.");
-    return string();
+    return std::string();
   }
   }
 
 
   line_number = line;
   line_number = line;

+ 17 - 13
direct/src/dcparser/dcLexer.lxx

@@ -35,11 +35,11 @@ static int error_count = 0;
 static int warning_count = 0;
 static int warning_count = 0;
 
 
 // This is the pointer to the current input stream.
 // This is the pointer to the current input stream.
-static istream *input_p = nullptr;
+static std::istream *input_p = nullptr;
 
 
 // This is the name of the dc file we're parsing.  We keep it so we
 // This is the name of the dc file we're parsing.  We keep it so we
 // can print it out for error messages.
 // can print it out for error messages.
-static string dc_filename;
+static std::string dc_filename;
 
 
 // This is the initial token state returned by the lexer.  It allows
 // This is the initial token state returned by the lexer.  It allows
 // the yacc grammar to start from initial points.
 // the yacc grammar to start from initial points.
@@ -51,7 +51,7 @@ static int initial_token;
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 
 
 void
 void
-dc_init_lexer(istream &in, const string &filename) {
+dc_init_lexer(std::istream &in, const std::string &filename) {
   input_p = &in;
   input_p = &in;
   dc_filename = filename;
   dc_filename = filename;
   line_number = 0;
   line_number = 0;
@@ -96,7 +96,9 @@ dcyywrap(void) {
 }
 }
 
 
 void
 void
-dcyyerror(const string &msg) {
+dcyyerror(const std::string &msg) {
+  using std::cerr;
+
   cerr << "\nError";
   cerr << "\nError";
   if (!dc_filename.empty()) {
   if (!dc_filename.empty()) {
     cerr << " in " << dc_filename;
     cerr << " in " << dc_filename;
@@ -111,7 +113,9 @@ dcyyerror(const string &msg) {
 }
 }
 
 
 void
 void
-dcyywarning(const string &msg) {
+dcyywarning(const std::string &msg) {
+  using std::cerr;
+
   cerr << "\nWarning";
   cerr << "\nWarning";
   if (!dc_filename.empty()) {
   if (!dc_filename.empty()) {
     cerr << " in " << dc_filename;
     cerr << " in " << dc_filename;
@@ -165,7 +169,7 @@ input_chars(char *buffer, int &result, int max_size) {
 // Define this macro carefully, since different flex versions call it
 // Define this macro carefully, since different flex versions call it
 // with a different type for result.
 // with a different type for result.
 #define YY_INPUT(buffer, result, max_size) { \
 #define YY_INPUT(buffer, result, max_size) { \
-  int int_result; \
+  int int_result = 0; \
   input_chars((buffer), int_result, (max_size)); \
   input_chars((buffer), int_result, (max_size)); \
   (result) = int_result; \
   (result) = int_result; \
 }
 }
@@ -187,9 +191,9 @@ read_char(int &line, int &col) {
 
 
 // scan_quoted_string reads a string delimited by quotation marks and
 // scan_quoted_string reads a string delimited by quotation marks and
 // returns it.
 // returns it.
-static string
+static std::string
 scan_quoted_string(char quote_mark) {
 scan_quoted_string(char quote_mark) {
-  string result;
+  std::string result;
 
 
   // We don't touch the current line number and column number during
   // We don't touch the current line number and column number during
   // scanning, so that if we detect an error while scanning the string
   // scanning, so that if we detect an error while scanning the string
@@ -309,9 +313,9 @@ scan_quoted_string(char quote_mark) {
 
 
 // scan_hex_string reads a string of hexadecimal digits delimited by
 // scan_hex_string reads a string of hexadecimal digits delimited by
 // angle brackets and returns the representative string.
 // angle brackets and returns the representative string.
-static string
+static std::string
 scan_hex_string() {
 scan_hex_string() {
-  string result;
+  std::string result;
 
 
   // We don't touch the current line number and column number during
   // We don't touch the current line number and column number during
   // scanning, so that if we detect an error while scanning the string
   // scanning, so that if we detect an error while scanning the string
@@ -341,7 +345,7 @@ scan_hex_string() {
       line_number = line;
       line_number = line;
       col_number = col;
       col_number = col;
       dcyyerror("Invalid hex digit.");
       dcyyerror("Invalid hex digit.");
-      return string();
+      return std::string();
     }
     }
 
 
     odd = !odd;
     odd = !odd;
@@ -355,10 +359,10 @@ scan_hex_string() {
 
 
   if (c == EOF) {
   if (c == EOF) {
     dcyyerror("This hex string is unterminated.");
     dcyyerror("This hex string is unterminated.");
-    return string();
+    return std::string();
   } else if (odd) {
   } else if (odd) {
     dcyyerror("Odd number of hex digits.");
     dcyyerror("Odd number of hex digits.");
-    return string();
+    return std::string();
   }
   }
 
 
   line_number = line;
   line_number = line;

+ 3 - 3
direct/src/dcparser/dcMolecularField.cxx

@@ -22,7 +22,7 @@
  *
  *
  */
  */
 DCMolecularField::
 DCMolecularField::
-DCMolecularField(const string &name, DCClass *dclass) : DCField(name, dclass) {
+DCMolecularField(const std::string &name, DCClass *dclass) : DCField(name, dclass) {
   _got_keywords = false;
   _got_keywords = false;
 }
 }
 
 
@@ -109,7 +109,7 @@ add_atomic(DCAtomicField *atomic) {
  *
  *
  */
  */
 void DCMolecularField::
 void DCMolecularField::
-output(ostream &out, bool brief) const {
+output(std::ostream &out, bool brief) const {
   out << _name;
   out << _name;
 
 
   if (!_fields.empty()) {
   if (!_fields.empty()) {
@@ -130,7 +130,7 @@ output(ostream &out, bool brief) const {
  * stream.
  * stream.
  */
  */
 void DCMolecularField::
 void DCMolecularField::
-write(ostream &out, bool brief, int indent_level) const {
+write(std::ostream &out, bool brief, int indent_level) const {
   indent(out, indent_level);
   indent(out, indent_level);
   output(out, brief);
   output(out, brief);
   if (!brief) {
   if (!brief) {

+ 8 - 2
direct/src/dcparser/dcPacker.cxx

@@ -23,6 +23,12 @@
 #include "py_panda.h"
 #include "py_panda.h"
 #endif
 #endif
 
 
+using std::istream;
+using std::istringstream;
+using std::ostream;
+using std::ostringstream;
+using std::string;
+
 DCPacker::StackElement *DCPacker::StackElement::_deleted_chain = nullptr;
 DCPacker::StackElement *DCPacker::StackElement::_deleted_chain = nullptr;
 int DCPacker::StackElement::_num_ever_allocated = 0;
 int DCPacker::StackElement::_num_ever_allocated = 0;
 
 
@@ -786,7 +792,7 @@ pack_object(PyObject *object) {
           pack_object(element);
           pack_object(element);
           Py_DECREF(element);
           Py_DECREF(element);
         } else {
         } else {
-          cerr << "Unable to extract item " << i << " from sequence.\n";
+          std::cerr << "Unable to extract item " << i << " from sequence.\n";
         }
         }
       }
       }
       pop();
       pop();
@@ -903,7 +909,7 @@ unpack_object() {
           // constructor, create the class object instead of just a tuple.
           // constructor, create the class object instead of just a tuple.
           object = unpack_class_object(dclass);
           object = unpack_class_object(dclass);
           if (object == nullptr) {
           if (object == nullptr) {
-            cerr << "Unable to construct object of class "
+            std::cerr << "Unable to construct object of class "
                  << dclass->get_name() << "\n";
                  << dclass->get_name() << "\n";
           } else {
           } else {
             break;
             break;

+ 2 - 0
direct/src/dcparser/dcPackerCatalog.cxx

@@ -16,6 +16,8 @@
 #include "dcPacker.h"
 #include "dcPacker.h"
 #include "dcSwitchParameter.h"
 #include "dcSwitchParameter.h"
 
 
+using std::string;
+
 /**
 /**
  * The catalog is created only by DCPackerInterface::get_catalog().
  * The catalog is created only by DCPackerInterface::get_catalog().
  */
  */

+ 3 - 1
direct/src/dcparser/dcPackerInterface.cxx

@@ -17,6 +17,8 @@
 #include "dcParserDefs.h"
 #include "dcParserDefs.h"
 #include "dcLexerDefs.h"
 #include "dcLexerDefs.h"
 
 
+using std::string;
+
 /**
 /**
  *
  *
  */
  */
@@ -139,7 +141,7 @@ bool DCPackerInterface::
 check_match(const string &description, DCFile *dcfile) const {
 check_match(const string &description, DCFile *dcfile) const {
   bool match = false;
   bool match = false;
 
 
-  istringstream strm(description);
+  std::istringstream strm(description);
   dc_init_parser_parameter_description(strm, "check_match", dcfile);
   dc_init_parser_parameter_description(strm, "check_match", dcfile);
   dcyyparse();
   dcyyparse();
   dc_cleanup_parser();
   dc_cleanup_parser();

+ 3 - 0
direct/src/dcparser/dcParameter.cxx

@@ -17,6 +17,9 @@
 #include "dcindent.h"
 #include "dcindent.h"
 #include "dcTypedef.h"
 #include "dcTypedef.h"
 
 
+using std::ostream;
+using std::string;
+
 /**
 /**
  *
  *
  */
  */

+ 4 - 0
direct/src/dcparser/dcParser.cxx.prebuilt

@@ -101,6 +101,10 @@
 #define YYINITDEPTH 1000
 #define YYINITDEPTH 1000
 #define YYMAXDEPTH 1000
 #define YYMAXDEPTH 1000
 
 
+using std::istream;
+using std::ostringstream;
+using std::string;
+
 DCFile *dc_file = (DCFile *)NULL;
 DCFile *dc_file = (DCFile *)NULL;
 static DCClass *current_class = (DCClass *)NULL;
 static DCClass *current_class = (DCClass *)NULL;
 static DCSwitch *current_switch = (DCSwitch *)NULL;
 static DCSwitch *current_switch = (DCSwitch *)NULL;

+ 4 - 0
direct/src/dcparser/dcParser.yxx

@@ -29,6 +29,10 @@
 #define YYINITDEPTH 1000
 #define YYINITDEPTH 1000
 #define YYMAXDEPTH 1000
 #define YYMAXDEPTH 1000
 
 
+using std::istream;
+using std::ostringstream;
+using std::string;
+
 DCFile *dc_file = nullptr;
 DCFile *dc_file = nullptr;
 static DCClass *current_class = nullptr;
 static DCClass *current_class = nullptr;
 static DCSwitch *current_switch = nullptr;
 static DCSwitch *current_switch = nullptr;

+ 3 - 1
direct/src/dcparser/dcSimpleParameter.cxx

@@ -20,6 +20,8 @@
 #include "hashGenerator.h"
 #include "hashGenerator.h"
 #include <math.h>
 #include <math.h>
 
 
+using std::string;
+
 DCSimpleParameter::NestedFieldMap DCSimpleParameter::_nested_field_map;
 DCSimpleParameter::NestedFieldMap DCSimpleParameter::_nested_field_map;
 DCClassParameter *DCSimpleParameter::_uint32uint8_type = nullptr;
 DCClassParameter *DCSimpleParameter::_uint32uint8_type = nullptr;
 
 
@@ -2171,7 +2173,7 @@ unpack_skip(const char *data, size_t length, size_t &p,
  * identifier.
  * identifier.
  */
  */
 void DCSimpleParameter::
 void DCSimpleParameter::
-output_instance(ostream &out, bool brief, const string &prename,
+output_instance(std::ostream &out, bool brief, const string &prename,
                 const string &name, const string &postname) const {
                 const string &name, const string &postname) const {
   if (get_typedef() != nullptr) {
   if (get_typedef() != nullptr) {
     output_typedef_name(out, brief, prename, name, postname);
     output_typedef_name(out, brief, prename, name, postname);

+ 2 - 2
direct/src/dcparser/dcSubatomicType.cxx

@@ -13,8 +13,8 @@
 
 
 #include "dcSubatomicType.h"
 #include "dcSubatomicType.h"
 
 
-ostream &
-operator << (ostream &out, DCSubatomicType type) {
+std::ostream &
+operator << (std::ostream &out, DCSubatomicType type) {
   switch (type) {
   switch (type) {
   case ST_int8:
   case ST_int8:
     return out << "int8";
     return out << "int8";

+ 3 - 0
direct/src/dcparser/dcSwitch.cxx

@@ -18,6 +18,9 @@
 #include "dcindent.h"
 #include "dcindent.h"
 #include "dcPacker.h"
 #include "dcPacker.h"
 
 
+using std::ostream;
+using std::string;
+
 /**
 /**
  * The key_parameter must be recently allocated via new; it will be deleted
  * The key_parameter must be recently allocated via new; it will be deleted
  * via delete when the switch destructs.
  * via delete when the switch destructs.

+ 4 - 2
direct/src/dcparser/dcSwitchParameter.cxx

@@ -15,6 +15,8 @@
 #include "dcSwitch.h"
 #include "dcSwitch.h"
 #include "hashGenerator.h"
 #include "hashGenerator.h"
 
 
+using std::string;
+
 /**
 /**
  *
  *
  */
  */
@@ -153,7 +155,7 @@ apply_switch(const char *value_data, size_t length) const {
  * identifier.
  * identifier.
  */
  */
 void DCSwitchParameter::
 void DCSwitchParameter::
-output_instance(ostream &out, bool brief, const string &prename,
+output_instance(std::ostream &out, bool brief, const string &prename,
                 const string &name, const string &postname) const {
                 const string &name, const string &postname) const {
   if (get_typedef() != nullptr) {
   if (get_typedef() != nullptr) {
     output_typedef_name(out, brief, prename, name, postname);
     output_typedef_name(out, brief, prename, name, postname);
@@ -168,7 +170,7 @@ output_instance(ostream &out, bool brief, const string &prename,
  * identifier.
  * identifier.
  */
  */
 void DCSwitchParameter::
 void DCSwitchParameter::
-write_instance(ostream &out, bool brief, int indent_level,
+write_instance(std::ostream &out, bool brief, int indent_level,
                const string &prename, const string &name,
                const string &prename, const string &name,
                const string &postname) const {
                const string &postname) const {
   if (get_typedef() != nullptr) {
   if (get_typedef() != nullptr) {

+ 5 - 3
direct/src/dcparser/dcTypedef.cxx

@@ -16,6 +16,8 @@
 #include "dcSimpleParameter.h"
 #include "dcSimpleParameter.h"
 #include "dcindent.h"
 #include "dcindent.h"
 
 
+using std::string;
+
 /**
 /**
  * The DCTypedef object becomes the owner of the supplied parameter pointer
  * The DCTypedef object becomes the owner of the supplied parameter pointer
  * and will delete it upon destruction.
  * and will delete it upon destruction.
@@ -72,7 +74,7 @@ get_name() const {
  */
  */
 string DCTypedef::
 string DCTypedef::
 get_description() const {
 get_description() const {
-  ostringstream strm;
+  std::ostringstream strm;
   _parameter->output(strm, true);
   _parameter->output(strm, true);
   return strm.str();
   return strm.str();
 }
 }
@@ -122,7 +124,7 @@ set_number(int number) {
  * Write a string representation of this instance to <out>.
  * Write a string representation of this instance to <out>.
  */
  */
 void DCTypedef::
 void DCTypedef::
-output(ostream &out, bool brief) const {
+output(std::ostream &out, bool brief) const {
   out << "typedef ";
   out << "typedef ";
   _parameter->output(out, false);
   _parameter->output(out, false);
 }
 }
@@ -131,7 +133,7 @@ output(ostream &out, bool brief) const {
  *
  *
  */
  */
 void DCTypedef::
 void DCTypedef::
-write(ostream &out, bool brief, int indent_level) const {
+write(std::ostream &out, bool brief, int indent_level) const {
   indent(out, indent_level)
   indent(out, indent_level)
     << "typedef ";
     << "typedef ";
 
 

+ 2 - 2
direct/src/dcparser/dcindent.cxx

@@ -18,8 +18,8 @@
 /**
 /**
  *
  *
  */
  */
-ostream &
-indent(ostream &out, int indent_level) {
+std::ostream &
+indent(std::ostream &out, int indent_level) {
   for (int i = 0; i < indent_level; i++) {
   for (int i = 0; i < indent_level; i++) {
     out << ' ';
     out << ' ';
   }
   }

+ 2 - 2
direct/src/dcparser/hashGenerator.cxx

@@ -48,9 +48,9 @@ add_int(int num) {
  * Adds a string to the hash, by breaking it down into a sequence of integers.
  * Adds a string to the hash, by breaking it down into a sequence of integers.
  */
  */
 void HashGenerator::
 void HashGenerator::
-add_string(const string &str) {
+add_string(const std::string &str) {
   add_int(str.length());
   add_int(str.length());
-  string::const_iterator si;
+  std::string::const_iterator si;
   for (si = str.begin(); si != str.end(); ++si) {
   for (si = str.begin(); si != str.end(); ++si) {
     add_int(*si);
     add_int(*si);
   }
   }

+ 5 - 5
direct/src/deadrec/smoothMover.cxx

@@ -95,7 +95,7 @@ mark_position() {
       LVector3 pos_delta = _sample._pos - _smooth_pos;
       LVector3 pos_delta = _sample._pos - _smooth_pos;
       LVecBase3 hpr_delta = _sample._hpr - _smooth_hpr;
       LVecBase3 hpr_delta = _sample._hpr - _smooth_hpr;
       double age = timestamp - _smooth_timestamp;
       double age = timestamp - _smooth_timestamp;
-      age = min(age, _max_position_age);
+      age = std::min(age, _max_position_age);
 
 
       set_smooth_pos(_sample._pos, _sample._hpr, timestamp);
       set_smooth_pos(_sample._pos, _sample._hpr, timestamp);
       if (age != 0.0) {
       if (age != 0.0) {
@@ -272,13 +272,13 @@ compute_smooth_position(double timestamp) {
 
 
   // Find the newest of the points before the indicated time.  Assume that
   // Find the newest of the points before the indicated time.  Assume that
   // this will be no older than _last_point_before.
   // this will be no older than _last_point_before.
-  i = max(0, _last_point_before);
+  i = std::max(0, _last_point_before);
   while (i < num_points && _points[i]._timestamp < timestamp) {
   while (i < num_points && _points[i]._timestamp < timestamp) {
     point_before = i;
     point_before = i;
     timestamp_before = _points[i]._timestamp;
     timestamp_before = _points[i]._timestamp;
     ++i;
     ++i;
   }
   }
-  point_way_before = max(point_before - 1, -1);
+  point_way_before = std::max(point_before - 1, -1);
 
 
   // Now the next point is presumably the oldest point after the indicated
   // Now the next point is presumably the oldest point after the indicated
   // time.
   // time.
@@ -527,7 +527,7 @@ get_latest_position() {
  *
  *
  */
  */
 void SmoothMover::
 void SmoothMover::
-output(ostream &out) const {
+output(std::ostream &out) const {
   out << "SmoothMover, " << _points.size() << " sample points.";
   out << "SmoothMover, " << _points.size() << " sample points.";
 }
 }
 
 
@@ -535,7 +535,7 @@ output(ostream &out) const {
  *
  *
  */
  */
 void SmoothMover::
 void SmoothMover::
-write(ostream &out) const {
+write(std::ostream &out) const {
   out << "SmoothMover, " << _points.size() << " sample points:\n";
   out << "SmoothMover, " << _points.size() << " sample points:\n";
   int num_points = _points.size();
   int num_points = _points.size();
   for (int i = 0; i < num_points; i++) {
   for (int i = 0; i < num_points; i++) {

+ 6 - 1
direct/src/directd/directd.cxx

@@ -34,6 +34,11 @@
   #error Buildsystem error: BUILDING_DIRECT_DIRECTD not defined
   #error Buildsystem error: BUILDING_DIRECT_DIRECTD not defined
 #endif
 #endif
 
 
+using std::cerr;
+using std::cout;
+using std::endl;
+using std::string;
+
 namespace {
 namespace {
   // ...This section is part of the old stuff from the original
   // ...This section is part of the old stuff from the original
   // implementation.  The new stuff that uses job objects doesn't need this
   // implementation.  The new stuff that uses job objects doesn't need this
@@ -148,7 +153,7 @@ DirectD::~DirectD() {
 int
 int
 DirectD::client_ready(const string& server_host, int port,
 DirectD::client_ready(const string& server_host, int port,
     const string& cmd) {
     const string& cmd) {
-  stringstream ss;
+  std::stringstream ss;
   ss<<"!"<<cmd;
   ss<<"!"<<cmd;
   send_one_message(server_host, port, ss.str());
   send_one_message(server_host, port, ss.str());
   return 0;
   return 0;

+ 6 - 0
direct/src/directdServer/directdClient.cxx

@@ -13,6 +13,12 @@
 
 
 #include "directdClient.h"
 #include "directdClient.h"
 
 
+using std::cerr;
+using std::cin;
+using std::cout;
+using std::endl;
+using std::string;
+
 DirectDClient::DirectDClient() {
 DirectDClient::DirectDClient() {
 }
 }
 
 

+ 6 - 2
direct/src/directdServer/directdServer.cxx

@@ -13,6 +13,10 @@
 
 
 #include "directdServer.h"
 #include "directdServer.h"
 
 
+using std::cerr;
+using std::endl;
+using std::string;
+
 DirectDServer::DirectDServer() {
 DirectDServer::DirectDServer() {
 }
 }
 
 
@@ -61,8 +65,8 @@ void
 DirectDServer::read_command(string& cmd) {
 DirectDServer::read_command(string& cmd) {
   try {
   try {
     pifstream f;
     pifstream f;
-    f.open("directdCommand", ios::in | ios::binary);
-    stringstream ss;
+    f.open("directdCommand", std::ios::in | std::ios::binary);
+    std::stringstream ss;
     const int buf_size=512;
     const int buf_size=512;
     char buf[buf_size];
     char buf[buf_size];
     f.getline(buf, buf_size);
     f.getline(buf, buf_size);

+ 5 - 2
direct/src/distributed/cConnectionRepository.cxx

@@ -28,6 +28,9 @@
 #include "py_panda.h"
 #include "py_panda.h"
 #endif
 #endif
 
 
+using std::endl;
+using std::string;
+
 const string CConnectionRepository::_overflow_event_name = "CRDatagramOverflow";
 const string CConnectionRepository::_overflow_event_name = "CRDatagramOverflow";
 
 
 #ifndef CPPPARSER
 #ifndef CPPPARSER
@@ -406,7 +409,7 @@ send_datagram(const Datagram &dg) {
     bool result = _bdc.SendMessage(dg);
     bool result = _bdc.SendMessage(dg);
     if (!result && _bdc.IsConnected()) {
     if (!result && _bdc.IsConnected()) {
 #ifdef HAVE_PYTHON
 #ifdef HAVE_PYTHON
-      ostringstream s;
+      std::ostringstream s;
 
 
 #if PY_VERSION_HEX >= 0x03030000
 #if PY_VERSION_HEX >= 0x03030000
       PyObject *exc_type = PyExc_ConnectionError;
       PyObject *exc_type = PyExc_ConnectionError;
@@ -884,7 +887,7 @@ handle_update_field_owner() {
  * description on the indicated output stream.
  * description on the indicated output stream.
  */
  */
 void CConnectionRepository::
 void CConnectionRepository::
-describe_message(ostream &out, const string &prefix,
+describe_message(std::ostream &out, const string &prefix,
                  const Datagram &dg) const {
                  const Datagram &dg) const {
   DCPacker packer;
   DCPacker packer;
 
 

+ 4 - 4
direct/src/distributed/cDistributedSmoothNodeBase.cxx

@@ -268,7 +268,7 @@ broadcast_pos_hpr_xy() {
  * indicated field name, up until the arguments.
  * indicated field name, up until the arguments.
  */
  */
 void CDistributedSmoothNodeBase::
 void CDistributedSmoothNodeBase::
-begin_send_update(DCPacker &packer, const string &field_name) {
+begin_send_update(DCPacker &packer, const std::string &field_name) {
   DCField *field = _dclass->get_field_by_name(field_name);
   DCField *field = _dclass->get_field_by_name(field_name);
   nassertv(field != nullptr);
   nassertv(field != nullptr);
 
 
@@ -325,14 +325,14 @@ finish_send_update(DCPacker &packer) {
   } else {
   } else {
 #ifndef NDEBUG
 #ifndef NDEBUG
     if (packer.had_range_error()) {
     if (packer.had_range_error()) {
-      ostringstream error;
+      std::ostringstream error;
       error << "Node position out of range for DC file: "
       error << "Node position out of range for DC file: "
             << _node_path << " pos = " << _store_xyz
             << _node_path << " pos = " << _store_xyz
             << " hpr = " << _store_hpr
             << " hpr = " << _store_hpr
             << " zoneId = " << _currL[0];
             << " zoneId = " << _currL[0];
 
 
 #ifdef HAVE_PYTHON
 #ifdef HAVE_PYTHON
-      string message = error.str();
+      std::string message = error.str();
       distributed_cat.warning()
       distributed_cat.warning()
         << message << "\n";
         << message << "\n";
       PyErr_SetString(PyExc_ValueError, message.c_str());
       PyErr_SetString(PyExc_ValueError, message.c_str());
@@ -364,5 +364,5 @@ set_curr_l(uint64_t l) {
 
 
 void CDistributedSmoothNodeBase::
 void CDistributedSmoothNodeBase::
 print_curr_l() {
 print_curr_l() {
-  cout << "printCurrL: sent l: " << _currL[1] << " last set l: " << _currL[0] << "\n";
+  std::cout << "printCurrL: sent l: " << _currL[1] << " last set l: " << _currL[0] << "\n";
 }
 }

+ 17 - 1
direct/src/interval/MetaInterval.py

@@ -573,7 +573,23 @@ class MetaInterval(CMetaInterval):
             out = ostream
             out = ostream
         CMetaInterval.timeline(self, out)
         CMetaInterval.timeline(self, out)
 
 
-
+    add_sequence = addSequence
+    add_parallel = addParallel
+    add_parallel_end_together = addParallelEndTogether
+    add_track = addTrack
+    add_interval = addInterval
+    set_manager = setManager
+    get_manager = getManager
+    set_t = setT
+    resume_until = resumeUntil
+    clear_to_initial = clearToInitial
+    clear_intervals = clearIntervals
+    set_play_rate = setPlayRate
+    priv_do_event = privDoEvent
+    priv_post_event = privPostEvent
+    set_interval_start_time = setIntervalStartTime
+    get_interval_start_time = getIntervalStartTime
+    get_duration = getDuration
 
 
 
 
 class Sequence(MetaInterval):
 class Sequence(MetaInterval):

+ 2 - 2
direct/src/interval/cConstrainHprInterval.cxx

@@ -26,7 +26,7 @@ TypeHandle CConstrainHprInterval::_type_handle;
  * node's local orientation will be copied unaltered.
  * node's local orientation will be copied unaltered.
  */
  */
 CConstrainHprInterval::
 CConstrainHprInterval::
-CConstrainHprInterval(const string &name, double duration,
+CConstrainHprInterval(const std::string &name, double duration,
                       const NodePath &node, const NodePath &target,
                       const NodePath &node, const NodePath &target,
                       bool wrt, const LVecBase3 hprOffset) :
                       bool wrt, const LVecBase3 hprOffset) :
   CConstraintInterval(name, duration),
   CConstraintInterval(name, duration),
@@ -69,7 +69,7 @@ priv_step(double t) {
  *
  *
  */
  */
 void CConstrainHprInterval::
 void CConstrainHprInterval::
-output(ostream &out) const {
+output(std::ostream &out) const {
   out << get_name() << ":";
   out << get_name() << ":";
   out << " dur " << get_duration();
   out << " dur " << get_duration();
 }
 }

+ 2 - 2
direct/src/interval/cConstrainPosHprInterval.cxx

@@ -27,7 +27,7 @@ TypeHandle CConstrainPosHprInterval::_type_handle;
  * unaltered.
  * unaltered.
  */
  */
 CConstrainPosHprInterval::
 CConstrainPosHprInterval::
-CConstrainPosHprInterval(const string &name, double duration,
+CConstrainPosHprInterval(const std::string &name, double duration,
                          const NodePath &node, const NodePath &target,
                          const NodePath &node, const NodePath &target,
                          bool wrt, const LVecBase3 posOffset,
                          bool wrt, const LVecBase3 posOffset,
                          const LVecBase3 hprOffset) :
                          const LVecBase3 hprOffset) :
@@ -72,7 +72,7 @@ priv_step(double t) {
  *
  *
  */
  */
 void CConstrainPosHprInterval::
 void CConstrainPosHprInterval::
-output(ostream &out) const {
+output(std::ostream &out) const {
   out << get_name() << ":";
   out << get_name() << ":";
   out << " dur " << get_duration();
   out << " dur " << get_duration();
 }
 }

+ 2 - 2
direct/src/interval/cConstrainPosInterval.cxx

@@ -26,7 +26,7 @@ TypeHandle CConstrainPosInterval::_type_handle;
  * node's local position will be copied unaltered.
  * node's local position will be copied unaltered.
  */
  */
 CConstrainPosInterval::
 CConstrainPosInterval::
-CConstrainPosInterval(const string &name, double duration,
+CConstrainPosInterval(const std::string &name, double duration,
                       const NodePath &node, const NodePath &target,
                       const NodePath &node, const NodePath &target,
                       bool wrt, const LVecBase3 posOffset) :
                       bool wrt, const LVecBase3 posOffset) :
   CConstraintInterval(name, duration),
   CConstraintInterval(name, duration),
@@ -73,7 +73,7 @@ priv_step(double t) {
  *
  *
  */
  */
 void CConstrainPosInterval::
 void CConstrainPosInterval::
-output(ostream &out) const {
+output(std::ostream &out) const {
   out << get_name() << ":";
   out << get_name() << ":";
   out << " dur " << get_duration();
   out << " dur " << get_duration();
 }
 }

+ 2 - 2
direct/src/interval/cConstrainTransformInterval.cxx

@@ -27,7 +27,7 @@ TypeHandle CConstrainTransformInterval::_type_handle;
  * local transform will be copied unaltered.
  * local transform will be copied unaltered.
  */
  */
 CConstrainTransformInterval::
 CConstrainTransformInterval::
-CConstrainTransformInterval(const string &name, double duration,
+CConstrainTransformInterval(const std::string &name, double duration,
                             const NodePath &node, const NodePath &target,
                             const NodePath &node, const NodePath &target,
                             bool wrt) :
                             bool wrt) :
   CConstraintInterval(name, duration),
   CConstraintInterval(name, duration),
@@ -72,7 +72,7 @@ priv_step(double t) {
  *
  *
  */
  */
 void CConstrainTransformInterval::
 void CConstrainTransformInterval::
-output(ostream &out) const {
+output(std::ostream &out) const {
   out << get_name() << ":";
   out << get_name() << ":";
   out << " dur " << get_duration();
   out << " dur " << get_duration();
 }
 }

+ 1 - 1
direct/src/interval/cConstraintInterval.cxx

@@ -19,7 +19,7 @@ TypeHandle CConstraintInterval::_type_handle;
  *
  *
  */
  */
 CConstraintInterval::
 CConstraintInterval::
-CConstraintInterval(const string &name, double duration) :
+CConstraintInterval(const std::string &name, double duration) :
   CInterval(name, duration, true)
   CInterval(name, duration, true)
 {
 {
 }
 }

+ 4 - 1
direct/src/interval/cInterval.cxx

@@ -19,6 +19,9 @@
 #include "eventQueue.h"
 #include "eventQueue.h"
 #include "pStatTimer.h"
 #include "pStatTimer.h"
 
 
+using std::ostream;
+using std::string;
+
 PStatCollector CInterval::_root_pcollector("App:Show code:ivalLoop");
 PStatCollector CInterval::_root_pcollector("App:Show code:ivalLoop");
 TypeHandle CInterval::_type_handle;
 TypeHandle CInterval::_type_handle;
 
 
@@ -41,7 +44,7 @@ CInterval(const string &name, double duration, bool open_ended) :
   _curr_t(0.0),
   _curr_t(0.0),
   _name(name),
   _name(name),
   _pname(get_pstats_name(name)),
   _pname(get_pstats_name(name)),
-  _duration(max(duration, 0.0)),
+  _duration(std::max(duration, 0.0)),
   _open_ended(open_ended),
   _open_ended(open_ended),
   _dirty(false),
   _dirty(false),
   _ival_pcollector(_root_pcollector, _pname)
   _ival_pcollector(_root_pcollector, _pname)

+ 3 - 3
direct/src/interval/cIntervalManager.cxx

@@ -108,7 +108,7 @@ add_c_interval(CInterval *interval, bool external) {
  * interval, or -1 if there is not.
  * interval, or -1 if there is not.
  */
  */
 int CIntervalManager::
 int CIntervalManager::
-find_c_interval(const string &name) const {
+find_c_interval(const std::string &name) const {
   MutexHolder holder(_lock);
   MutexHolder holder(_lock);
 
 
   NameIndex::const_iterator ni = _name_index.find(name);
   NameIndex::const_iterator ni = _name_index.find(name);
@@ -351,7 +351,7 @@ get_next_removal() {
  *
  *
  */
  */
 void CIntervalManager::
 void CIntervalManager::
-output(ostream &out) const {
+output(std::ostream &out) const {
   MutexHolder holder(_lock);
   MutexHolder holder(_lock);
 
 
   out << "CIntervalManager, " << (int)_name_index.size() << " intervals.";
   out << "CIntervalManager, " << (int)_name_index.size() << " intervals.";
@@ -361,7 +361,7 @@ output(ostream &out) const {
  *
  *
  */
  */
 void CIntervalManager::
 void CIntervalManager::
-write(ostream &out) const {
+write(std::ostream &out) const {
   MutexHolder holder(_lock);
   MutexHolder holder(_lock);
 
 
   // We need to write this line so that it's clear what's going on when there
   // We need to write this line so that it's clear what's going on when there

+ 1 - 1
direct/src/interval/cLerpAnimEffectInterval.cxx

@@ -43,7 +43,7 @@ priv_step(double t) {
  *
  *
  */
  */
 void CLerpAnimEffectInterval::
 void CLerpAnimEffectInterval::
-output(ostream &out) const {
+output(std::ostream &out) const {
   out << get_name() << ": ";
   out << get_name() << ": ";
 
 
   if (_controls.empty()) {
   if (_controls.empty()) {

+ 2 - 2
direct/src/interval/cLerpInterval.cxx

@@ -21,7 +21,7 @@ TypeHandle CLerpInterval::_type_handle;
  * string, or BT_invalid if the string doesn't match anything.
  * string, or BT_invalid if the string doesn't match anything.
  */
  */
 CLerpInterval::BlendType CLerpInterval::
 CLerpInterval::BlendType CLerpInterval::
-string_blend_type(const string &blend_type) {
+string_blend_type(const std::string &blend_type) {
   if (blend_type == "easeIn") {
   if (blend_type == "easeIn") {
     return BT_ease_in;
     return BT_ease_in;
   } else if (blend_type == "easeOut") {
   } else if (blend_type == "easeOut") {
@@ -49,7 +49,7 @@ compute_delta(double t) const {
     return 1.0;
     return 1.0;
   }
   }
   t /= duration;
   t /= duration;
-  t = min(max(t, 0.0), 1.0);
+  t = std::min(std::max(t, 0.0), 1.0);
 
 
   switch (_blend_type) {
   switch (_blend_type) {
   case BT_ease_in:
   case BT_ease_in:

+ 2 - 2
direct/src/interval/cLerpNodePathInterval.cxx

@@ -47,7 +47,7 @@ TypeHandle CLerpNodePathInterval::_type_handle;
  * otherwise, it is reset.
  * otherwise, it is reset.
  */
  */
 CLerpNodePathInterval::
 CLerpNodePathInterval::
-CLerpNodePathInterval(const string &name, double duration,
+CLerpNodePathInterval(const std::string &name, double duration,
                       CLerpInterval::BlendType blend_type,
                       CLerpInterval::BlendType blend_type,
                       bool bake_in_start, bool fluid,
                       bool bake_in_start, bool fluid,
                       const NodePath &node, const NodePath &other) :
                       const NodePath &node, const NodePath &other) :
@@ -544,7 +544,7 @@ priv_reverse_instant() {
  *
  *
  */
  */
 void CLerpNodePathInterval::
 void CLerpNodePathInterval::
-output(ostream &out) const {
+output(std::ostream &out) const {
   out << get_name() << ":";
   out << get_name() << ":";
 
 
   if ((_flags & F_end_pos) != 0) {
   if ((_flags & F_end_pos) != 0) {

+ 8 - 6
direct/src/interval/cMetaInterval.cxx

@@ -21,6 +21,8 @@
 #include <math.h>   // for log10()
 #include <math.h>   // for log10()
 #include <stdio.h>  // for sprintf()
 #include <stdio.h>  // for sprintf()
 
 
+using std::string;
+
 TypeHandle CMetaInterval::_type_handle;
 TypeHandle CMetaInterval::_type_handle;
 
 
 /**
 /**
@@ -669,7 +671,7 @@ pop_event() {
  *
  *
  */
  */
 void CMetaInterval::
 void CMetaInterval::
-write(ostream &out, int indent_level) const {
+write(std::ostream &out, int indent_level) const {
   recompute();
   recompute();
 
 
   // How many digits of precision should we output for time?
   // How many digits of precision should we output for time?
@@ -677,7 +679,7 @@ write(ostream &out, int indent_level) const {
   int total_digits = num_decimals + 4;
   int total_digits = num_decimals + 4;
   static const int max_digits = 32;  // totally arbitrary
   static const int max_digits = 32;  // totally arbitrary
   nassertv(total_digits <= max_digits);
   nassertv(total_digits <= max_digits);
-  char format_str[12];
+  char format_str[16];
   sprintf(format_str, "%%%d.%df", total_digits, num_decimals);
   sprintf(format_str, "%%%d.%df", total_digits, num_decimals);
 
 
   indent(out, indent_level) << get_name() << ":\n";
   indent(out, indent_level) << get_name() << ":\n";
@@ -698,7 +700,7 @@ write(ostream &out, int indent_level) const {
  * Outputs a list of all events in the order in which they occur.
  * Outputs a list of all events in the order in which they occur.
  */
  */
 void CMetaInterval::
 void CMetaInterval::
-timeline(ostream &out) const {
+timeline(std::ostream &out) const {
   recompute();
   recompute();
 
 
   // How many digits of precision should we output for time?
   // How many digits of precision should we output for time?
@@ -706,7 +708,7 @@ timeline(ostream &out) const {
   int total_digits = num_decimals + 4;
   int total_digits = num_decimals + 4;
   static const int max_digits = 32;  // totally arbitrary
   static const int max_digits = 32;  // totally arbitrary
   nassertv(total_digits <= max_digits);
   nassertv(total_digits <= max_digits);
-  char format_str[12];
+  char format_str[16];
   sprintf(format_str, "%%%d.%df", total_digits, num_decimals);
   sprintf(format_str, "%%%d.%df", total_digits, num_decimals);
 
 
   int extra_indent_level = 0;
   int extra_indent_level = 0;
@@ -1124,7 +1126,7 @@ recompute_level(int n, int level_begin, int &level_end) {
 
 
     previous_begin = begin_time;
     previous_begin = begin_time;
     previous_end = end_time;
     previous_end = end_time;
-    level_end = max(level_end, end_time);
+    level_end = std::max(level_end, end_time);
     n++;
     n++;
   }
   }
 
 
@@ -1169,7 +1171,7 @@ get_begin_time(const CMetaInterval::IntervalDef &def, int level_begin,
  * Formats an event for output, for write() or timeline().
  * Formats an event for output, for write() or timeline().
  */
  */
 void CMetaInterval::
 void CMetaInterval::
-write_event_desc(ostream &out, const CMetaInterval::IntervalDef &def,
+write_event_desc(std::ostream &out, const CMetaInterval::IntervalDef &def,
                  int &extra_indent_level) const {
                  int &extra_indent_level) const {
   switch (def._type) {
   switch (def._type) {
   case DT_c_interval:
   case DT_c_interval:

+ 2 - 2
direct/src/interval/hideInterval.cxx

@@ -20,13 +20,13 @@ TypeHandle HideInterval::_type_handle;
  *
  *
  */
  */
 HideInterval::
 HideInterval::
-HideInterval(const NodePath &node, const string &name) :
+HideInterval(const NodePath &node, const std::string &name) :
   CInterval(name, 0.0, true),
   CInterval(name, 0.0, true),
   _node(node)
   _node(node)
 {
 {
   nassertv(!node.is_empty());
   nassertv(!node.is_empty());
   if (_name.empty()) {
   if (_name.empty()) {
-    ostringstream name_strm;
+    std::ostringstream name_strm;
     name_strm
     name_strm
       << "HideInterval-" << node.node()->get_name() << "-" << ++_unique_index;
       << "HideInterval-" << node.node()->get_name() << "-" << ++_unique_index;
     _name = name_strm.str();
     _name = name_strm.str();

+ 2 - 2
direct/src/interval/showInterval.cxx

@@ -20,13 +20,13 @@ TypeHandle ShowInterval::_type_handle;
  *
  *
  */
  */
 ShowInterval::
 ShowInterval::
-ShowInterval(const NodePath &node, const string &name) :
+ShowInterval(const NodePath &node, const std::string &name) :
   CInterval(name, 0.0, true),
   CInterval(name, 0.0, true),
   _node(node)
   _node(node)
 {
 {
   nassertv(!node.is_empty());
   nassertv(!node.is_empty());
   if (_name.empty()) {
   if (_name.empty()) {
-    ostringstream name_strm;
+    std::ostringstream name_strm;
     name_strm
     name_strm
       << "ShowInterval-" << node.node()->get_name() << "-" << ++_unique_index;
       << "ShowInterval-" << node.node()->get_name() << "-" << ++_unique_index;
     _name = name_strm.str();
     _name = name_strm.str();

+ 5 - 0
direct/src/plugin/binaryXml.cxx

@@ -15,6 +15,11 @@
 #include "p3d_lock.h"
 #include "p3d_lock.h"
 #include <sstream>
 #include <sstream>
 
 
+using std::istream;
+using std::ostream;
+using std::ostringstream;
+using std::string;
+
 static const bool debug_xml_output = false;
 static const bool debug_xml_output = false;
 
 
 static LOCK xml_lock;
 static LOCK xml_lock;

+ 0 - 2
direct/src/plugin/binaryXml.h

@@ -18,8 +18,6 @@
 #include "handleStream.h"
 #include "handleStream.h"
 #include <iostream>
 #include <iostream>
 
 
-using namespace std;
-
 // A pair of functions to input and output the TinyXml constructs on the
 // A pair of functions to input and output the TinyXml constructs on the
 // indicated streams.  We could, of course, use the TinyXml output operators,
 // indicated streams.  We could, of course, use the TinyXml output operators,
 // but this is a smidge more efficient and gives us more control.
 // but this is a smidge more efficient and gives us more control.

+ 7 - 2
direct/src/plugin/fileSpec.cxx

@@ -33,6 +33,11 @@
 
 
 #endif
 #endif
 
 
+using std::istream;
+using std::ostream;
+using std::string;
+using std::wstring;
+
 /**
 /**
  *
  *
  */
  */
@@ -325,10 +330,10 @@ read_hash(const string &pathname) {
 #ifdef _WIN32
 #ifdef _WIN32
   wstring pathname_w;
   wstring pathname_w;
   if (string_to_wstring(pathname_w, pathname)) {
   if (string_to_wstring(pathname_w, pathname)) {
-    stream.open(pathname_w.c_str(), ios::in | ios::binary);
+    stream.open(pathname_w.c_str(), std::ios::in | std::ios::binary);
   }
   }
 #else // _WIN32
 #else // _WIN32
-  stream.open(pathname.c_str(), ios::in | ios::binary);
+  stream.open(pathname.c_str(), std::ios::in | std::ios::binary);
 #endif  // _WIN32
 #endif  // _WIN32
 
 
   if (!stream) {
   if (!stream) {

+ 0 - 1
direct/src/plugin/fileSpec.h

@@ -16,7 +16,6 @@
 
 
 #include "get_tinyxml.h"
 #include "get_tinyxml.h"
 #include <string>
 #include <string>
-using namespace std;
 
 
 /**
 /**
  * This simple class is used both within the core API in this module, as well
  * This simple class is used both within the core API in this module, as well

+ 4 - 0
direct/src/plugin/find_root_dir.cxx

@@ -27,6 +27,10 @@
 #include <sys/stat.h>
 #include <sys/stat.h>
 #endif
 #endif
 
 
+using std::cerr;
+using std::string;
+using std::wstring;
+
 #ifdef _WIN32
 #ifdef _WIN32
 // From KnownFolders.h (part of Vista SDK):
 // From KnownFolders.h (part of Vista SDK):
 #define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
 #define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \

+ 0 - 1
direct/src/plugin/find_root_dir.h

@@ -16,7 +16,6 @@
 
 
 #include <string>
 #include <string>
 #include <iostream>
 #include <iostream>
-using namespace std;
 
 
 std::string find_root_dir();
 std::string find_root_dir();
 
 

+ 1 - 1
direct/src/plugin/find_root_dir_assist.mm

@@ -70,7 +70,7 @@ get_osx_home_directory() {
 /**
 /**
  *
  *
  */
  */
-string
+std::string
 find_osx_root_dir() {
 find_osx_root_dir() {
   string result = call_NSSearchPathForDirectories(NSCachesDirectory, NSUserDomainMask);
   string result = call_NSSearchPathForDirectories(NSCachesDirectory, NSUserDomainMask);
   if (!result.empty()) {
   if (!result.empty()) {

+ 4 - 0
direct/src/plugin/handleStreamBuf.cxx

@@ -28,6 +28,10 @@
 #include <libio.h>
 #include <libio.h>
 #endif // !_WIN32 && !__APPLE__ && !__FreeBSD__
 #endif // !_WIN32 && !__APPLE__ && !__FreeBSD__
 
 
+using std::cerr;
+using std::dec;
+using std::hex;
+
 static const size_t handle_buffer_size = 4096;
 static const size_t handle_buffer_size = 4096;
 
 
 /**
 /**

+ 0 - 2
direct/src/plugin/handleStreamBuf.h

@@ -18,8 +18,6 @@
 #include "p3d_lock.h"
 #include "p3d_lock.h"
 #include <iostream>
 #include <iostream>
 
 
-using namespace std;
-
 /**
 /**
  *
  *
  */
  */

Some files were not shown because too many files changed in this diff