[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37557] trunk/blender/source/blender/ editors: use directory selector for properties defined as PROP_DIRPATH, user preferences 'File' buttons for eg.

Campbell Barton ideasman42 at gmail.com
Thu Jun 16 17:28:39 CEST 2011


Revision: 37557
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37557
Author:   campbellbarton
Date:     2011-06-16 15:28:39 +0000 (Thu, 16 Jun 2011)
Log Message:
-----------
use directory selector for properties defined as PROP_DIRPATH, user preferences 'File' buttons for eg.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/editors/space_buttons/buttons_intern.h
    trunk/blender/source/blender/editors/space_buttons/buttons_ops.c
    trunk/blender/source/blender/editors/space_buttons/space_buttons.c

Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c	2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c	2011-06-16 15:28:39 UTC (rev 37557)
@@ -534,7 +534,10 @@
 		uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, w-UI_UNIT_X, h);
 
 		/* BUTTONS_OT_file_browse calls uiFileBrowseContextProperty */
-		but= uiDefIconButO(block, BUT, "BUTTONS_OT_file_browse", WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL);
+		but= uiDefIconButO(block, BUT, subtype==PROP_DIRPATH ?
+		                       "BUTTONS_OT_directory_browse" :
+		                       "BUTTONS_OT_file_browse",
+		                   WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL);
 	}
 	else if(flag & UI_ITEM_R_EVENT) {
 		uiDefButR(block, KEYEVT, 0, name, x, y, w, h, ptr, RNA_property_identifier(prop), index, 0, 0, -1, -1, NULL);

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_intern.h	2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_intern.h	2011-06-16 15:28:39 UTC (rev 37557)
@@ -71,6 +71,7 @@
 
 /* buttons_ops.c */
 void BUTTONS_OT_file_browse(struct wmOperatorType *ot);
+void BUTTONS_OT_directory_browse(struct wmOperatorType *ot);
 void BUTTONS_OT_toolbox(struct wmOperatorType *ot);
 
 #endif /* ED_BUTTONS_INTERN_H */

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_ops.c	2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_ops.c	2011-06-16 15:28:39 UTC (rev 37557)
@@ -191,12 +191,13 @@
 		return OPERATOR_CANCELLED;
 	}
 	else {
+		const char *path_prop= RNA_struct_find_property(op->ptr, "directory") ? "directory" : "filepath";
 		fbo= MEM_callocN(sizeof(FileBrowseOp), "FileBrowseOp");
 		fbo->ptr= ptr;
 		fbo->prop= prop;
 		op->customdata= fbo;
 
-		RNA_string_set(op->ptr, "filepath", str);
+		RNA_string_set(op->ptr, path_prop, str);
 		MEM_freeN(str);
 
 		if(RNA_struct_find_property(op->ptr, "relative_path")) {
@@ -227,3 +228,19 @@
 	WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH);
 }
 
+/* second operator, only difference from BUTTONS_OT_file_browse is WM_FILESEL_DIRECTORY */
+void BUTTONS_OT_directory_browse(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Accept";
+	ot->description="Open a directory browser, Hold Shift to open the file, Alt to browse containing directory";
+	ot->idname= "BUTTONS_OT_directory_browse";
+
+	/* api callbacks */
+	ot->invoke= file_browse_invoke;
+	ot->exec= file_browse_exec;
+	ot->cancel= file_browse_cancel;
+
+	/* properties */
+	WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH);
+}

Modified: trunk/blender/source/blender/editors/space_buttons/space_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2011-06-16 15:28:39 UTC (rev 37557)
@@ -187,6 +187,7 @@
 {
 	WM_operatortype_append(BUTTONS_OT_toolbox);
 	WM_operatortype_append(BUTTONS_OT_file_browse);
+	WM_operatortype_append(BUTTONS_OT_directory_browse);
 }
 
 static void buttons_keymap(struct wmKeyConfig *keyconf)




More information about the Bf-blender-cvs mailing list