[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1123] contrib/py/scripts/addons/ game_engine_save_as_runtime.py: == save as runtime ==

Luca Bonavita mindrones at gmail.com
Tue Oct 26 11:28:55 CEST 2010


Revision: 1123
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=1123
Author:   mindrones
Date:     2010-10-26 11:28:54 +0200 (Tue, 26 Oct 2010)

Log Message:
-----------
== save as runtime ==

- fixed version as discussed, it has to be a numeric tuple
- used bpy.app.binary_path, to determine executables path and extension
  because sys.argv[0] was failing on symlinks
  example:
  here I have /home/user/blender2.5 -> /home/user/my/blender/builds/cmake/bin/blender
  and of course the player is at /home/user/my/blender/builds/cmake/bin/blenderplayer
  but sys.argv[0] = '/home/user/blender2.5' hence os.path.dirname(sys.argv[0]) = '/home/user'
  so that you have a wrong default player path

Modified Paths:
--------------
    contrib/py/scripts/addons/game_engine_save_as_runtime.py

Modified: contrib/py/scripts/addons/game_engine_save_as_runtime.py
===================================================================
--- contrib/py/scripts/addons/game_engine_save_as_runtime.py	2010-10-26 08:09:13 UTC (rev 1122)
+++ contrib/py/scripts/addons/game_engine_save_as_runtime.py	2010-10-26 09:28:54 UTC (rev 1123)
@@ -19,7 +19,7 @@
 bl_addon_info = {
     "name": "Save As Runtime",
     "author": "Mitchell Stokes (Moguri)",
-    "version": (0,2b),
+    "version": (0,2,1),
     "blender": (2, 5, 4),
     "api": 31667,
     "location": "File > Export",
@@ -95,22 +95,21 @@
     # Make the runtime executable on Linux
     if os.name == 'posix':
         os.chmod(output_path, 0o755)
-    
+
+
 from bpy.props import *
+
 class SaveAsRuntime(bpy.types.Operator):
     bl_idname = "wm.save_as_runtime"
     bl_label = "Save As Runtime"
     bl_options = {'REGISTER'}
     
-    ext = ""
+    blender_bin_path = bpy.app.binary_path
+    blender_bin_dir = os.path.dirname(blender_bin_path)
+    ext = os.path.splitext(blender_bin_path)[-1]
     
-    if os.name == "nt":
-        ext = ".exe"
-    elif os.name == "mac":
-        ext = ".app"
-
-    default_path = os.path.join(os.path.dirname(sys.argv[0]), 'blenderplayer'+ext)
-    player_path = StringProperty(name="Player Path", description="The path to the player to use", default=default_path)
+    default_player_path = os.path.join(blender_bin_dir, 'blenderplayer' + ext)
+    player_path = StringProperty(name="Player Path", description="The path to the player to use", default=default_player_path)
     filepath = StringProperty(name="Output Path", description="Where to save the runtime", default="")
     
     def execute(self, context):
@@ -127,13 +126,10 @@
         return {'RUNNING_MODAL'}
 
 def menu_func(self, context):
-    ext = ""
-    
-    if os.name == "nt":
-        ext = ".exe"
 
-    default_path = bpy.data.filepath.replace(".blend", ext)
-    self.layout.operator(SaveAsRuntime.bl_idname, text=SaveAsRuntime.bl_label).filepath = default_path
+    ext = os.path.splitext(bpy.app.binary_path)[-1]
+    default_blend_path = bpy.data.filepath.replace(".blend", ext)
+    self.layout.operator(SaveAsRuntime.bl_idname, text=SaveAsRuntime.bl_label).filepath = default_blend_path
 
 
 def register():




More information about the Bf-extensions-cvs mailing list