[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13099] trunk/blender/source/blender/ python/api2_2x/Blender.c: added utility function Blender.GetPaths( absolute =0 )

Campbell Barton ideasman42 at gmail.com
Wed Jan 2 18:40:53 CET 2008


Revision: 13099
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13099
Author:   campbellbarton
Date:     2008-01-02 18:40:53 +0100 (Wed, 02 Jan 2008)

Log Message:
-----------
added utility function Blender.GetPaths( absolute=0 ) 
returns a list of files this blend file uses, wraps bpath functions.

Modified Paths:
--------------
    trunk/blender/source/blender/python/api2_2x/Blender.c

Modified: trunk/blender/source/blender/python/api2_2x/Blender.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Blender.c	2008-01-02 15:44:28 UTC (rev 13098)
+++ trunk/blender/source/blender/python/api2_2x/Blender.c	2008-01-02 17:40:53 UTC (rev 13099)
@@ -40,6 +40,7 @@
 #include "BDR_drawmesh.h"	/* set_mipmap() */
 #include "BIF_usiblender.h"
 #include "BLI_blenlib.h"
+#include "BLI_bpath.h"
 #include "BLO_writefile.h"
 #include "BKE_blender.h"
 #include "BKE_exotic.h"
@@ -112,7 +113,7 @@
 static PyObject *Blender_PackAll( PyObject * self);
 static PyObject *Blender_UnpackAll( PyObject * self, PyObject * value);
 static PyObject *Blender_CountPackedFiles( PyObject * self );
-
+static PyObject *Blender_GetPaths( PyObject * self, PyObject *args, PyObject *keywds );
 extern PyObject *Text3d_Init( void ); /* missing in some include */
 
 /*****************************************************************************/
@@ -196,6 +197,9 @@
 static char Blender_CountPackedFiles_doc[] =
 "() - Returns the number of packed files.";
 
+static char Blender_GetPaths_doc[] =
+"() - Returns a list of paths used in this blend file.";
+
 /*****************************************************************************/
 /* Python method structure definition.		 */
 /*****************************************************************************/
@@ -209,6 +213,7 @@
 	{"Run", Blender_Run, METH_O, Blender_Run_doc},
 	{"ShowHelp", Blender_ShowHelp, METH_O, Blender_ShowHelp_doc},
 	{"CountPackedFiles", ( PyCFunction ) Blender_CountPackedFiles, METH_NOARGS, Blender_CountPackedFiles_doc},
+	{"GetPaths", ( PyCFunction ) Blender_GetPaths, METH_VARARGS|METH_KEYWORDS, Blender_GetPaths_doc},
 	{"PackAll", ( PyCFunction ) Blender_PackAll, METH_NOARGS, Blender_PackAll_doc},
 	{"UnpackAll", Blender_UnpackAll, METH_O, Blender_UnpackAll_doc},
 	{"UpdateMenus", ( PyCFunction ) Blender_UpdateMenus, METH_NOARGS,
@@ -903,6 +908,47 @@
 	int nfiles = countPackedFiles();
 	return PyInt_FromLong( nfiles );
 }
+
+/*****************************************************************************/
+/* Function:		Blender_GetPaths		 */
+/* Python equivalent:	Blender.GetPaths			 */
+/*****************************************************************************/
+static PyObject *Blender_GetPaths( PyObject * self, PyObject *args, PyObject *keywds )
+{
+	struct BPathIterator bpi;
+	PyObject *list = PyList_New(0), *st;
+	/* be sure there is low chance of the path being too short */
+	char filepath_expanded[FILE_MAXDIR*2]; 
+	
+	int absolute = 0;
+	static char *kwlist[] = {"absolute", NULL};
+
+	if (!PyArg_ParseTupleAndKeywords(args, keywds, "|i", kwlist, &absolute ) )
+		return EXPP_ReturnPyObjError( PyExc_AttributeError,
+				"expected nothing or one bool (0 or 1) as argument" );
+	
+	BLI_bpathIterator_init(&bpi);
+	
+	while (!BLI_bpathIterator_isDone(&bpi)) {
+		
+		/* build the list */
+		if (absolute) {
+			BLI_bpathIterator_copyPathExpanded( &bpi, filepath_expanded );
+			st = PyString_FromString(filepath_expanded);
+		} else {
+			st = PyString_FromString(BLI_bpathIterator_getPath(&bpi));
+		}
+		
+		PyList_Append(list, st);
+		Py_DECREF(st);
+		
+		BLI_bpathIterator_step(&bpi);
+	}
+	
+	return list;
+}
+
+
 static PyObject *Blender_UnpackModesDict( void )
 {
 	PyObject *UnpackModes = PyConstant_New(  );





More information about the Bf-blender-cvs mailing list