[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33068] branches/soc-2008-mxcurioni: * Fix for relative paths to style module files.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Mon Nov 15 00:07:07 CET 2010


Revision: 33068
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33068
Author:   kjym3
Date:     2010-11-15 00:07:06 +0100 (Mon, 15 Nov 2010)

Log Message:
-----------
* Fix for relative paths to style module files.

When a .blend file is saved, the "Remap Relative" option allows users
to keep relative paths valid even if the .blend file is saved into a
different directory.  Now the Remap Relative option takes care of relative
paths to style module files.  In addition, the following operations work
as expected with respect to style modules:
- File >> External Data >> Make All Path Relative
- File >> External Data >> Make All Path Absolute
- File >> External Data >> Report Missing Files

* Indentation fix in the UI code (no functionality changes).

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/release/scripts/ui/properties_render.py
    branches/soc-2008-mxcurioni/source/blender/blenlib/BLI_bpath.h
    branches/soc-2008-mxcurioni/source/blender/blenlib/intern/bpath.c

Modified: branches/soc-2008-mxcurioni/release/scripts/ui/properties_render.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/ui/properties_render.py	2010-11-14 22:30:51 UTC (rev 33067)
+++ branches/soc-2008-mxcurioni/release/scripts/ui/properties_render.py	2010-11-14 23:07:06 UTC (rev 33068)
@@ -264,14 +264,14 @@
             col.operator("scene.freestyle_module_add")
 
             for i, module in enumerate(freestyle.modules):
-                    box = layout.box()
-                    box.context_pointer_set("freestyle_module", module)
-                    row = box.row(align=True)
-                    row.prop(module, "use", text="")
-                    row.prop(module, "module_path", text="")
-                    row.operator("scene.freestyle_module_remove", icon='X', text="")
-                    row.operator("scene.freestyle_module_move", icon='TRIA_UP', text="").direction = 'UP'
-                    row.operator("scene.freestyle_module_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
+                box = layout.box()
+                box.context_pointer_set("freestyle_module", module)
+                row = box.row(align=True)
+                row.prop(module, "use", text="")
+                row.prop(module, "module_path", text="")
+                row.operator("scene.freestyle_module_remove", icon='X', text="")
+                row.operator("scene.freestyle_module_move", icon='TRIA_UP', text="").direction = 'UP'
+                row.operator("scene.freestyle_module_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
 
 
 class RENDER_PT_freestyle_linestyle(RenderButtonsPanel, bpy.types.Panel):

Modified: branches/soc-2008-mxcurioni/source/blender/blenlib/BLI_bpath.h
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/blenlib/BLI_bpath.h	2010-11-14 22:30:51 UTC (rev 33067)
+++ branches/soc-2008-mxcurioni/source/blender/blenlib/BLI_bpath.h	2010-11-14 23:07:06 UTC (rev 33068)
@@ -39,6 +39,12 @@
 	struct Scene *scene;			/* Current scene */
 };
 
+struct BPathIteratorFrsModuleData {
+	struct Scene *scene;			/* Current scene */
+	struct SceneRenderLayer *layer;	/* Scene render layer */
+	struct FreestyleModuleConfig *module;
+};
+
 struct BPathIterator {
 	char*	path;
 	char*	lib;
@@ -54,6 +60,8 @@
 
 	/* only for seq data */
 	struct BPathIteratorSeqData seqdata;
+	/* only for Freestyle module data */
+	struct BPathIteratorFrsModuleData frsmoduledata;
 };
 
 void			BLI_bpathIterator_init				(struct BPathIterator *bpi, char *base_path);

Modified: branches/soc-2008-mxcurioni/source/blender/blenlib/intern/bpath.c
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/blenlib/intern/bpath.c	2010-11-14 22:30:51 UTC (rev 33067)
+++ branches/soc-2008-mxcurioni/source/blender/blenlib/intern/bpath.c	2010-11-14 23:07:06 UTC (rev 33068)
@@ -48,6 +48,7 @@
 #include "DNA_sequence_types.h"
 #include "DNA_vfont_types.h"
 #include "DNA_windowmanager_types.h"
+#include "DNA_freestyle_types.h"
 
 #include "BLI_blenlib.h"
 #include "BLI_bpath.h"
@@ -75,6 +76,7 @@
 	BPATH_LIB,
 	BPATH_SEQ,
 	BPATH_CDATA,
+	BPATH_FRS_MODULE,
 
 	 BPATH_DONE
 };
@@ -92,6 +94,11 @@
 	bpi->seqdata.seqar = NULL;
 	bpi->seqdata.scene = NULL;
 	
+	/* Freestyle module specific */
+	bpi->frsmoduledata.scene = NULL;
+	bpi->frsmoduledata.layer = NULL;
+	bpi->frsmoduledata.module = NULL;
+
 	bpi->base_path= base_path ? base_path : G.main->name;
 
 	BLI_bpathIterator_step(bpi);
@@ -254,6 +261,32 @@
 	return NULL;
 }
 
+static struct FreestyleModuleConfig *frs_module_stepdata__internal(struct BPathIterator *bpi, int step_next)
+{
+	struct FreestyleModuleConfig *module;
+
+	/* Initializing */
+	if (bpi->frsmoduledata.scene==NULL) {
+		bpi->frsmoduledata.scene= G.main->scene.first;
+		bpi->frsmoduledata.layer= bpi->frsmoduledata.scene->r.layers.first;
+		bpi->frsmoduledata.module= bpi->frsmoduledata.layer->freestyleConfig.modules.first;
+	}
+
+	while (bpi->frsmoduledata.scene) {
+		while (bpi->frsmoduledata.layer) {
+			while (bpi->frsmoduledata.module) {
+				module= bpi->frsmoduledata.module;
+				bpi->frsmoduledata.module= module->next;
+				return module;
+			}
+			bpi->frsmoduledata.layer= bpi->frsmoduledata.layer->next;
+		}
+		bpi->frsmoduledata.scene= bpi->frsmoduledata.scene->id.next;
+	}
+
+	return NULL;
+}
+
 static void seq_getpath(struct BPathIterator *bpi, char *path) {
 	Sequence *seq = (Sequence *)bpi->data;
 
@@ -431,6 +464,20 @@
 			} else {
 				bpi_type_step__internal(bpi);
 			}
+		} else if  ((bpi->type) == BPATH_FRS_MODULE) {
+			if (bpi->data)	bpi->data = frs_module_stepdata__internal( bpi, 1 );
+			else 			bpi->data = frs_module_stepdata__internal( bpi, 0 );
+
+			if (bpi->data) {
+				FreestyleModuleConfig *module = (FreestyleModuleConfig *)bpi->data;
+				bpi->lib = NULL;
+				bpi->path = module->module_path;
+				bpi->name = NULL;
+				bpi->len = sizeof(module->module_path);
+				break;
+			} else {
+				bpi_type_step__internal(bpi);
+			}
 		}
 	}
 }
@@ -468,6 +515,9 @@
 	case BPATH_CDATA:
 		prefix= "Mesh Data";
 		break;
+	case BPATH_FRS_MODULE:
+		prefix= "Freestyle Module";
+		break;
 	default:
 		prefix= "Unknown";
 		break;





More information about the Bf-blender-cvs mailing list