* Edited and consistent-ified the File->Import menu item labels and fileselect button...
authorMatt Ebb <matt@mke3.net>
Fri, 11 Jun 2004 02:12:37 +0000 (02:12 +0000)
committerMatt Ebb <matt@mke3.net>
Fri, 11 Jun 2004 02:12:37 +0000 (02:12 +0000)
* Added items for importing DXF, VRML, etc. in the File->Import menu, that just call the normal Open function. Most people don't even know that you can open these formats through the normal Open fileselect, so this will make it more obvious.

* Removed the 'Export Selected' menu, and put poor old lonely STL in the Import and Export menus too. Most of the exporters export only the selected object anyway, so it's not really a necessary distinction to make.

26 files changed:
release/scripts/DirectXExporter.py
release/scripts/ac3d_export.py
release/scripts/ac3d_import.py
release/scripts/blender2cal3d.py
release/scripts/bvh_export.py
release/scripts/bvh_import.py
release/scripts/lightwave_export.py
release/scripts/lightwave_import.py
release/scripts/nendo_export.py
release/scripts/nendo_import.py
release/scripts/obj_export.py
release/scripts/obj_import.py
release/scripts/off_export.py
release/scripts/off_import.py
release/scripts/radiosity_export.py
release/scripts/radiosity_import.py
release/scripts/raw_export.py
release/scripts/raw_import.py
release/scripts/slp_import.py
release/scripts/truespace_export.py
release/scripts/truespace_import.py
release/scripts/videoscape_export.py
release/scripts/wings_export.py
release/scripts/wings_import.py
release/scripts/wrl2export.py
source/blender/src/header_info.c

index 60f802e538b9c67918b729552372ab46cdfc6a3a..f6f2bbd8bf60f0d049435d333c50934380894fe4 100644 (file)
@@ -1,11 +1,11 @@
 #!BPY
 
 """ Registration info for Blender menus:
-Name: 'DirectX'
+Name: 'DirectX (.X)...'
 Blender: 232
 Group: 'Export'
-Submenu: 'Only mesh data...' mesh
-Submenu: 'Animation(not armature yet)...' anim
+Submenu: 'Only Mesh Data...' mesh
+Submenu: 'Animation (not armature yet)...' anim
 Tip: 'Export to DirectX text file format format.'
 """
 # $Id$
index 9e45d8ab109ab6715885d61803c9e829c0df21e6..d5b25486937bb439cf5c9e29c15fe1c7c3a4b13b 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY
 
 """ Registration info for Blender menus:
-Name: 'AC3D'
+Name: 'AC3D (.ac)...'
 Blender: 232
 Group: 'Export'
 Submenu: 'All meshes...' all
@@ -420,4 +420,4 @@ def fs_callback(filename):
 if __script__['arg'] == 'config':
   Draw.Register(gui, event, b_event)
 else:
-  Blender.Window.FileSelector(fs_callback, "AC3D Export")
+  Blender.Window.FileSelector(fs_callback, "Export AC3D")
index 2cc8f6ad08a96cad580dfa6be1a186ce1d37008d..16792f819bd9360de5f74248cd6c06fed591a259 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY
 
 """ Registration info for Blender menus:
-Name: 'AC3D...'
+Name: 'AC3D (.ac)...'
 Blender: 232
 Group: 'Import'
 Tip: 'Import an AC3D (.ac) file.'
index 7e81529d26bf6d9c11471bc5478f777e75854e12..a6c04d8cb5414b9aabf754aa4cc9cb283bf70230 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY
 
 """
-Name: 'Cal3D v0.5'
+Name: 'Cal3D v0.5...'
 Blender: 232
 Group: 'Export'
 Tip: 'Export armature/bone data to the Cal3D library.'
index 9309b76c47695a704829237028a2479c0e00a2a6..a2370ed66a6edfd57b6b72ebb645dc991ddd5ad3 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Motion Capture (*.bvh)'
+Name: 'Motion Capture (.bvh)...'
 Blender: 232
 Group: 'Export'
-Tip: 'Export a (*.bvh) motion capture file'
+Tip: 'Export a (.bvh) motion capture file'
 """
 
 # $Id$
@@ -386,4 +386,4 @@ def saveBVH(filename):
   file.close()
   print 'done'
   
-Blender.Window.FileSelector(saveBVH, 'SELECT NEW BVH FILE')
+Blender.Window.FileSelector(saveBVH, 'Export BVH')
index cde0e0dfde867bc6379c40af4afc3ef59ff1a72c..9c6255633bb7f7a2b58fd03bb2db9e8efa353d06 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Motion Capture (*.bvh)'
+Name: 'Motion Capture (.bvh)...'
 Blender: 232
 Group: 'Import'
-Tip: 'Import a (*.bvh) motion capture file'
+Tip: 'Import a (.bvh) motion capture file'
 """
 
 # $Id$
@@ -441,4 +441,4 @@ def loadBVH(filename):
     # Main file loop
     lineIdx += 1
 
-Blender.Window.FileSelector(loadBVH)
+Blender.Window.FileSelector(loadBVH, "Import BVH")
index 56e137cc380792230bf7076da17bfa3b08f63d45..3fcb759062d47ec585be3e327246fb537d1f8242 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'LightWave...'
+Name: 'LightWave (.lwo)...'
 Blender: 232
 Group: 'Export'
-Tooltip: 'Export selected meshes to LightWave File Format (*.lwo)'
+Tooltip: 'Export selected meshes to LightWave File Format (.lwo)'
 """
 
 # $Id$
@@ -527,4 +527,4 @@ def fs_callback(filename):
        if filename.find('.lwo', -4) <= 0: filename += '.lwo'
        write(filename)
 
-Blender.Window.FileSelector(fs_callback, "LWO Export")
+Blender.Window.FileSelector(fs_callback, "Export LWO")
index 583e57191e6cb688b12f4d5cefd5b5fbd9db38d8..6b8cee36370d5671651f49c93e5e98a6e2549b99 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'LightWave...'
+Name: 'LightWave (.lwo)...'
 Blender: 232
 Group: 'Import'
-Tooltip: 'Import LightWave Object File Format (*.lwo)'
+Tooltip: 'Import LightWave Object File Format (.lwo)'
 """
 
 # $Id$
@@ -171,4 +171,4 @@ def read_faces_6(lwochunk):
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "LWO Import")
+Blender.Window.FileSelector(fs_callback, "Import LWO")
index 5fd6db87d533b22183b08968a1d3219adb71cacb..80ce4f96c5d4447f4d22a333159f794fc22adfdc 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY
 
 """
-Name: 'Nendo...'
+Name: 'Nendo (.ndo)...'
 Blender: 232
 Group: 'Export'
 Tooltip: 'Export selected mesh to Nendo File Format (*.ndo)'
@@ -182,4 +182,4 @@ def fs_callback(filename):
        if filename.find('.ndo', -4) <= 0: filename += '.ndo'
        write(filename)
 
-Blender.Window.FileSelector(fs_callback, "Nendo Export")
+Blender.Window.FileSelector(fs_callback, "Export Nendo")
index 3d42f4bfc51a17b794b33bff55e13fec8366f9c2..d65bd20376aa7d3b3dea1075f6c9fc0c787df6cd 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Nendo...'
+Name: 'Nendo (.ndo)...'
 Blender: 232
 Group: 'Import'
-Tooltip: 'Import Nendo Object File Format (*.ndo)'
+Tooltip: 'Import Nendo Object File Format (.ndo)'
 """
 
 # $Id$
@@ -204,4 +204,4 @@ def make_faces(edge_table): # For Nendo
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "Nendo Import")
+Blender.Window.FileSelector(fs_callback, "Import Nendo")
index ccbed6feae3f411262e664c9bfb039cc6a264c27..333f54fe59f07630e9944582980b29a2d762f08a 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY 
 
 """ 
-Name: 'Wavefront (*.obj)
+Name: 'Wavefront (.obj)...
 Blender: 232 
 Group: 'Export'
 Tooltip: 'Save a Wavefront OBJ File' 
@@ -144,4 +144,4 @@ def save_obj(filename):
                 
    file.close() 
 
-Window.FileSelector(save_obj, 'SELECT OBJ FILE') 
+Window.FileSelector(save_obj, 'Export OBJ') 
index 364fbc590befe47d099c18edb10e74d5003ab005..412a5d285a99e636e4fdbcfe8267bc1054ca9c57 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY 
  
 """ 
-Name: 'Wavefront (*.obj)
+Name: 'Wavefront (.obj)...
 Blender: 232 
 Group: 'Import' 
 Tooltip: 'Load a Wavefront OBJ File' 
@@ -244,4 +244,4 @@ def load_obj(file):
    if len(mesh.verts) > 0: 
       NMesh.PutRaw(mesh, fileName + '_' + objectName) 
 
-Window.FileSelector(load_obj, 'SELECT OBJ FILE') 
+Window.FileSelector(load_obj, 'Import OBJ') 
index de843561e4ce45e65c4d914de4a2d3135f0432b4..d5f6e943ececa73ad264ea6749c6a8f2aa7b6675 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY
 
 """
-Name: 'OFF...'
+Name: 'Object File Format (.off)...'
 Blender: 232
 Group: 'Export'
 Tooltip: 'Export selected mesh to Object File Format (*.off)'
@@ -68,4 +68,4 @@ def fs_callback(filename):
        if filename.find('.off', -4) <= 0: filename += '.off'
        write(filename)
 
-Blender.Window.FileSelector(fs_callback, "OFF Export")
+Blender.Window.FileSelector(fs_callback, "Export OFF")
index 44c5bf6ff05d184e900f111898edb1999f674cab..3d5f996a4722d61bbbf7848a49bbe49ae056cd3d 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY
 
 """
-Name: 'OFF...'
+Name: 'Object File Format (.off)...'
 Blender: 232
 Group: 'Import'
 Tooltip: 'Import Object File Format (*.off)'
@@ -71,4 +71,4 @@ def read(filename):
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "OFF Import")
+Blender.Window.FileSelector(fs_callback, "Import OFF")
index 85b8ae8e59861a7a95330e3390a404edd61aac83..48b315eaf6371f10b71eaf8ae4d14a3b8435a573 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Radiosity...'
+Name: 'Radiosity (.radio)...'
 Blender: 232
 Group: 'Export'
-Tooltip: 'Export selected mesh (with vertex colors) to Radiosity File Format (*.radio)'
+Tooltip: 'Export selected mesh (with vertex colors) to Radiosity File Format (.radio)'
 """
 
 # $Id$
@@ -90,4 +90,4 @@ def fs_callback(filename):
        if filename.find('.radio', -6) <= 0: filename += '.radio'
        write(filename)
 
-Blender.Window.FileSelector(fs_callback, "Radio Export")
+Blender.Window.FileSelector(fs_callback, "Export Radio")
index 8aeb66fd7d01fa1eeffaf536ab8fc80d38858ccb..7a848b45ca65c8c7d81d6d05a41d18ad1b4f95c9 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Radiosity...'
+Name: 'Radiosity (.radio)...'
 Blender: 232
 Group: 'Import'
-Tooltip: 'Import Radiosity File Format (*.radio) with vertex colors'
+Tooltip: 'Import Radiosity File Format (.radio) with vertex colors'
 """
 
 # $Id$
@@ -93,4 +93,4 @@ def read(filename):
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "Radio Import")
+Blender.Window.FileSelector(fs_callback, "Import Radio")
index 4493a6bc46382a133c67de211e724a344f825235..a5d42ef57949dacfd40b69e0d5a61306cbb47eec 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Raw Triangle...'
+Name: 'Raw Triangle (.raw)...'
 Blender: 232
 Group: 'Export'
-Tooltip: 'Export selected mesh to Raw Triangle Format (*.raw)'
+Tooltip: 'Export selected mesh to Raw Triangle Format (.raw)'
 """
 
 # $Id$
@@ -65,4 +65,4 @@ def fs_callback(filename):
        if filename.find('.raw', -4) <= 0: filename += '.raw'
        write(filename)
 
-Blender.Window.FileSelector(fs_callback, "Raw Export")
+Blender.Window.FileSelector(fs_callback, "Export Raw")
index a195a5dfa308a369a569bf7baa07c23abf1c83ae..cc6cdc124801b07a06d5444729b91b49ad4ad54a 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Raw Triangle...'
+Name: 'Raw Triangle (.raw)...'
 Blender: 232
 Group: 'Import'
-Tooltip: 'Import Raw Triangle File Format (*.raw)'
+Tooltip: 'Import Raw Triangle File Format (.raw)'
 """
 
 # $Id$
@@ -66,4 +66,4 @@ def read(filename):
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "Raw Import")
+Blender.Window.FileSelector(fs_callback, "Import Raw")
index acd3531f11806a69b2896cfa20d060594e8ca02b..ed81a5d0e4bc65011393ac0090cef19956d84eea 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'SLP (Pro Engineer)...'
+Name: 'Pro Engineer (.slp)...'
 Blender: 232
 Group: 'Import'
-Tooltip: 'Import SLP (Pro Engineer) File Format (*.raw)'
+Tooltip: 'Import Pro Engineer (.slp) File Format'
 """
 
 # $Id$
@@ -75,4 +75,4 @@ def read(filename):
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "SLP Import")
+Blender.Window.FileSelector(fs_callback, "Import SLP")
index f50e00f6d8a67583409cf8085a1538d065e32a7f..ad2a6bcd1d53a5fd5e0d9a02477c980631066478 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'TrueSpace...'
+Name: 'TrueSpace (.cob)...'
 Blender: 232
 Group: 'Export'
-Tooltip: 'Export selected meshes to trueSpace File Format (*.cob)'
+Tooltip: 'Export selected meshes to TrueSpace File Format (.cob)'
 """
 
 # $Id$
@@ -247,7 +247,7 @@ def fs_callback(filename):
        if filename.find('.cob', -4) <= 0: filename += '.cob'
        write(filename)
 
-Blender.Window.FileSelector(fs_callback, "COB Export")
+Blender.Window.FileSelector(fs_callback, "Export COB")
 
 # === Matrix Differences between Blender & trueSpace ===
 #
index 7898fa40fa7c1282023f1751003939c4e8915695..3ec917773b024fb2f1eb9c426b1b46d70169a3a2 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'TrueSpace...'
+Name: 'TrueSpace (.cob)...'
 Blender: 232
 Group: 'Import'
-Tooltip: 'Import trueSpace Object File Format (*.cob)'
+Tooltip: 'Import TrueSpace Object File Format (.cob)'
 """
 
 # $Id$
@@ -211,7 +211,7 @@ def read(filename):
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "COB Import")
+Blender.Window.FileSelector(fs_callback, "Import COB")
 
 #      === Matrix Differences between Blender & trueSpace ===
 #
index a647012d10465f9af05acb81b503d30879eceeb5..239f75faa9b631fd5282e7771a21cace2169856a 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Videoscape (with Vertex Colors)...'
+Name: 'VideoScape with Vertex Colors (.obj)...'
 Blender: 232
 Group: 'Export'
-Tooltip: 'Export selected mesh to VideoScape File Format (*.obj)'
+Tooltip: 'Export selected mesh to VideoScape File Format (.obj)'
 """
 
 # $Id$
@@ -179,7 +179,7 @@ def fs_callback(filename):
        if filename.find('.obj', -4) <= 0: filename += '.VIDEOSCAPE.obj'
        write(filename)
 
-Blender.Window.FileSelector(fs_callback, "Videoscape Export")
+Blender.Window.FileSelector(fs_callback, "Export VideoScape")
 
 
 # filename = "VIDEOSCAPE_" + objname + ".obj"
index df36aec4c9f9c8164a3603adb9d7f6ab6e47faa2..3ad3f33b32785717ea494c459511f8250a28f5c7 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Wings3D...'
+Name: 'Wings3D (.wings)...'
 Blender: 232
 Group: 'Export'
-Tooltip: 'Export selected mesh to Wings3D File Format (*.wings)'
+Tooltip: 'Export selected mesh to Wings3D File Format (.wings)'
 """
 
 # $Id$
@@ -343,4 +343,4 @@ def fs_callback(filename):
 if Blender.Object.GetSelected()[0].getType() != "Mesh":
        Blender.Draw.PupMenu("Wings Export error|Selected object is not a mesh!")
 else:
-       Blender.Window.FileSelector(fs_callback, "Wings3D Export")
+       Blender.Window.FileSelector(fs_callback, "Export Wings3D")
index b2e77ab0d16222c7bc6a0ffb9f6f6e59f9712f04..432bb43b088ebf53171b90d463ace65bdf5cb32c 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 
 """
-Name: 'Wings3D...'
+Name: 'Wings3D (.wings)...'
 Blender: 232
 Group: 'Import'
-Tooltip: 'Import Wings3D File Format (*.wings)'
+Tooltip: 'Import Wings3D File Format (.wings)'
 """
 
 # $Id$
@@ -287,4 +287,4 @@ def read(filename):
 def fs_callback(filename):
        read(filename)
 
-Blender.Window.FileSelector(fs_callback, "Wings3D Import")
+Blender.Window.FileSelector(fs_callback, "Import Wings3D")
index 2394a640395863b6a59683710c3c3c06a025a799..5ab2e3be85b22d9c7c387932d1e505bfdf77aca9 100644 (file)
@@ -1,10 +1,10 @@
 #!BPY
 """ Registration info for Blender menus:
-Name: 'VRML 2.0'
+Name: 'VRML 2.0 (.wrl)...'
 Blender: 232
 Group: 'Export'
-Submenu: 'All objects...' all
-Submenu: 'Only selected objects...' selected
+Submenu: 'All Objects...' all
+Submenu: 'Selected Objects...' selected
 Tooltip: 'Export to VRML2 (.wrl) file.'
 """
 
@@ -969,7 +969,7 @@ if Blender.Get('version') < 225:
     print " download a newer version from http://blender.org/"
 else:
     if ARG == 'all' or ARG == 'selected':
-        Blender.Window.FileSelector(file_callback,"Save VRML 2.0")
+        Blender.Window.FileSelector(file_callback,"Export VRML 2.0")
     else:
         baseFileName=Blender.Get('filename')
         if baseFileName.find('.') != -1:
index 6566c19129134434b664ad6e5af329a935b45c5b..2191f9ec9334d32bc6393b3fd7b2b85fa0449168 100644 (file)
@@ -201,7 +201,7 @@ void write_videoscape_fs()
        }
        else {
                if(videosc_dir[0]==0) strcpy(videosc_dir, G.sce);
-               activate_fileselect(FILE_SPECIAL, "Save Videoscape", videosc_dir,
+               activate_fileselect(FILE_SPECIAL, "Export Videoscape", videosc_dir,
                                                                                write_videoscape);
        }
 }
@@ -214,7 +214,7 @@ void write_vrml_fs()
        else {
                if(videosc_dir[0]==0) strcpy(videosc_dir, G.sce);
        
-               activate_fileselect(FILE_SPECIAL, "Save VRML 1", videosc_dir, write_vrml);
+               activate_fileselect(FILE_SPECIAL, "Export VRML 1.0", videosc_dir, write_vrml);
        }  
 }
 
@@ -227,7 +227,7 @@ void write_dxf_fs()
 
                if(videosc_dir[0]==0) strcpy(videosc_dir, G.sce);
 
-               activate_fileselect(FILE_SPECIAL, "Save DXF", videosc_dir, write_dxf);  
+               activate_fileselect(FILE_SPECIAL, "Export DXF", videosc_dir, write_dxf);        
        }
 }
 
@@ -240,7 +240,7 @@ void write_stl_fs()
 
                if(videosc_dir[0]==0) strcpy(videosc_dir, G.sce);
 
-               activate_fileselect(FILE_SPECIAL, "SAVE STL", videosc_dir, write_stl);
+               activate_fileselect(FILE_SPECIAL, "Export STL", videosc_dir, write_stl);
        }
 }
 /* ------------ */
@@ -673,8 +673,33 @@ static uiBlock *info_runtime_optionsmenu(void *arg_unused)
 static void do_info_file_importmenu(void *arg, int event)
 {
        extern int BPY_menu_do_python(short menutype, int event);       // BPY_interface.c
+       ScrArea *sa;
+
+       if(curarea->spacetype==SPACE_INFO) {
+               sa= find_biggest_area_of_type(SPACE_SCRIPT);
+               if (!sa) sa= closest_bigger_area();
+               areawinset(sa->win);
+       }
 
-       BPY_menu_do_python(PYMENU_IMPORT, event);
+       /* events >=4 are registered bpython scripts */
+       if (event >= 4) BPY_menu_do_python(PYMENU_IMPORT, event - 4);
+
+       else switch(event) {
+                                                                       
+       case 0: /* DXF */
+               activate_fileselect(FILE_BLENDER, "Import DXF", G.sce, BIF_read_file);
+               break;
+       case 1: /* VRML 1.0 */
+               activate_fileselect(FILE_BLENDER, "Import VRML 1.0", G.sce, BIF_read_file);
+               break;
+       case 2: /* VideoScape */
+               activate_fileselect(FILE_BLENDER, "Import VideoScape", G.sce, BIF_read_file);
+               break;
+       case 3: /* STL */
+               activate_fileselect(FILE_BLENDER, "Import STL", G.sce, BIF_read_file);
+               break;
+
+       }
 
        allqueue(REDRAWINFO, 0);
 }
@@ -689,9 +714,20 @@ static uiBlock *info_file_importmenu(void *arg_unused)
        block= uiNewBlock(&curarea->uiblocks, "importmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin);
        uiBlockSetButmFunc(block, do_info_file_importmenu, NULL);
        //uiBlockSetXOfs(block, -50);  // offset to parent button
+       
+       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "VRML 1.0...|Ctrl F2",
+                        0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 0, "");
+       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "DXF...|Shift F2",
+                        0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 1, "");
+       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "VideoScape...|Alt W",
+                        0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 2, "");
+       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "STL...",
+                        0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 3, "");
+
+       uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
 
        for (pym = BPyMenuTable[PYMENU_IMPORT]; pym; pym = pym->next, i++) {
-               uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i, pym->tooltip?pym->tooltip:pym->filename);
+               uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i+4, pym->tooltip?pym->tooltip:pym->filename);
        }
 
        uiBlockSetDirection(block, UI_RIGHT);
@@ -703,11 +739,16 @@ static uiBlock *info_file_importmenu(void *arg_unused)
 static void do_info_file_exportmenu(void *arg, int event)
 {
        extern int BPY_menu_do_python(short menutype, int event);       // BPY_interface.c
+       ScrArea *sa;
 
-       /* events >=3 are registered bpython scripts */
-       if (event >= 3) BPY_menu_do_python(PYMENU_EXPORT, event - 3);
+       if(curarea->spacetype==SPACE_INFO) {
+               sa= find_biggest_area_of_type(SPACE_SCRIPT);
+               if (!sa) sa= closest_bigger_area();
+               areawinset(sa->win);
+       }
 
-       /* these are no defines, easier this way, the codes are in the function below */
+       /* events >=4 are registered bpython scripts */
+       if (event >= 4) BPY_menu_do_python(PYMENU_EXPORT, event - 4);
 
        else switch(event) {
                                                                        
@@ -720,6 +761,9 @@ static void do_info_file_exportmenu(void *arg, int event)
        case 2:
                write_videoscape_fs();
                break;
+       case 3:
+               write_stl_fs();
+               break;
        }
        allqueue(REDRAWINFO, 0);
 }
@@ -741,13 +785,15 @@ static uiBlock *info_file_exportmenu(void *arg_unused)
                         0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 1, "");
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Videoscape...|Alt W",
                         0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 2, "");
+       uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "STL...",
+                        0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 3, "");
 
        uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
 
        /* note that we acount for the 3 previous entries with i+3: */
        for (pym = BPyMenuTable[PYMENU_EXPORT]; pym; pym = pym->next, i++) {
                uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, pym->name, 0, yco-=20, menuwidth, 19, 
-                                NULL, 0.0, 0.0, 1, i+3
+                                NULL, 0.0, 0.0, 1, i+4
                                 pym->tooltip?pym->tooltip:pym->filename);
        }
 
@@ -758,45 +804,6 @@ static uiBlock *info_file_exportmenu(void *arg_unused)
        return block;
 }
 
-static void do_info_file_exportselmenu(void *arg, int event)
-{
-       ScrArea *sa;
-
-       if(curarea->spacetype==SPACE_INFO) {
-               sa= closest_bigger_area();
-               areawinset(sa->win);
-       }
-
-       /* these are no defines, easier this way (yeah right!), 
-          the codes are in the function below */
-       switch(event) {
-                                                                       
-       case 0:
-               write_stl_fs();
-               break;
-       }
-       allqueue(REDRAWINFO, 0);
-}
-
-static uiBlock *info_file_exportselmenu(void *arg_unused)
-{
-       uiBlock *block;
-       short yco = 20;
-
-       block= uiNewBlock(&curarea->uiblocks, "exportselectedmenu", UI_EMBOSSP, 
-                                         UI_HELV, G.curscreen->mainwin);
-       uiBlockSetButmFunc(block, do_info_file_exportselmenu, NULL);
-       //uiBlockSetXOfs(block, -50);  // offset to parent button
-       
-       uiDefBut(block, BUTM, 1, "STL...",
-                        0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 0, "");
-
-       uiBlockSetDirection(block, UI_RIGHT);
-       uiTextBoundsBlock(block, 60);
-
-       return block;
-}
-
 static void do_info_filemenu(void *arg, int event)
 {
        ScrArea *sa;
@@ -920,7 +927,6 @@ static uiBlock *info_filemenu(void *arg_unused)
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Append...|Shift F1",     0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
        uiDefIconTextBlockBut(block, info_file_importmenu, NULL, ICON_RIGHTARROW_THIN, "Import", 0, yco-=20, menuwidth, 19, "");
        uiDefIconTextBlockBut(block, info_file_exportmenu, NULL, ICON_RIGHTARROW_THIN, "Export", 0, yco-=20, menuwidth, 19, "");
-       uiDefIconTextBlockBut(block, info_file_exportselmenu, NULL, ICON_RIGHTARROW_THIN, "Export Selected", 0, yco-=20, menuwidth, 19, "");
        
        uiDefBut(block, SEPR, 0, "",                                    0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");